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 @@
+