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 #[error("Migration error: {message}")]
52 MigrationError { message: String },
53}
54
55impl From<serde_json::Error> for QmlError {
56 fn from(err: serde_json::Error) -> Self {
57 QmlError::SerializationError {
58 message: err.to_string(),
59 }
60 }
61}
62
63impl From<uuid::Error> for QmlError {
64 fn from(err: uuid::Error) -> Self {
65 QmlError::InvalidJobData {
66 message: format!("UUID error: {}", err),
67 }
68 }
69}
70
71pub type Result<T> = std::result::Result<T, QmlError>;