graphile_worker_admin_api 0.1.0

Shared Graphile Worker admin API contracts and queries
Documentation
use graphile_worker_database::Schema;
use indoc::formatdoc;

use crate::sql::AdminTable;

pub(super) fn jobs_select_sql(schema: &Schema) -> String {
    let jobs = AdminTable::Jobs.qualified(schema);
    let tasks = AdminTable::Tasks.qualified(schema);
    let job_queues = AdminTable::JobQueues.qualified(schema);

    formatdoc!(
        r#"
            select
                jobs.id,
                tasks.identifier as task_identifier,
                job_queues.queue_name,
                jobs.payload,
                jobs.priority,
                jobs.run_at,
                jobs.attempts,
                jobs.max_attempts,
                jobs.last_error,
                jobs.created_at,
                jobs.updated_at,
                jobs.key,
                jobs.locked_at,
                jobs.locked_by,
                jobs.revision,
                jobs.flags,
                jobs.is_available
            from {jobs} as jobs
            inner join {tasks} as tasks on tasks.id = jobs.task_id
            left join {job_queues} as job_queues on job_queues.id = jobs.job_queue_id
        "#
    )
}