MCPcopy Index your code
hub / github.com/apache/devlake / GetTasks

Function GetTasks

backend/server/services/task.go:67–110  ·  view source on GitHub ↗

GetTasks returns paginated tasks that match the given query

(query *TaskQuery)

Source from the content-addressed store, hash-verified

65
66// GetTasks returns paginated tasks that match the given query
67func GetTasks(query *TaskQuery) ([]*models.Task, int64, errors.Error) {
68 // verify query
69 if err := VerifyStruct(query); err != nil {
70 return nil, 0, err
71 }
72
73 // construct common query clauses
74 clauses := []dal.Clause{dal.From(&models.Task{})}
75 if query.Status != "" {
76 clauses = append(clauses, dal.Where("status = ?", query.Status))
77 }
78 if query.Plugin != "" {
79 clauses = append(clauses, dal.Where("plugin = ?", query.Plugin))
80 }
81 if query.PipelineId > 0 {
82 clauses = append(clauses, dal.Where("pipeline_id = ?", query.PipelineId))
83 }
84 if query.Pending > 0 {
85 clauses = append(clauses, dal.Where("finished_at is null"))
86 }
87
88 // count total records
89 count, err := db.Count(clauses...)
90 if err != nil {
91 return nil, 0, err
92 }
93
94 // load paginated records from db
95 clauses = append(clauses,
96 dal.Orderby("id DESC"),
97 dal.Offset(query.GetSkip()),
98 dal.Limit(query.GetPageSizeOr(10000)),
99 )
100 tasks := make([]*models.Task, 0)
101 err = db.All(&tasks, clauses...)
102 if err != nil {
103 return nil, count, err
104 }
105
106 // fill running information
107 runningTasks.FillProgressDetailToTasks(tasks)
108
109 return tasks, count, nil
110}
111
112// GetTasksWithLastStatus returns task list of the pipeline, only the most recently tasks would be returned
113// TODO: adopts GetLatestTasksOfPipeline

Callers 1

CancelPipelineFunction · 0.85

Calls 7

VerifyStructFunction · 0.85
GetSkipMethod · 0.80
GetPageSizeOrMethod · 0.80
FromMethod · 0.65
CountMethod · 0.65
AllMethod · 0.65

Tested by

no test coverage detected