Add Task Stats

This commit is contained in:
speatzle 2024-05-28 20:49:29 +02:00
parent 3c174540df
commit 81ae32c0f5
2 changed files with 47 additions and 3 deletions

View file

@ -16,6 +16,19 @@ import (
type TasksData struct { type TasksData struct {
Libraries []Library Libraries []Library
Tasks []TaskDisplay 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 { type TaskDisplay struct {
@ -48,6 +61,24 @@ func handleTasks(w http.ResponseWriter, r *http.Request) {
data := TasksData{} 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) rows, err := db.Query(r.Context(), "SELECT id, name, path, enable FROM libraries WHERE enable = $1", true)
if err != nil { if err != nil {
slog.ErrorContext(r.Context(), "Query Libraries", "err", err) slog.ErrorContext(r.Context(), "Query Libraries", "err", err)

View file

@ -14,6 +14,19 @@
<input type="submit"> <input type="submit">
</form> </form>
<h2>Task Stats</h2>
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}}
<h2>Tasks</h2> <h2>Tasks</h2>
<div class="task-list"> <div class="task-list">
<table> <table>