diff --git a/server/task.go b/server/task.go index d1b6ff3..edb2fcc 100644 --- a/server/task.go +++ b/server/task.go @@ -16,6 +16,19 @@ import ( type TasksData struct { Libraries []Library Tasks []TaskDisplay + Stats TaskStats +} + +type TaskStats struct { + RunningCount int + QueuedCount int + FailedCount int + SuccessCount int + UnknownCount int + AssignedCount int + PausedCount int + WaitingCount int + TotalCount int } type TaskDisplay struct { @@ -48,6 +61,24 @@ func handleTasks(w http.ResponseWriter, r *http.Request) { data := TasksData{} + err := db.QueryRow(r.Context(), ` + SELECT count(*), + sum(case when status = 0 then 1 else 0 end), + sum(case when status = 1 then 1 else 0 end), + sum(case when status = 2 then 1 else 0 end), + sum(case when status = 3 then 1 else 0 end), + sum(case when status = 4 then 1 else 0 end), + sum(case when status = 5 then 1 else 0 end), + sum(case when status = 6 then 1 else 0 end), + sum(case when status = 7 then 1 else 0 end) + FROM tasks + `).Scan(&data.Stats.TotalCount, &data.Stats.UnknownCount, &data.Stats.FailedCount, &data.Stats.SuccessCount, &data.Stats.RunningCount, &data.Stats.QueuedCount, &data.Stats.AssignedCount, &data.Stats.PausedCount, &data.Stats.WaitingCount) + if err != nil { + slog.ErrorContext(r.Context(), "Query Task Counts", "err", err) + http.Error(w, "Error Query Task Counts: "+err.Error(), http.StatusInternalServerError) + return + } + rows, err := db.Query(r.Context(), "SELECT id, name, path, enable FROM libraries WHERE enable = $1", true) if err != nil { slog.ErrorContext(r.Context(), "Query Libraries", "err", err) diff --git a/tmpl/tasks.tmpl b/tmpl/tasks.tmpl index 6baee53..bced8e4 100644 --- a/tmpl/tasks.tmpl +++ b/tmpl/tasks.tmpl @@ -4,16 +4,29 @@



+

Task Stats

+Running: {{.Stats.RunningCount}} +Queued: {{.Stats.QueuedCount}} +Failed: {{.Stats.FailedCount}} +Success: {{.Stats.SuccessCount}} +Unknown: {{.Stats.UnknownCount}} +Assigned: {{.Stats.AssignedCount}} +Paused: {{.Stats.PausedCount}} +Waiting: {{.Stats.WaitingCount}} +Total: {{.Stats.TotalCount}} + + +

Tasks