初始化待执行队列
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user