Skip to main content

meerkat_workgraph/
error.rs

1use crate::types::{WorkItemId, WorkNamespace};
2
3#[derive(Debug, thiserror::Error)]
4pub enum WorkGraphError {
5    #[error("work item {id} not found in realm '{realm_id}' namespace '{namespace}'")]
6    NotFound {
7        realm_id: String,
8        namespace: WorkNamespace,
9        id: WorkItemId,
10    },
11    #[error("stale work item revision for {id}: expected {expected}, actual {actual}")]
12    StaleRevision {
13        id: WorkItemId,
14        expected: u64,
15        actual: u64,
16    },
17    #[error("conflicting work graph mutation: {0}")]
18    Conflict(String),
19    #[error("invalid work graph transition: {0}")]
20    InvalidTransition(String),
21    #[error("invalid work graph input: {0}")]
22    InvalidInput(String),
23    #[error("work graph store error: {0}")]
24    Store(String),
25    #[error("work graph backend '{0}' does not support this operation")]
26    UnsupportedBackend(String),
27}
28
29impl WorkGraphError {
30    pub fn not_found(realm_id: String, namespace: WorkNamespace, id: WorkItemId) -> Self {
31        Self::NotFound {
32            realm_id,
33            namespace,
34            id,
35        }
36    }
37}