From 4fe78dee51879c220d32325013ddf10d4647fc2c Mon Sep 17 00:00:00 2001 From: jagger Date: Fri, 19 Apr 2024 17:09:54 +0800 Subject: [PATCH] feat: Task status statistics Signed-off-by: jagger Former-commit-id: 2c01ea8c254c0a4a2bb1f80ed77f5bfcfe5726d4 --- api/internal/logic/core/counttaskstatuslogic.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/api/internal/logic/core/counttaskstatuslogic.go b/api/internal/logic/core/counttaskstatuslogic.go index 7f8cc190..d3174b31 100644 --- a/api/internal/logic/core/counttaskstatuslogic.go +++ b/api/internal/logic/core/counttaskstatuslogic.go @@ -24,14 +24,22 @@ func NewCountTaskStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *C } type taskStatus struct { - Quantity string `json:"quantity"` - Status string `json:"status"` + Succeeded int `json:"Succeeded"` + Failed int `json:"Failed"` + Running int `json:"Running"` + Pause int `json:"Pause"` } func (l *CountTaskStatusLogic) CountTaskStatus() (resp *types.ListResult, err error) { resp = &types.ListResult{} var taskStatusList []*taskStatus - err = l.svcCtx.DbEngin.Raw("select count(*) quantity, status from task group by status").Scan(&taskStatusList).Error + sqlStr := `SELECT + COUNT(CASE WHEN status = 'Succeeded' THEN 1 END) AS Succeeded, + COUNT(CASE WHEN status = 'Failed' THEN 1 END) AS Failed, + COUNT(CASE WHEN status = 'Running' THEN 1 END) AS Running, + COUNT(CASE WHEN status = 'Pause' THEN 1 END) AS Pause + FROM task;` + err = l.svcCtx.DbEngin.Raw(sqlStr).Scan(&taskStatusList).Error if err != nil { logx.Errorf("CountTaskStatus() => sql execution error: %v", err) return nil, errors.Errorf("Description Failed to collect statistics on the status of a task. Please try again later")