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

@ -4,16 +4,29 @@
<label for="library">Library:</label><br /> <label for="library">Library:</label><br />
<select id="library" name="library"> <select id="library" name="library">
{{range $l := .Libraries}} {{range $l := .Libraries}}
<option value="{{$l.ID}}">{{$l.Name}}</option> <option value="{{$l.ID}}">{{$l.Name}}</option>
{{end}} {{end}}
</select><br /> </select><br />
<label for="type">Type</label><br /> <label for="type">Type</label><br />
<select id="type" name="type"> <select id="type" name="type">
<option value="0">Health Check</option> <option value="0">Health Check</option>
</select> <br /> </select> <br />
<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>