
Convert most of the job blocklist queries from GORM to sqlc. The management functions (add worker, remove worker, clear list, fetch list) have been converted.
1181 lines
30 KiB
Go
1181 lines
30 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.26.0
|
|
// source: query_jobs.sql
|
|
|
|
package sqlc
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"encoding/json"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
const addWorkerToJobBlocklist = `-- name: AddWorkerToJobBlocklist :exec
|
|
INSERT INTO job_blocks (created_at, job_id, worker_id, task_type)
|
|
VALUES (?1, ?2, ?3, ?4)
|
|
ON CONFLICT DO NOTHING
|
|
`
|
|
|
|
type AddWorkerToJobBlocklistParams struct {
|
|
CreatedAt time.Time
|
|
JobID int64
|
|
WorkerID int64
|
|
TaskType string
|
|
}
|
|
|
|
// Add a worker to a job's blocklist.
|
|
func (q *Queries) AddWorkerToJobBlocklist(ctx context.Context, arg AddWorkerToJobBlocklistParams) error {
|
|
_, err := q.db.ExecContext(ctx, addWorkerToJobBlocklist,
|
|
arg.CreatedAt,
|
|
arg.JobID,
|
|
arg.WorkerID,
|
|
arg.TaskType,
|
|
)
|
|
return err
|
|
}
|
|
|
|
const addWorkerToTaskFailedList = `-- name: AddWorkerToTaskFailedList :exec
|
|
INSERT INTO task_failures (created_at, task_id, worker_id)
|
|
VALUES (?1, ?2, ?3)
|
|
ON CONFLICT DO NOTHING
|
|
`
|
|
|
|
type AddWorkerToTaskFailedListParams struct {
|
|
CreatedAt time.Time
|
|
TaskID int64
|
|
WorkerID int64
|
|
}
|
|
|
|
func (q *Queries) AddWorkerToTaskFailedList(ctx context.Context, arg AddWorkerToTaskFailedListParams) error {
|
|
_, err := q.db.ExecContext(ctx, addWorkerToTaskFailedList, arg.CreatedAt, arg.TaskID, arg.WorkerID)
|
|
return err
|
|
}
|
|
|
|
const clearFailureListOfJob = `-- name: ClearFailureListOfJob :exec
|
|
DELETE FROM task_failures
|
|
WHERE task_id in (SELECT id FROM tasks WHERE job_id=?1)
|
|
`
|
|
|
|
// SQLite doesn't support JOIN in DELETE queries, so use a sub-query instead.
|
|
func (q *Queries) ClearFailureListOfJob(ctx context.Context, jobID int64) error {
|
|
_, err := q.db.ExecContext(ctx, clearFailureListOfJob, jobID)
|
|
return err
|
|
}
|
|
|
|
const clearFailureListOfTask = `-- name: ClearFailureListOfTask :exec
|
|
DELETE FROM task_failures WHERE task_id=?1
|
|
`
|
|
|
|
func (q *Queries) ClearFailureListOfTask(ctx context.Context, taskID int64) error {
|
|
_, err := q.db.ExecContext(ctx, clearFailureListOfTask, taskID)
|
|
return err
|
|
}
|
|
|
|
const clearJobBlocklist = `-- name: ClearJobBlocklist :exec
|
|
DELETE FROM job_blocks
|
|
WHERE job_id in (SELECT jobs.id FROM jobs WHERE jobs.uuid=?1)
|
|
`
|
|
|
|
func (q *Queries) ClearJobBlocklist(ctx context.Context, jobuuid string) error {
|
|
_, err := q.db.ExecContext(ctx, clearJobBlocklist, jobuuid)
|
|
return err
|
|
}
|
|
|
|
const countWorkersFailingTask = `-- name: CountWorkersFailingTask :one
|
|
SELECT count(*) as num_failed FROM task_failures
|
|
WHERE task_id=?1
|
|
`
|
|
|
|
// Count how many workers have failed a given task.
|
|
func (q *Queries) CountWorkersFailingTask(ctx context.Context, taskID int64) (int64, error) {
|
|
row := q.db.QueryRowContext(ctx, countWorkersFailingTask, taskID)
|
|
var num_failed int64
|
|
err := row.Scan(&num_failed)
|
|
return num_failed, err
|
|
}
|
|
|
|
const createJob = `-- name: CreateJob :execlastid
|
|
INSERT INTO jobs (
|
|
created_at,
|
|
updated_at,
|
|
uuid,
|
|
name,
|
|
job_type,
|
|
priority,
|
|
status,
|
|
activity,
|
|
settings,
|
|
metadata,
|
|
storage_shaman_checkout_id,
|
|
worker_tag_id
|
|
)
|
|
VALUES (
|
|
?1,
|
|
?1,
|
|
?2,
|
|
?3,
|
|
?4,
|
|
?5,
|
|
?6,
|
|
?7,
|
|
?8,
|
|
?9,
|
|
?10,
|
|
?11
|
|
)
|
|
`
|
|
|
|
type CreateJobParams struct {
|
|
CreatedAt time.Time
|
|
UUID string
|
|
Name string
|
|
JobType string
|
|
Priority int64
|
|
Status string
|
|
Activity string
|
|
Settings json.RawMessage
|
|
Metadata json.RawMessage
|
|
StorageShamanCheckoutID string
|
|
WorkerTagID sql.NullInt64
|
|
}
|
|
|
|
func (q *Queries) CreateJob(ctx context.Context, arg CreateJobParams) (int64, error) {
|
|
result, err := q.db.ExecContext(ctx, createJob,
|
|
arg.CreatedAt,
|
|
arg.UUID,
|
|
arg.Name,
|
|
arg.JobType,
|
|
arg.Priority,
|
|
arg.Status,
|
|
arg.Activity,
|
|
arg.Settings,
|
|
arg.Metadata,
|
|
arg.StorageShamanCheckoutID,
|
|
arg.WorkerTagID,
|
|
)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return result.LastInsertId()
|
|
}
|
|
|
|
const createTask = `-- name: CreateTask :execlastid
|
|
INSERT INTO tasks (
|
|
created_at,
|
|
updated_at,
|
|
uuid,
|
|
name,
|
|
type,
|
|
job_id,
|
|
priority,
|
|
status,
|
|
commands
|
|
) VALUES (
|
|
?1,
|
|
?1,
|
|
?2,
|
|
?3,
|
|
?4,
|
|
?5,
|
|
?6,
|
|
?7,
|
|
?8
|
|
)
|
|
`
|
|
|
|
type CreateTaskParams struct {
|
|
CreatedAt time.Time
|
|
UUID string
|
|
Name string
|
|
Type string
|
|
JobID int64
|
|
Priority int64
|
|
Status string
|
|
Commands json.RawMessage
|
|
}
|
|
|
|
func (q *Queries) CreateTask(ctx context.Context, arg CreateTaskParams) (int64, error) {
|
|
result, err := q.db.ExecContext(ctx, createTask,
|
|
arg.CreatedAt,
|
|
arg.UUID,
|
|
arg.Name,
|
|
arg.Type,
|
|
arg.JobID,
|
|
arg.Priority,
|
|
arg.Status,
|
|
arg.Commands,
|
|
)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return result.LastInsertId()
|
|
}
|
|
|
|
const deleteJob = `-- name: DeleteJob :exec
|
|
DELETE FROM jobs WHERE uuid = ?
|
|
`
|
|
|
|
func (q *Queries) DeleteJob(ctx context.Context, uuid string) error {
|
|
_, err := q.db.ExecContext(ctx, deleteJob, uuid)
|
|
return err
|
|
}
|
|
|
|
const fetchJob = `-- name: FetchJob :one
|
|
SELECT id, created_at, updated_at, uuid, name, job_type, priority, status, activity, settings, metadata, delete_requested_at, storage_shaman_checkout_id, worker_tag_id FROM jobs
|
|
WHERE uuid = ? LIMIT 1
|
|
`
|
|
|
|
// Fetch a job by its UUID.
|
|
func (q *Queries) FetchJob(ctx context.Context, uuid string) (Job, error) {
|
|
row := q.db.QueryRowContext(ctx, fetchJob, uuid)
|
|
var i Job
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.UUID,
|
|
&i.Name,
|
|
&i.JobType,
|
|
&i.Priority,
|
|
&i.Status,
|
|
&i.Activity,
|
|
&i.Settings,
|
|
&i.Metadata,
|
|
&i.DeleteRequestedAt,
|
|
&i.StorageShamanCheckoutID,
|
|
&i.WorkerTagID,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const fetchJobBlocklist = `-- name: FetchJobBlocklist :many
|
|
SELECT job_blocks.id, job_blocks.created_at, job_blocks.job_id, job_blocks.worker_id, job_blocks.task_type, workers.id, workers.created_at, workers.updated_at, workers.uuid, workers.secret, workers.name, workers.address, workers.platform, workers.software, workers.status, workers.last_seen_at, workers.status_requested, workers.lazy_status_request, workers.supported_task_types, workers.deleted_at, workers.can_restart
|
|
FROM job_blocks
|
|
INNER JOIN jobs ON jobs.id = job_blocks.job_id
|
|
INNER JOIN workers on workers.id = job_blocks.worker_id
|
|
WHERE jobs.uuid = ?1
|
|
ORDER BY workers.name
|
|
`
|
|
|
|
type FetchJobBlocklistRow struct {
|
|
JobBlock JobBlock
|
|
Worker Worker
|
|
}
|
|
|
|
func (q *Queries) FetchJobBlocklist(ctx context.Context, jobuuid string) ([]FetchJobBlocklistRow, error) {
|
|
rows, err := q.db.QueryContext(ctx, fetchJobBlocklist, jobuuid)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []FetchJobBlocklistRow
|
|
for rows.Next() {
|
|
var i FetchJobBlocklistRow
|
|
if err := rows.Scan(
|
|
&i.JobBlock.ID,
|
|
&i.JobBlock.CreatedAt,
|
|
&i.JobBlock.JobID,
|
|
&i.JobBlock.WorkerID,
|
|
&i.JobBlock.TaskType,
|
|
&i.Worker.ID,
|
|
&i.Worker.CreatedAt,
|
|
&i.Worker.UpdatedAt,
|
|
&i.Worker.UUID,
|
|
&i.Worker.Secret,
|
|
&i.Worker.Name,
|
|
&i.Worker.Address,
|
|
&i.Worker.Platform,
|
|
&i.Worker.Software,
|
|
&i.Worker.Status,
|
|
&i.Worker.LastSeenAt,
|
|
&i.Worker.StatusRequested,
|
|
&i.Worker.LazyStatusRequest,
|
|
&i.Worker.SupportedTaskTypes,
|
|
&i.Worker.DeletedAt,
|
|
&i.Worker.CanRestart,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const fetchJobByID = `-- name: FetchJobByID :one
|
|
SELECT id, created_at, updated_at, uuid, name, job_type, priority, status, activity, settings, metadata, delete_requested_at, storage_shaman_checkout_id, worker_tag_id FROM jobs
|
|
WHERE id = ? LIMIT 1
|
|
`
|
|
|
|
// Fetch a job by its numerical ID.
|
|
func (q *Queries) FetchJobByID(ctx context.Context, id int64) (Job, error) {
|
|
row := q.db.QueryRowContext(ctx, fetchJobByID, id)
|
|
var i Job
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.UUID,
|
|
&i.Name,
|
|
&i.JobType,
|
|
&i.Priority,
|
|
&i.Status,
|
|
&i.Activity,
|
|
&i.Settings,
|
|
&i.Metadata,
|
|
&i.DeleteRequestedAt,
|
|
&i.StorageShamanCheckoutID,
|
|
&i.WorkerTagID,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const fetchJobShamanCheckoutID = `-- name: FetchJobShamanCheckoutID :one
|
|
SELECT storage_shaman_checkout_id FROM jobs WHERE uuid=?1
|
|
`
|
|
|
|
func (q *Queries) FetchJobShamanCheckoutID(ctx context.Context, uuid string) (string, error) {
|
|
row := q.db.QueryRowContext(ctx, fetchJobShamanCheckoutID, uuid)
|
|
var storage_shaman_checkout_id string
|
|
err := row.Scan(&storage_shaman_checkout_id)
|
|
return storage_shaman_checkout_id, err
|
|
}
|
|
|
|
const fetchJobUUIDsUpdatedBefore = `-- name: FetchJobUUIDsUpdatedBefore :many
|
|
SELECT uuid FROM jobs WHERE updated_at <= ?1
|
|
`
|
|
|
|
func (q *Queries) FetchJobUUIDsUpdatedBefore(ctx context.Context, updatedAtMax sql.NullTime) ([]string, error) {
|
|
rows, err := q.db.QueryContext(ctx, fetchJobUUIDsUpdatedBefore, updatedAtMax)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []string
|
|
for rows.Next() {
|
|
var uuid string
|
|
if err := rows.Scan(&uuid); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, uuid)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const fetchJobsDeletionRequested = `-- name: FetchJobsDeletionRequested :many
|
|
SELECT uuid FROM jobs
|
|
WHERE delete_requested_at is not NULL
|
|
ORDER BY delete_requested_at
|
|
`
|
|
|
|
func (q *Queries) FetchJobsDeletionRequested(ctx context.Context) ([]string, error) {
|
|
rows, err := q.db.QueryContext(ctx, fetchJobsDeletionRequested)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []string
|
|
for rows.Next() {
|
|
var uuid string
|
|
if err := rows.Scan(&uuid); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, uuid)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const fetchJobsInStatus = `-- name: FetchJobsInStatus :many
|
|
SELECT id, created_at, updated_at, uuid, name, job_type, priority, status, activity, settings, metadata, delete_requested_at, storage_shaman_checkout_id, worker_tag_id FROM jobs WHERE status IN (/*SLICE:statuses*/?)
|
|
`
|
|
|
|
func (q *Queries) FetchJobsInStatus(ctx context.Context, statuses []string) ([]Job, error) {
|
|
query := fetchJobsInStatus
|
|
var queryParams []interface{}
|
|
if len(statuses) > 0 {
|
|
for _, v := range statuses {
|
|
queryParams = append(queryParams, v)
|
|
}
|
|
query = strings.Replace(query, "/*SLICE:statuses*/?", strings.Repeat(",?", len(statuses))[1:], 1)
|
|
} else {
|
|
query = strings.Replace(query, "/*SLICE:statuses*/?", "NULL", 1)
|
|
}
|
|
rows, err := q.db.QueryContext(ctx, query, queryParams...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Job
|
|
for rows.Next() {
|
|
var i Job
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.UUID,
|
|
&i.Name,
|
|
&i.JobType,
|
|
&i.Priority,
|
|
&i.Status,
|
|
&i.Activity,
|
|
&i.Settings,
|
|
&i.Metadata,
|
|
&i.DeleteRequestedAt,
|
|
&i.StorageShamanCheckoutID,
|
|
&i.WorkerTagID,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const fetchTask = `-- name: FetchTask :one
|
|
SELECT tasks.id, tasks.created_at, tasks.updated_at, tasks.uuid, tasks.name, tasks.type, tasks.job_id, tasks.priority, tasks.status, tasks.worker_id, tasks.last_touched_at, tasks.commands, tasks.activity, jobs.UUID as jobUUID, workers.UUID as workerUUID
|
|
FROM tasks
|
|
LEFT JOIN jobs ON (tasks.job_id = jobs.id)
|
|
LEFT JOIN workers ON (tasks.worker_id = workers.id)
|
|
WHERE tasks.uuid = ?1
|
|
`
|
|
|
|
type FetchTaskRow struct {
|
|
Task Task
|
|
JobUUID sql.NullString
|
|
WorkerUUID sql.NullString
|
|
}
|
|
|
|
func (q *Queries) FetchTask(ctx context.Context, uuid string) (FetchTaskRow, error) {
|
|
row := q.db.QueryRowContext(ctx, fetchTask, uuid)
|
|
var i FetchTaskRow
|
|
err := row.Scan(
|
|
&i.Task.ID,
|
|
&i.Task.CreatedAt,
|
|
&i.Task.UpdatedAt,
|
|
&i.Task.UUID,
|
|
&i.Task.Name,
|
|
&i.Task.Type,
|
|
&i.Task.JobID,
|
|
&i.Task.Priority,
|
|
&i.Task.Status,
|
|
&i.Task.WorkerID,
|
|
&i.Task.LastTouchedAt,
|
|
&i.Task.Commands,
|
|
&i.Task.Activity,
|
|
&i.JobUUID,
|
|
&i.WorkerUUID,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const fetchTaskFailureList = `-- name: FetchTaskFailureList :many
|
|
SELECT workers.id, workers.created_at, workers.updated_at, workers.uuid, workers.secret, workers.name, workers.address, workers.platform, workers.software, workers.status, workers.last_seen_at, workers.status_requested, workers.lazy_status_request, workers.supported_task_types, workers.deleted_at, workers.can_restart FROM workers
|
|
INNER JOIN task_failures TF on TF.worker_id=workers.id
|
|
WHERE TF.task_id=?1
|
|
`
|
|
|
|
type FetchTaskFailureListRow struct {
|
|
Worker Worker
|
|
}
|
|
|
|
func (q *Queries) FetchTaskFailureList(ctx context.Context, taskID int64) ([]FetchTaskFailureListRow, error) {
|
|
rows, err := q.db.QueryContext(ctx, fetchTaskFailureList, taskID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []FetchTaskFailureListRow
|
|
for rows.Next() {
|
|
var i FetchTaskFailureListRow
|
|
if err := rows.Scan(
|
|
&i.Worker.ID,
|
|
&i.Worker.CreatedAt,
|
|
&i.Worker.UpdatedAt,
|
|
&i.Worker.UUID,
|
|
&i.Worker.Secret,
|
|
&i.Worker.Name,
|
|
&i.Worker.Address,
|
|
&i.Worker.Platform,
|
|
&i.Worker.Software,
|
|
&i.Worker.Status,
|
|
&i.Worker.LastSeenAt,
|
|
&i.Worker.StatusRequested,
|
|
&i.Worker.LazyStatusRequest,
|
|
&i.Worker.SupportedTaskTypes,
|
|
&i.Worker.DeletedAt,
|
|
&i.Worker.CanRestart,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const fetchTaskJobUUID = `-- name: FetchTaskJobUUID :one
|
|
SELECT jobs.UUID as jobUUID
|
|
FROM tasks
|
|
LEFT JOIN jobs ON (tasks.job_id = jobs.id)
|
|
WHERE tasks.uuid = ?1
|
|
`
|
|
|
|
func (q *Queries) FetchTaskJobUUID(ctx context.Context, uuid string) (sql.NullString, error) {
|
|
row := q.db.QueryRowContext(ctx, fetchTaskJobUUID, uuid)
|
|
var jobuuid sql.NullString
|
|
err := row.Scan(&jobuuid)
|
|
return jobuuid, err
|
|
}
|
|
|
|
const fetchTasksOfJob = `-- name: FetchTasksOfJob :many
|
|
SELECT tasks.id, tasks.created_at, tasks.updated_at, tasks.uuid, tasks.name, tasks.type, tasks.job_id, tasks.priority, tasks.status, tasks.worker_id, tasks.last_touched_at, tasks.commands, tasks.activity, workers.UUID as workerUUID
|
|
FROM tasks
|
|
LEFT JOIN workers ON (tasks.worker_id = workers.id)
|
|
WHERE tasks.job_id = ?1
|
|
`
|
|
|
|
type FetchTasksOfJobRow struct {
|
|
Task Task
|
|
WorkerUUID sql.NullString
|
|
}
|
|
|
|
func (q *Queries) FetchTasksOfJob(ctx context.Context, jobID int64) ([]FetchTasksOfJobRow, error) {
|
|
rows, err := q.db.QueryContext(ctx, fetchTasksOfJob, jobID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []FetchTasksOfJobRow
|
|
for rows.Next() {
|
|
var i FetchTasksOfJobRow
|
|
if err := rows.Scan(
|
|
&i.Task.ID,
|
|
&i.Task.CreatedAt,
|
|
&i.Task.UpdatedAt,
|
|
&i.Task.UUID,
|
|
&i.Task.Name,
|
|
&i.Task.Type,
|
|
&i.Task.JobID,
|
|
&i.Task.Priority,
|
|
&i.Task.Status,
|
|
&i.Task.WorkerID,
|
|
&i.Task.LastTouchedAt,
|
|
&i.Task.Commands,
|
|
&i.Task.Activity,
|
|
&i.WorkerUUID,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const fetchTasksOfJobInStatus = `-- name: FetchTasksOfJobInStatus :many
|
|
SELECT tasks.id, tasks.created_at, tasks.updated_at, tasks.uuid, tasks.name, tasks.type, tasks.job_id, tasks.priority, tasks.status, tasks.worker_id, tasks.last_touched_at, tasks.commands, tasks.activity, workers.UUID as workerUUID
|
|
FROM tasks
|
|
LEFT JOIN workers ON (tasks.worker_id = workers.id)
|
|
WHERE tasks.job_id = ?1
|
|
AND tasks.status in (/*SLICE:task_status*/?)
|
|
`
|
|
|
|
type FetchTasksOfJobInStatusParams struct {
|
|
JobID int64
|
|
TaskStatus []string
|
|
}
|
|
|
|
type FetchTasksOfJobInStatusRow struct {
|
|
Task Task
|
|
WorkerUUID sql.NullString
|
|
}
|
|
|
|
func (q *Queries) FetchTasksOfJobInStatus(ctx context.Context, arg FetchTasksOfJobInStatusParams) ([]FetchTasksOfJobInStatusRow, error) {
|
|
query := fetchTasksOfJobInStatus
|
|
var queryParams []interface{}
|
|
queryParams = append(queryParams, arg.JobID)
|
|
if len(arg.TaskStatus) > 0 {
|
|
for _, v := range arg.TaskStatus {
|
|
queryParams = append(queryParams, v)
|
|
}
|
|
query = strings.Replace(query, "/*SLICE:task_status*/?", strings.Repeat(",?", len(arg.TaskStatus))[1:], 1)
|
|
} else {
|
|
query = strings.Replace(query, "/*SLICE:task_status*/?", "NULL", 1)
|
|
}
|
|
rows, err := q.db.QueryContext(ctx, query, queryParams...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []FetchTasksOfJobInStatusRow
|
|
for rows.Next() {
|
|
var i FetchTasksOfJobInStatusRow
|
|
if err := rows.Scan(
|
|
&i.Task.ID,
|
|
&i.Task.CreatedAt,
|
|
&i.Task.UpdatedAt,
|
|
&i.Task.UUID,
|
|
&i.Task.Name,
|
|
&i.Task.Type,
|
|
&i.Task.JobID,
|
|
&i.Task.Priority,
|
|
&i.Task.Status,
|
|
&i.Task.WorkerID,
|
|
&i.Task.LastTouchedAt,
|
|
&i.Task.Commands,
|
|
&i.Task.Activity,
|
|
&i.WorkerUUID,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const fetchTasksOfWorkerInStatus = `-- name: FetchTasksOfWorkerInStatus :many
|
|
SELECT tasks.id, tasks.created_at, tasks.updated_at, tasks.uuid, tasks.name, tasks.type, tasks.job_id, tasks.priority, tasks.status, tasks.worker_id, tasks.last_touched_at, tasks.commands, tasks.activity, jobs.UUID as jobUUID
|
|
FROM tasks
|
|
LEFT JOIN jobs ON (tasks.job_id = jobs.id)
|
|
WHERE tasks.worker_id = ?1
|
|
AND tasks.status = ?2
|
|
`
|
|
|
|
type FetchTasksOfWorkerInStatusParams struct {
|
|
WorkerID sql.NullInt64
|
|
TaskStatus string
|
|
}
|
|
|
|
type FetchTasksOfWorkerInStatusRow struct {
|
|
Task Task
|
|
JobUUID sql.NullString
|
|
}
|
|
|
|
func (q *Queries) FetchTasksOfWorkerInStatus(ctx context.Context, arg FetchTasksOfWorkerInStatusParams) ([]FetchTasksOfWorkerInStatusRow, error) {
|
|
rows, err := q.db.QueryContext(ctx, fetchTasksOfWorkerInStatus, arg.WorkerID, arg.TaskStatus)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []FetchTasksOfWorkerInStatusRow
|
|
for rows.Next() {
|
|
var i FetchTasksOfWorkerInStatusRow
|
|
if err := rows.Scan(
|
|
&i.Task.ID,
|
|
&i.Task.CreatedAt,
|
|
&i.Task.UpdatedAt,
|
|
&i.Task.UUID,
|
|
&i.Task.Name,
|
|
&i.Task.Type,
|
|
&i.Task.JobID,
|
|
&i.Task.Priority,
|
|
&i.Task.Status,
|
|
&i.Task.WorkerID,
|
|
&i.Task.LastTouchedAt,
|
|
&i.Task.Commands,
|
|
&i.Task.Activity,
|
|
&i.JobUUID,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const fetchTasksOfWorkerInStatusOfJob = `-- name: FetchTasksOfWorkerInStatusOfJob :many
|
|
SELECT tasks.id, tasks.created_at, tasks.updated_at, tasks.uuid, tasks.name, tasks.type, tasks.job_id, tasks.priority, tasks.status, tasks.worker_id, tasks.last_touched_at, tasks.commands, tasks.activity
|
|
FROM tasks
|
|
WHERE tasks.worker_id = ?1
|
|
AND tasks.job_id = ?2
|
|
AND tasks.status = ?3
|
|
`
|
|
|
|
type FetchTasksOfWorkerInStatusOfJobParams struct {
|
|
WorkerID sql.NullInt64
|
|
JobID int64
|
|
TaskStatus string
|
|
}
|
|
|
|
type FetchTasksOfWorkerInStatusOfJobRow struct {
|
|
Task Task
|
|
}
|
|
|
|
func (q *Queries) FetchTasksOfWorkerInStatusOfJob(ctx context.Context, arg FetchTasksOfWorkerInStatusOfJobParams) ([]FetchTasksOfWorkerInStatusOfJobRow, error) {
|
|
rows, err := q.db.QueryContext(ctx, fetchTasksOfWorkerInStatusOfJob, arg.WorkerID, arg.JobID, arg.TaskStatus)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []FetchTasksOfWorkerInStatusOfJobRow
|
|
for rows.Next() {
|
|
var i FetchTasksOfWorkerInStatusOfJobRow
|
|
if err := rows.Scan(
|
|
&i.Task.ID,
|
|
&i.Task.CreatedAt,
|
|
&i.Task.UpdatedAt,
|
|
&i.Task.UUID,
|
|
&i.Task.Name,
|
|
&i.Task.Type,
|
|
&i.Task.JobID,
|
|
&i.Task.Priority,
|
|
&i.Task.Status,
|
|
&i.Task.WorkerID,
|
|
&i.Task.LastTouchedAt,
|
|
&i.Task.Commands,
|
|
&i.Task.Activity,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getLastRenderedJobUUID = `-- name: GetLastRenderedJobUUID :one
|
|
SELECT uuid FROM jobs
|
|
INNER JOIN last_rendereds LR ON jobs.id = LR.job_id
|
|
`
|
|
|
|
func (q *Queries) GetLastRenderedJobUUID(ctx context.Context) (string, error) {
|
|
row := q.db.QueryRowContext(ctx, getLastRenderedJobUUID)
|
|
var uuid string
|
|
err := row.Scan(&uuid)
|
|
return uuid, err
|
|
}
|
|
|
|
const jobCountTaskStatuses = `-- name: JobCountTaskStatuses :many
|
|
SELECT status, count(*) as num_tasks FROM tasks
|
|
WHERE job_id = ?1
|
|
GROUP BY status
|
|
`
|
|
|
|
type JobCountTaskStatusesRow struct {
|
|
Status string
|
|
NumTasks int64
|
|
}
|
|
|
|
// Fetch (status, num tasks in that status) rows for the given job.
|
|
func (q *Queries) JobCountTaskStatuses(ctx context.Context, jobID int64) ([]JobCountTaskStatusesRow, error) {
|
|
rows, err := q.db.QueryContext(ctx, jobCountTaskStatuses, jobID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []JobCountTaskStatusesRow
|
|
for rows.Next() {
|
|
var i JobCountTaskStatusesRow
|
|
if err := rows.Scan(&i.Status, &i.NumTasks); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const jobCountTasksInStatus = `-- name: JobCountTasksInStatus :one
|
|
SELECT count(*) as num_tasks FROM tasks
|
|
WHERE job_id = ?1 AND status = ?2
|
|
`
|
|
|
|
type JobCountTasksInStatusParams struct {
|
|
JobID int64
|
|
TaskStatus string
|
|
}
|
|
|
|
// Fetch number of tasks in the given status, of the given job.
|
|
func (q *Queries) JobCountTasksInStatus(ctx context.Context, arg JobCountTasksInStatusParams) (int64, error) {
|
|
row := q.db.QueryRowContext(ctx, jobCountTasksInStatus, arg.JobID, arg.TaskStatus)
|
|
var num_tasks int64
|
|
err := row.Scan(&num_tasks)
|
|
return num_tasks, err
|
|
}
|
|
|
|
const removeFromJobBlocklist = `-- name: RemoveFromJobBlocklist :exec
|
|
DELETE FROM job_blocks
|
|
WHERE
|
|
job_blocks.job_id in (SELECT jobs.id FROM jobs WHERE jobs.uuid=?1)
|
|
AND job_blocks.worker_id in (SELECT workers.id FROM workers WHERE workers.uuid=?2)
|
|
AND job_blocks.task_type = ?3
|
|
`
|
|
|
|
type RemoveFromJobBlocklistParams struct {
|
|
JobUUID string
|
|
WorkerUUID string
|
|
TaskType string
|
|
}
|
|
|
|
func (q *Queries) RemoveFromJobBlocklist(ctx context.Context, arg RemoveFromJobBlocklistParams) error {
|
|
_, err := q.db.ExecContext(ctx, removeFromJobBlocklist, arg.JobUUID, arg.WorkerUUID, arg.TaskType)
|
|
return err
|
|
}
|
|
|
|
const requestJobDeletion = `-- name: RequestJobDeletion :exec
|
|
UPDATE jobs SET
|
|
updated_at = ?1,
|
|
delete_requested_at = ?1
|
|
WHERE id = ?2
|
|
`
|
|
|
|
type RequestJobDeletionParams struct {
|
|
Now sql.NullTime
|
|
JobID int64
|
|
}
|
|
|
|
func (q *Queries) RequestJobDeletion(ctx context.Context, arg RequestJobDeletionParams) error {
|
|
_, err := q.db.ExecContext(ctx, requestJobDeletion, arg.Now, arg.JobID)
|
|
return err
|
|
}
|
|
|
|
const requestMassJobDeletion = `-- name: RequestMassJobDeletion :exec
|
|
UPDATE jobs SET
|
|
updated_at = ?1,
|
|
delete_requested_at = ?1
|
|
WHERE uuid in (/*SLICE:uuids*/?)
|
|
`
|
|
|
|
type RequestMassJobDeletionParams struct {
|
|
Now sql.NullTime
|
|
UUIDs []string
|
|
}
|
|
|
|
func (q *Queries) RequestMassJobDeletion(ctx context.Context, arg RequestMassJobDeletionParams) error {
|
|
query := requestMassJobDeletion
|
|
var queryParams []interface{}
|
|
queryParams = append(queryParams, arg.Now)
|
|
if len(arg.UUIDs) > 0 {
|
|
for _, v := range arg.UUIDs {
|
|
queryParams = append(queryParams, v)
|
|
}
|
|
query = strings.Replace(query, "/*SLICE:uuids*/?", strings.Repeat(",?", len(arg.UUIDs))[1:], 1)
|
|
} else {
|
|
query = strings.Replace(query, "/*SLICE:uuids*/?", "NULL", 1)
|
|
}
|
|
_, err := q.db.ExecContext(ctx, query, queryParams...)
|
|
return err
|
|
}
|
|
|
|
const saveJobPriority = `-- name: SaveJobPriority :exec
|
|
UPDATE jobs SET updated_at=?1, priority=?2 WHERE id=?3
|
|
`
|
|
|
|
type SaveJobPriorityParams struct {
|
|
Now sql.NullTime
|
|
Priority int64
|
|
ID int64
|
|
}
|
|
|
|
func (q *Queries) SaveJobPriority(ctx context.Context, arg SaveJobPriorityParams) error {
|
|
_, err := q.db.ExecContext(ctx, saveJobPriority, arg.Now, arg.Priority, arg.ID)
|
|
return err
|
|
}
|
|
|
|
const saveJobStatus = `-- name: SaveJobStatus :exec
|
|
UPDATE jobs SET updated_at=?1, status=?2, activity=?3 WHERE id=?4
|
|
`
|
|
|
|
type SaveJobStatusParams struct {
|
|
Now sql.NullTime
|
|
Status string
|
|
Activity string
|
|
ID int64
|
|
}
|
|
|
|
func (q *Queries) SaveJobStatus(ctx context.Context, arg SaveJobStatusParams) error {
|
|
_, err := q.db.ExecContext(ctx, saveJobStatus,
|
|
arg.Now,
|
|
arg.Status,
|
|
arg.Activity,
|
|
arg.ID,
|
|
)
|
|
return err
|
|
}
|
|
|
|
const saveJobStorageInfo = `-- name: SaveJobStorageInfo :exec
|
|
UPDATE jobs SET storage_shaman_checkout_id=?1 WHERE id=?2
|
|
`
|
|
|
|
type SaveJobStorageInfoParams struct {
|
|
StorageShamanCheckoutID string
|
|
ID int64
|
|
}
|
|
|
|
func (q *Queries) SaveJobStorageInfo(ctx context.Context, arg SaveJobStorageInfoParams) error {
|
|
_, err := q.db.ExecContext(ctx, saveJobStorageInfo, arg.StorageShamanCheckoutID, arg.ID)
|
|
return err
|
|
}
|
|
|
|
const setLastRendered = `-- name: SetLastRendered :exec
|
|
INSERT INTO last_rendereds (id, created_at, updated_at, job_id)
|
|
VALUES (1, ?1, ?2, ?3)
|
|
ON CONFLICT DO UPDATE
|
|
SET updated_at=?2, job_id=?3
|
|
WHERE id=1
|
|
`
|
|
|
|
type SetLastRenderedParams struct {
|
|
CreatedAt time.Time
|
|
UpdatedAt sql.NullTime
|
|
JobID int64
|
|
}
|
|
|
|
// Set the 'last rendered' job info.
|
|
//
|
|
// Note that the use of ?2 and ?3 in the SQL is not desirable, and should be
|
|
// replaced with @updated_at and @job_id as soon as sqlc issue #3334 is fixed.
|
|
// See https://github.com/sqlc-dev/sqlc/issues/3334 for more info.
|
|
func (q *Queries) SetLastRendered(ctx context.Context, arg SetLastRenderedParams) error {
|
|
_, err := q.db.ExecContext(ctx, setLastRendered, arg.CreatedAt, arg.UpdatedAt, arg.JobID)
|
|
return err
|
|
}
|
|
|
|
const storeTaskDependency = `-- name: StoreTaskDependency :exec
|
|
INSERT INTO task_dependencies (task_id, dependency_id) VALUES (?1, ?2)
|
|
`
|
|
|
|
type StoreTaskDependencyParams struct {
|
|
TaskID int64
|
|
DependencyID int64
|
|
}
|
|
|
|
func (q *Queries) StoreTaskDependency(ctx context.Context, arg StoreTaskDependencyParams) error {
|
|
_, err := q.db.ExecContext(ctx, storeTaskDependency, arg.TaskID, arg.DependencyID)
|
|
return err
|
|
}
|
|
|
|
const taskAssignToWorker = `-- name: TaskAssignToWorker :exec
|
|
UPDATE tasks SET
|
|
updated_at = ?1,
|
|
worker_id = ?2
|
|
WHERE id=?3
|
|
`
|
|
|
|
type TaskAssignToWorkerParams struct {
|
|
UpdatedAt sql.NullTime
|
|
WorkerID sql.NullInt64
|
|
ID int64
|
|
}
|
|
|
|
func (q *Queries) TaskAssignToWorker(ctx context.Context, arg TaskAssignToWorkerParams) error {
|
|
_, err := q.db.ExecContext(ctx, taskAssignToWorker, arg.UpdatedAt, arg.WorkerID, arg.ID)
|
|
return err
|
|
}
|
|
|
|
const taskTouchedByWorker = `-- name: TaskTouchedByWorker :exec
|
|
UPDATE tasks SET
|
|
updated_at = ?1,
|
|
last_touched_at = ?2
|
|
WHERE id=?3
|
|
`
|
|
|
|
type TaskTouchedByWorkerParams struct {
|
|
UpdatedAt sql.NullTime
|
|
LastTouchedAt sql.NullTime
|
|
ID int64
|
|
}
|
|
|
|
func (q *Queries) TaskTouchedByWorker(ctx context.Context, arg TaskTouchedByWorkerParams) error {
|
|
_, err := q.db.ExecContext(ctx, taskTouchedByWorker, arg.UpdatedAt, arg.LastTouchedAt, arg.ID)
|
|
return err
|
|
}
|
|
|
|
const updateJobsTaskStatuses = `-- name: UpdateJobsTaskStatuses :exec
|
|
UPDATE tasks SET
|
|
updated_at = ?1,
|
|
status = ?2,
|
|
activity = ?3
|
|
WHERE job_id = ?4
|
|
`
|
|
|
|
type UpdateJobsTaskStatusesParams struct {
|
|
UpdatedAt sql.NullTime
|
|
Status string
|
|
Activity string
|
|
JobID int64
|
|
}
|
|
|
|
func (q *Queries) UpdateJobsTaskStatuses(ctx context.Context, arg UpdateJobsTaskStatusesParams) error {
|
|
_, err := q.db.ExecContext(ctx, updateJobsTaskStatuses,
|
|
arg.UpdatedAt,
|
|
arg.Status,
|
|
arg.Activity,
|
|
arg.JobID,
|
|
)
|
|
return err
|
|
}
|
|
|
|
const updateJobsTaskStatusesConditional = `-- name: UpdateJobsTaskStatusesConditional :exec
|
|
UPDATE tasks SET
|
|
updated_at = ?1,
|
|
status = ?2,
|
|
activity = ?3
|
|
WHERE job_id = ?4 AND status in (/*SLICE:statuses_to_update*/?)
|
|
`
|
|
|
|
type UpdateJobsTaskStatusesConditionalParams struct {
|
|
UpdatedAt sql.NullTime
|
|
Status string
|
|
Activity string
|
|
JobID int64
|
|
StatusesToUpdate []string
|
|
}
|
|
|
|
func (q *Queries) UpdateJobsTaskStatusesConditional(ctx context.Context, arg UpdateJobsTaskStatusesConditionalParams) error {
|
|
query := updateJobsTaskStatusesConditional
|
|
var queryParams []interface{}
|
|
queryParams = append(queryParams, arg.UpdatedAt)
|
|
queryParams = append(queryParams, arg.Status)
|
|
queryParams = append(queryParams, arg.Activity)
|
|
queryParams = append(queryParams, arg.JobID)
|
|
if len(arg.StatusesToUpdate) > 0 {
|
|
for _, v := range arg.StatusesToUpdate {
|
|
queryParams = append(queryParams, v)
|
|
}
|
|
query = strings.Replace(query, "/*SLICE:statuses_to_update*/?", strings.Repeat(",?", len(arg.StatusesToUpdate))[1:], 1)
|
|
} else {
|
|
query = strings.Replace(query, "/*SLICE:statuses_to_update*/?", "NULL", 1)
|
|
}
|
|
_, err := q.db.ExecContext(ctx, query, queryParams...)
|
|
return err
|
|
}
|
|
|
|
const updateTask = `-- name: UpdateTask :exec
|
|
UPDATE tasks SET
|
|
updated_at = ?1,
|
|
name = ?2,
|
|
type = ?3,
|
|
priority = ?4,
|
|
status = ?5,
|
|
worker_id = ?6,
|
|
last_touched_at = ?7,
|
|
commands = ?8,
|
|
activity = ?9
|
|
WHERE id=?10
|
|
`
|
|
|
|
type UpdateTaskParams struct {
|
|
UpdatedAt sql.NullTime
|
|
Name string
|
|
Type string
|
|
Priority int64
|
|
Status string
|
|
WorkerID sql.NullInt64
|
|
LastTouchedAt sql.NullTime
|
|
Commands json.RawMessage
|
|
Activity string
|
|
ID int64
|
|
}
|
|
|
|
// Update a Task, except its id, created_at, uuid, or job_id fields.
|
|
func (q *Queries) UpdateTask(ctx context.Context, arg UpdateTaskParams) error {
|
|
_, err := q.db.ExecContext(ctx, updateTask,
|
|
arg.UpdatedAt,
|
|
arg.Name,
|
|
arg.Type,
|
|
arg.Priority,
|
|
arg.Status,
|
|
arg.WorkerID,
|
|
arg.LastTouchedAt,
|
|
arg.Commands,
|
|
arg.Activity,
|
|
arg.ID,
|
|
)
|
|
return err
|
|
}
|
|
|
|
const updateTaskActivity = `-- name: UpdateTaskActivity :exec
|
|
UPDATE tasks SET
|
|
updated_at = ?1,
|
|
activity = ?2
|
|
WHERE id=?3
|
|
`
|
|
|
|
type UpdateTaskActivityParams struct {
|
|
UpdatedAt sql.NullTime
|
|
Activity string
|
|
ID int64
|
|
}
|
|
|
|
func (q *Queries) UpdateTaskActivity(ctx context.Context, arg UpdateTaskActivityParams) error {
|
|
_, err := q.db.ExecContext(ctx, updateTaskActivity, arg.UpdatedAt, arg.Activity, arg.ID)
|
|
return err
|
|
}
|
|
|
|
const updateTaskStatus = `-- name: UpdateTaskStatus :exec
|
|
UPDATE tasks SET
|
|
updated_at = ?1,
|
|
status = ?2
|
|
WHERE id=?3
|
|
`
|
|
|
|
type UpdateTaskStatusParams struct {
|
|
UpdatedAt sql.NullTime
|
|
Status string
|
|
ID int64
|
|
}
|
|
|
|
func (q *Queries) UpdateTaskStatus(ctx context.Context, arg UpdateTaskStatusParams) error {
|
|
_, err := q.db.ExecContext(ctx, updateTaskStatus, arg.UpdatedAt, arg.Status, arg.ID)
|
|
return err
|
|
}
|