42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package copy_mission
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
app "haixun-backend/internal/library/errors"
|
|
"haixun-backend/internal/library/errors/code"
|
|
"haixun-backend/internal/model/job/domain/enum"
|
|
domrepo "haixun-backend/internal/model/job/domain/repository"
|
|
"haixun-backend/internal/svc"
|
|
)
|
|
|
|
func ensureNoActiveMatrixJob(ctx context.Context, svcCtx *svc.ServiceContext, missionID string) error {
|
|
if svcCtx == nil || svcCtx.Job == nil {
|
|
return nil
|
|
}
|
|
missionID = strings.TrimSpace(missionID)
|
|
if missionID == "" {
|
|
return nil
|
|
}
|
|
runs, _, _, _, _, err := svcCtx.Job.ListRuns(ctx, domrepo.RunListFilter{
|
|
Scope: "copy_mission",
|
|
ScopeID: missionID,
|
|
Statuses: []enum.RunStatus{
|
|
enum.RunStatusPending,
|
|
enum.RunStatusQueued,
|
|
enum.RunStatusRunning,
|
|
enum.RunStatusWaitingWorker,
|
|
enum.RunStatusCancelRequested,
|
|
},
|
|
}, 1, 20)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for _, run := range runs {
|
|
if run != nil && run.TemplateType == "generate-copy-matrix" {
|
|
return app.For(code.Job).ResInvalidState("內容矩陣背景任務進行中,請稍後再試")
|
|
}
|
|
}
|
|
return nil
|
|
} |