fix: jobs api

This commit is contained in:
allanice001
2025-09-23 13:40:20 +01:00
parent a59550bd96
commit 4d4fda17ca
3 changed files with 65 additions and 23 deletions

View File

@@ -21,12 +21,14 @@ func LoadKPI(db *gorm.DB) (KPI, error) {
now := time.Now()
dayAgo := now.Add(-24 * time.Hour)
// Running now
if err := db.Model(&models.Job{}).
Where("status = ?", "running").
Count(&k.RunningNow).Error; err != nil {
return k, err
}
// Scheduled in the future
if err := db.Model(&models.Job{}).
Where("status IN ?", []string{"queued", "scheduled", "pending"}).
Where("scheduled_at > ?", now).
@@ -34,6 +36,7 @@ func LoadKPI(db *gorm.DB) (KPI, error) {
return k, err
}
// Due now (queued/scheduled/pending with scheduled_at <= now)
if err := db.Model(&models.Job{}).
Where("status IN ?", []string{"queued", "scheduled", "pending"}).
Where("scheduled_at <= ?", now).
@@ -41,22 +44,25 @@ func LoadKPI(db *gorm.DB) (KPI, error) {
return k, err
}
// Sum of 'ready' over successful jobs in last 24h
if err := db.Model(&models.Job{}).
Where("status = ?", "success").
Where("updated_at >= ?", dayAgo).
Count(&k.Succeeded24h).Error; err != nil {
Select("COALESCE(SUM((result->>'ready')::int), 0)").
Where("status = 'success' AND updated_at >= ?", dayAgo).
Scan(&k.Succeeded24h).Error; err != nil {
return k, err
}
// Sum of 'failed' over successful jobs in last 24h (failures within a “success” run)
if err := db.Model(&models.Job{}).
Where("status = ?", "failed").
Where("updated_at >= ?", dayAgo).
Count(&k.Failed24h).Error; err != nil {
Select("COALESCE(SUM((result->>'failed')::int), 0)").
Where("status = 'success' AND updated_at >= ?", dayAgo).
Scan(&k.Failed24h).Error; err != nil {
return k, err
}
// Retryable failed job rows (same as before)
if err := db.Model(&models.Job{}).
Where("status = ?", "failed").
Where("status = 'failed'").
Where("retry_count < max_retry").
Count(&k.Retryable).Error; err != nil {
return k, err