初始化待执行队列

This commit is contained in:
2025-09-20 23:50:27 +08:00
parent 74e42de7aa
commit 769a0432c8
4 changed files with 169 additions and 1 deletions

View File

@@ -51,6 +51,9 @@ type PlanRepository interface {
// CreatePlanAnalysisTask 创建一个 plan_analysis 类型的任务并返回它
CreatePlanAnalysisTask(plan *models.Plan) (*models.Task, error)
// FindPlansWithPendingTasks 查找所有正在执行的计划
FindPlansWithPendingTasks() ([]*models.Plan, error)
}
// gormPlanRepository 是 PlanRepository 的 GORM 实现
@@ -625,3 +628,18 @@ func (r *gormPlanRepository) CreatePlanAnalysisTask(plan *models.Plan) (*models.
})
return createdTask, err
}
// FindPlansWithPendingTasks 查找所有正在执行的计划
func (r *gormPlanRepository) FindPlansWithPendingTasks() ([]*models.Plan, error) {
var plans []*models.Plan
// 关联 pending_tasks, task_execution_logs, tasks 表来查找符合条件的计划
err := r.db.Table("plans").
Joins("JOIN tasks ON plans.id = tasks.plan_id").
Joins("JOIN task_execution_logs ON tasks.id = task_execution_logs.task_id").
Joins("JOIN pending_tasks ON task_execution_logs.id = pending_tasks.task_execution_log_id").
Group("plans.id"). // 避免重复,因为一个计划可能有多个待执行任务
Find(&plans).Error
return plans, err
}