Skip to main content

runledger_postgres/
jobs.rs

1//! Durable job, schedule, workflow, and admin persistence APIs.
2//!
3//! Choose the highest-level API that matches the work. Use `enqueue_job` for
4//! one independent retried unit. Use workflow DAG APIs such as
5//! `enqueue_workflow_run`, `WorkflowRunEnqueueBuilder`, and
6//! `WorkflowStepEnqueueBuilder` when work has dependencies, fan-out/fan-in,
7//! external gates, or workflow-level idempotency.
8//!
9//! Avoid manually orchestrating ordinary workflows by polling job state,
10//! enqueueing child jobs from handlers, or storing dependency state in payloads.
11
12mod admin;
13mod errors;
14mod logs;
15mod queue;
16mod row_decode;
17mod runtime_configs;
18mod schedule_definition_guard;
19mod schedules;
20mod transaction_isolation;
21mod types;
22mod workflow_types;
23mod workflows;
24
25pub use admin::{
26    JobPayloadUuidArrayFieldUpdate, JobPayloadUuidArrayFieldUpdateRejection, cancel_job,
27    get_job_by_id, get_job_metrics, get_job_payload_by_idempotency_key,
28    get_latest_job_payload_for_run, list_job_events, list_jobs, requeue_job,
29    update_job_payload_uuid_array_field,
30};
31pub use logs::{insert_job_log, list_job_logs};
32pub use queue::{
33    JobDefinitionCatalogSyncError, JobDefinitionCatalogSyncMode, JobDefinitionCatalogSyncReport,
34    claim_jobs, claim_jobs_for_types, claim_prestart_jobs, claim_prestart_jobs_for_types,
35    complete_job_failure, complete_job_success, enqueue_job, enqueue_job_tx,
36    get_job_definition_by_type, heartbeat_job, insert_job_definition_if_missing_tx,
37    list_job_definitions, reap_expired_leases, reap_expired_leases_with_diagnostics,
38    reap_expired_leases_with_terminal_records, release_unstarted_job_claim,
39    sync_catalog_job_definitions_exact_tx, sync_catalog_job_definitions_tx, update_job_definition,
40    update_job_progress, upsert_job_definition_tx,
41};
42pub use runtime_configs::{
43    get_job_runtime_config_by_type, get_required_job_runtime_config_by_type,
44    insert_job_runtime_config_if_missing, insert_job_runtime_config_if_missing_tx,
45    list_job_runtime_configs, upsert_job_runtime_config, upsert_job_runtime_config_tx,
46};
47pub use schedules::{
48    claim_due_schedules_tx, deactivate_schedules_absent_from_names_tx, get_job_schedule_by_name,
49    mark_schedule_fired_tx, prepare_schedule_exact_sync_critical_section_tx,
50    set_job_schedule_active, set_job_schedule_active_tx, set_job_schedule_next_fire_at,
51    set_job_schedule_next_fire_at_tx, sync_catalog_job_schedules_tx, upsert_job_schedule,
52    upsert_job_schedule_tx,
53};
54pub use types::{
55    JOB_LIST_PAGE_LIMIT_MAX, JOB_SCHEDULE_MAX_JITTER_SECONDS, JobCompletionUpdate,
56    JobDefinitionListFilter, JobDefinitionRecord, JobDefinitionUpdate, JobDefinitionUpsert,
57    JobEnqueue, JobEventRecord, JobFailureUpdate, JobListFilter, JobLogRecord, JobLogRecordInput,
58    JobMetricsRecord, JobProgressUpdate, JobQueueRecord, JobRuntimeConfigListFilter,
59    JobRuntimeConfigRecord, JobRuntimeConfigUpsert, JobScheduleCatalogSyncEntry,
60    JobScheduleCatalogSyncReport, JobScheduleJobTypeReference, JobScheduleRecord,
61    JobScheduleUpsert, ReapExpiredLeaseDeferredError, ReapExpiredLeasesDetailedResult,
62    ReapExpiredLeasesResult, ReapedTerminalLeaseRecord,
63};
64pub use workflow_types::{
65    AppendWorkflowStepsInput, AppendWorkflowStepsOutcome, AppendWorkflowStepsResult,
66    CompleteExternalWorkflowStepInput, DEFAULT_WORKFLOW_RUN_WAIT_TIMEOUT, WorkflowRunCountFilter,
67    WorkflowRunDbRecord, WorkflowRunHandle, WorkflowRunHandleError, WorkflowRunHandleScope,
68    WorkflowRunListFilter, WorkflowRunResultRecord, WorkflowRunWaitOptions, WorkflowStepDbRecord,
69    WorkflowStepDependencyDbRecord,
70};
71pub use workflows::{
72    append_workflow_steps, append_workflow_steps_tx, cancel_workflow_run_tx,
73    complete_external_workflow_step, complete_external_workflow_step_tx, count_workflow_runs,
74    count_workflow_step_dependencies, count_workflow_steps, enqueue_workflow_run,
75    enqueue_workflow_run_handle, enqueue_workflow_run_tx, get_latest_workflow_run_by_type,
76    get_workflow_run_by_id, get_workflow_run_by_type_and_idempotency_key,
77    get_workflow_run_by_type_and_idempotency_key_tx, get_workflow_run_id_for_job,
78    list_workflow_runs, list_workflow_step_dependencies, list_workflow_step_dependencies_page,
79    list_workflow_step_keys_for_update_tx, list_workflow_steps, list_workflow_steps_page,
80    retrieve_workflow_run_handle, update_workflow_step_and_pending_job_payload_tx,
81    workflow_run_handle,
82};
83#[cfg(feature = "test-support")]
84pub mod test_support {
85    pub use super::workflows::test_support::workflow_run_release_lock_key;
86}
87
88#[deprecated(note = "Use WorkflowRunDbRecord instead.")]
89pub type WorkflowRunRecord = WorkflowRunDbRecord;
90
91#[deprecated(note = "Use WorkflowStepDbRecord instead.")]
92pub type WorkflowStepRecord = WorkflowStepDbRecord;