diff --git a/server/index.go b/server/index.go index 61b17f4..b6b703f 100644 --- a/server/index.go +++ b/server/index.go @@ -7,12 +7,14 @@ import ( "git.lastassault.de/speatzle/morffix/constants" "git.lastassault.de/speatzle/morffix/types" + "github.com/jackc/pgx/v5" ) type IndexData struct { Counter []int Workers []IndexWorker + Tasks []Task } type IndexWorker struct { @@ -22,6 +24,15 @@ type IndexWorker struct { var count = 123456789 +type Task struct { + ID int `db:"id"` + Library int `db:"library"` + Worker *string `db:"worker"` + Type int `db:"type"` + Status int `db:"status"` + File string `db:"file"` +} + func handleIndex(w http.ResponseWriter, r *http.Request) { data := IndexData{ @@ -54,8 +65,23 @@ func handleIndex(w http.ResponseWriter, r *http.Request) { } } }() + + rows, err := db.Query(r.Context(), "SELECT t.id AS id, l.id AS library, t.worker_id AS worker, t.type AS type, t.status AS status, f.path AS file FROM tasks t INNER JOIN files f ON f.id = t.file_id INNER JOIN libraries l ON l.id = f.library_id") + if err != nil { + slog.ErrorContext(r.Context(), "Query Tasks", "err", err) + http.Error(w, "Error Query Tasks: "+err.Error(), http.StatusInternalServerError) + return + } + tasks, err := pgx.CollectRows[Task](rows, pgx.RowToStructByName[Task]) + if err != nil { + slog.ErrorContext(r.Context(), "Executing index Template", "err", err) + http.Error(w, "Error Query Tasks: "+err.Error(), http.StatusInternalServerError) + return + } + data.Tasks = tasks + buf := bytes.Buffer{} - err := templates.ExecuteTemplate(&buf, constants.INDEX_TEMPLATE_NAME, data) + err = templates.ExecuteTemplate(&buf, constants.INDEX_TEMPLATE_NAME, data) if err != nil { slog.ErrorContext(r.Context(), "Executing index Template", "err", err) http.Error(w, "Error Executing Template: "+err.Error(), http.StatusInternalServerError)