1use thiserror::Error;
7
8#[derive(Error, Debug, Clone, PartialEq)]
13pub enum QmlError {
14 #[error("Job not found: {job_id}")]
16 JobNotFound { job_id: String },
17
18 #[error("Serialization failed: {message}")]
20 SerializationError { message: String },
21
22 #[error("Storage error: {message}")]
24 StorageError { message: String },
25
26 #[error("Invalid state transition from {from} to {to}")]
28 InvalidStateTransition { from: String, to: String },
29
30 #[error("Invalid job data: {message}")]
32 InvalidJobData { message: String },
33
34 #[error("Queue operation failed: {message}")]
36 QueueError { message: String },
37
38 #[error("Worker error: {message}")]
40 WorkerError { message: String },
41
42 #[error("Configuration error: {message}")]
44 ConfigurationError { message: String },
45
46 #[error("Operation timed out: {operation}")]
48 TimeoutError { operation: String },
49}
50
51impl From<serde_json::Error> for QmlError {
52 fn from(err: serde_json::Error) -> Self {
53 QmlError::SerializationError {
54 message: err.to_string(),
55 }
56 }
57}
58
59impl From<uuid::Error> for QmlError {
60 fn from(err: uuid::Error) -> Self {
61 QmlError::InvalidJobData {
62 message: format!("UUID error: {}", err),
63 }
64 }
65}
66
67pub type Result<T> = std::result::Result<T, QmlError>;