1#[derive(Debug, thiserror::Error)]
2pub enum DurableError {
3 #[error("database error: {0}")]
4 Db(#[from] sea_orm::DbErr),
5
6 #[error("serialization error: {0}")]
7 Json(#[from] serde_json::Error),
8
9 #[error("{0}")]
10 Custom(String),
11
12 #[error("task locked by another worker: {0}")]
13 StepLocked(String),
14
15 #[error("timeout: {0}")]
16 Timeout(String),
17}
18
19impl DurableError {
20 pub fn custom(msg: impl Into<String>) -> Self {
21 Self::Custom(msg.into())
22 }
23
24 pub fn is_step_locked(&self) -> bool {
25 matches!(self, Self::StepLocked(_))
26 }
27}