MCPcopy Create free account
hub / github.com/bytebase/bytebase / listTasksImpl

Method listTasksImpl

backend/store/task.go:270–388  ·  view source on GitHub ↗
(ctx context.Context, txn *sql.Tx, find *TaskFind)

Source from the content-addressed store, hash-verified

268}
269
270func (*Store) listTasksImpl(ctx context.Context, txn *sql.Tx, find *TaskFind) ([]*TaskMessage, error) {
271 q := qb.Q().Space(`
272 SELECT
273 task.id,
274 task.project,
275 task.plan_id,
276 task.instance,
277 task.db_name,
278 task.environment,
279 COALESCE(latest_task_run.status, ?) AS latest_task_run_status,
280 task.type,
281 task.payload,
282 latest_task_run.updated_at,
283 latest_task_run.run_at
284 FROM task
285 LEFT JOIN LATERAL (
286 SELECT
287 task_run.status,
288 task_run.updated_at,
289 task_run.run_at
290 FROM task_run
291 WHERE task_run.project = task.project AND task_run.task_id = task.id
292 ORDER BY task_run.id DESC
293 LIMIT 1
294 ) AS latest_task_run ON TRUE
295 WHERE task.project = ?`, storepb.TaskRun_NOT_STARTED.String(), find.ProjectID)
296 if find.Workspace != "" {
297 q.Space("AND task.project IN (SELECT resource_id FROM project WHERE workspace = ?)", find.Workspace)
298 }
299 if v := find.ID; v != nil {
300 q.Space("AND task.id = ?", *v)
301 }
302 if v := find.IDs; v != nil {
303 q.Space("AND task.id = ANY(?)", *v)
304 }
305 if v := find.PlanID; v != nil {
306 q.Space("AND task.plan_id = ?", *v)
307 }
308 if v := find.PlanIDs; v != nil {
309 q.Space("AND task.plan_id = ANY(?)", *v)
310 }
311 if v := find.Environment; v != nil {
312 q.Space("AND task.environment = ?", *v)
313 }
314 if v := find.InstanceID; v != nil {
315 q.Space("AND task.instance = ?", *v)
316 }
317 if v := find.DatabaseName; v != nil {
318 q.Space("AND task.db_name = ?", *v)
319 }
320 if v := find.LatestTaskRunStatusList; v != nil {
321 var statusStrings []string
322 for _, status := range *v {
323 statusStrings = append(statusStrings, status.String())
324 }
325 q.Space("AND latest_task_run.status = ANY(?)", statusStrings)
326 }
327 if v := find.TypeList; v != nil {

Callers 2

ListTasksMethod · 0.95
CreateTasksMethod · 0.95

Calls 10

QFunction · 0.92
SpaceMethod · 0.80
ToSQLMethod · 0.80
QueryContextMethod · 0.80
ScanMethod · 0.80
ErrorfMethod · 0.80
UnmarshalMethod · 0.80
StringMethod · 0.65
CloseMethod · 0.65
NextMethod · 0.45

Tested by

no test coverage detected