GetTasks returns paginated tasks that match the given query
(query *TaskQuery)
| 65 | |
| 66 | // GetTasks returns paginated tasks that match the given query |
| 67 | func 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 |
no test coverage detected