diff --git a/server/stats.go b/server/stats.go index d55f3af..933ae77 100644 --- a/server/stats.go +++ b/server/stats.go @@ -8,7 +8,6 @@ import ( "log/slog" "net/http" "strings" - "time" "git.lastassault.de/speatzle/morffix/constants" "github.com/go-echarts/go-echarts/v2/charts" @@ -70,7 +69,7 @@ func generateStats(ctx context.Context) ([]ChartData, error) { `SELECT COALESCE(jsonb_path_query_first(ffprobe_data, '$.streams[*] ? (@.codec_type == "video") ? (@.disposition.attached_pic == 0).codec_name')::text, 'Unknown') AS name, COUNT(*) AS value FROM files WHERE ffprobe_data IS NOT NULL - GROUP BY 1;`) + GROUP BY jsonb_path_query_first(ffprobe_data, '$.streams[*] ? (@.codec_type == "video") ? (@.disposition.attached_pic == 0).codec_name');`) if err != nil { return nil, fmt.Errorf("Query Codecs: %w", err) } @@ -92,7 +91,7 @@ func generateStats(ctx context.Context) ([]ChartData, error) { `SELECT COALESCE(jsonb_path_query_first(ffprobe_data, '$.streams[*] ? (@.codec_type == "video") ? (@.disposition.attached_pic == 0).width')::text, 'Unknown') AS name, COUNT(*) AS value FROM files WHERE ffprobe_data IS NOT NULL - GROUP BY 1;`) + GROUP BY jsonb_path_query_first(ffprobe_data, '$.streams[*] ? (@.codec_type == "video") ? (@.disposition.attached_pic == 0).width');`) if err != nil { return nil, fmt.Errorf("Query Resolution: %w", err) } @@ -114,7 +113,7 @@ func generateStats(ctx context.Context) ([]ChartData, error) { `SELECT COALESCE(jsonb_path_query_first(ffprobe_data, '$.format.format_name')::text, 'Unknown') AS name, COUNT(*) AS value FROM files WHERE ffprobe_data IS NOT NULL - GROUP BY 1;`) + GROUP BY jsonb_path_query_first(ffprobe_data, '$.format.format_name');`) if err != nil { return nil, fmt.Errorf("Query Container: %w", err) } @@ -135,7 +134,7 @@ func generateStats(ctx context.Context) ([]ChartData, error) { rows, err = db.Query(ctx, `SELECT health AS id, COUNT(*) AS value FROM files - GROUP BY 1;`) + GROUP BY health;`) if err != nil { return nil, fmt.Errorf("Query Health: %w", err) } @@ -156,7 +155,7 @@ func generateStats(ctx context.Context) ([]ChartData, error) { rows, err = db.Query(ctx, `SELECT transcode AS id, COUNT(*) AS value FROM files - GROUP BY 1;`) + GROUP BY transcode;`) if err != nil { return nil, fmt.Errorf("Query Transcode: %w", err) } @@ -177,7 +176,7 @@ func generateStats(ctx context.Context) ([]ChartData, error) { rows, err = db.Query(ctx, `SELECT status AS id, COUNT(*) AS value FROM tasks - GROUP BY 1;`) + GROUP BY status;`) if err != nil { return nil, fmt.Errorf("Query Task Status: %w", err) } @@ -195,66 +194,6 @@ func generateStats(ctx context.Context) ([]ChartData, error) { } data = append(data, generatePie("Task Status", res)) - type BarTaskRowValue struct { - Date time.Time - Status constants.TaskStatus - Count int - } - - rows, err = db.Query(ctx, - `SELECT date_trunc('day', updated_at) date, status, COUNT(*) AS count - FROM tasks - WHERE status = $1 OR status = $2 - GROUP BY 1,2;`, constants.TASK_STATUS_SUCCESS, constants.TASK_STATUS_FAILED) - if err != nil { - return nil, fmt.Errorf("Query Task Status Day: %w", err) - } - - taskStatusDayCounts, err := pgx.CollectRows(rows, pgx.RowToStructByName[BarTaskRowValue]) - if err != nil { - return nil, fmt.Errorf("Collect Task Status Day Data: %w", err) - } - - days := []string{} - successBarData := []opts.BarData{} - failedBarData := []opts.BarData{} - for _, v := range taskStatusDayCounts { - days = append(days, v.Date.Format(time.DateOnly)) - if v.Status == constants.TASK_STATUS_SUCCESS { - successBarData = append(successBarData, opts.BarData{ - Value: v.Count, - }) - } else if v.Status == constants.TASK_STATUS_FAILED { - failedBarData = append(failedBarData, opts.BarData{ - Value: v.Count, - }) - } - - } - bar := charts.NewBar() - bar.SetGlobalOptions( - charts.WithInitializationOpts(opts.Initialization{ - Theme: "dark", - BackgroundColor: "#111", - }), - charts.WithTitleOpts(opts.Title{ - Title: "Task Success/Failed Per Day", - }), - ) - bar.SetXAxis(days). - AddSeries("Success", successBarData). - AddSeries("Failed", failedBarData). - SetSeriesOptions(charts.WithBarChartOpts(opts.BarChart{ - Stack: "stackA", - })) - - snippet := bar.RenderSnippet() - - data = append(data, ChartData{ - Element: template.HTML(snippet.Element), - Script: template.HTML(snippet.Script), - }) - return data, nil }