1use thiserror::Error;
2use uuid::Uuid;
3
4#[derive(Error, Debug)]
6pub enum Error {
7 #[error("backend error: {0}")]
9 Backend(#[from] Box<dyn std::error::Error + Send + Sync>),
10
11 #[error("job type not registered: {0}")]
13 UnknownJobType(String),
14
15 #[error("job not found: {0}")]
17 JobNotFound(Uuid),
18
19 #[error("no runnable jobs available in queue: {0}")]
21 QueueEmpty(String),
22
23 #[error("lease expired for job {job_id} (worker: {worker_id})")]
25 LeaseExpired { job_id: Uuid, worker_id: String },
26
27 #[error("payload deserialization error: {0}")]
29 PayloadDeserialization(#[from] serde_json::Error),
30
31 #[error("invalid state: {0}")]
33 InvalidState(String),
34
35 #[error("internal queue error: {0}")]
37 Internal(String),
38}
39
40pub type QueueError = Error;