From b6d92367c2c0e21f7eacae70772b44fd327b4ce6 Mon Sep 17 00:00:00 2001 From: Youkies Date: Thu, 23 Apr 2026 23:09:59 +0800 Subject: [PATCH] fix model status mysql query --- backend/internal/service/model_status.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/backend/internal/service/model_status.go b/backend/internal/service/model_status.go index 6a60c8ad..27d1fa70 100644 --- a/backend/internal/service/model_status.go +++ b/backend/internal/service/model_status.go @@ -3,6 +3,7 @@ package service import ( "fmt" "math" + "strings" "time" "github.com/new-api-tools/backend/internal/cache" @@ -134,7 +135,7 @@ func (s *ModelStatusService) GetModelStatus(modelName, window string) (map[strin COUNT(*) as total, SUM(CASE WHEN type = 2 AND completion_tokens > 0 THEN 1 ELSE 0 END) as success, SUM(CASE WHEN type = 5 THEN 1 ELSE 0 END) as failure, - SUM(CASE WHEN type = 2 AND completion_tokens = 0 THEN 1 ELSE 0 END) as empty + SUM(CASE WHEN type = 2 AND completion_tokens = 0 THEN 1 ELSE 0 END) as empty_count FROM logs WHERE model_name = ? AND created_at >= ? AND created_at < ? @@ -143,7 +144,10 @@ func (s *ModelStatusService) GetModelStatus(modelName, window string) (map[strin startTime, slotSeconds, startTime, slotSeconds)) - rows, _ := s.db.Query(slotQuery, modelName, startTime, now) + rows, err := s.db.Query(slotQuery, modelName, startTime, now) + if err != nil { + return nil, err + } // Initialize all slots with zeros type slotInfo struct { @@ -163,7 +167,7 @@ func (s *ModelStatusService) GetModelStatus(modelName, window string) (map[strin total: toInt64(row["total"]), success: toInt64(row["success"]), failure: toInt64(row["failure"]), - empty: toInt64(row["empty"]), + empty: toInt64(row["empty_count"]), } } } @@ -240,13 +244,18 @@ func (s *ModelStatusService) GetModelStatus(modelName, window string) (map[strin // GetMultipleModelsStatus returns status for multiple models func (s *ModelStatusService) GetMultipleModelsStatus(modelNames []string, window string) ([]map[string]interface{}, error) { results := make([]map[string]interface{}, 0, len(modelNames)) + failedModels := make([]string, 0) for _, name := range modelNames { status, err := s.GetModelStatus(name, window) if err != nil { + failedModels = append(failedModels, fmt.Sprintf("%s: %v", name, err)) continue } results = append(results, status) } + if len(modelNames) > 0 && len(results) == 0 && len(failedModels) > 0 { + return nil, fmt.Errorf("all model status queries failed: %s", strings.Join(failedModels, "; ")) + } return results, nil }