runledger-postgres 0.1.1

PostgreSQL persistence layer for the Runledger durable job and workflow system
Documentation
use crate::{Error, QueryError, QueryErrorCategory};

pub(super) fn invalid_job_state_error() -> Error {
    Error::QueryError(QueryError::from_classified(
        QueryErrorCategory::Validation,
        "job.invalid_state_transition",
        "Job cannot transition from its current state.",
        "job state transition precondition failed",
    ))
}

pub(super) fn job_not_found_error() -> Error {
    Error::QueryError(QueryError::from_classified(
        QueryErrorCategory::Validation,
        "job.not_found",
        "Job was not found.",
        "job lookup failed",
    ))
}

pub(super) fn lease_owner_mismatch_error() -> Error {
    Error::QueryError(QueryError::from_classified(
        QueryErrorCategory::Forbidden,
        "job.lease_owner_mismatch",
        "Job lease is owned by another worker.",
        "job lease owner mismatch",
    ))
}

pub(super) fn unstarted_claim_release_not_applicable_error() -> Error {
    Error::QueryError(QueryError::from_classified(
        QueryErrorCategory::Validation,
        "job.unstarted_claim_release_not_applicable",
        "Job claim cannot be released as unstarted.",
        "job claim is not eligible for unstarted release",
    ))
}

pub(super) fn runtime_config_not_found_error(job_type: &str) -> Error {
    Error::QueryError(QueryError::from_classified(
        QueryErrorCategory::Validation,
        "job.runtime_config_not_found",
        "Job runtime configuration was not found.",
        format!("required runtime config missing for job type: {job_type}"),
    ))
}

pub(super) fn workflow_requeue_not_supported_error() -> Error {
    Error::QueryError(QueryError::from_classified(
        QueryErrorCategory::Validation,
        "job.workflow_requeue_not_supported",
        "Workflow-managed jobs cannot be requeued directly.",
        "workflow managed job requeue is not supported",
    ))
}