use thiserror::Error;
#[derive(Error, Debug, Clone, PartialEq)]
pub enum QmlError {
#[error("Job not found: {job_id}")]
JobNotFound { job_id: String },
#[error("Serialization failed: {message}")]
SerializationError { message: String },
#[error("Storage error: {message}")]
StorageError { message: String },
#[error("Invalid state transition from {from} to {to}")]
InvalidStateTransition { from: String, to: String },
#[error("Invalid job data: {message}")]
InvalidJobData { message: String },
#[error("Queue operation failed: {message}")]
QueueError { message: String },
#[error("Worker error: {message}")]
WorkerError { message: String },
#[error("Configuration error: {message}")]
ConfigurationError { message: String },
#[error("Operation timed out: {operation}")]
TimeoutError { operation: String },
#[error("Migration error: {message}")]
MigrationError { message: String },
}
impl From<serde_json::Error> for QmlError {
fn from(err: serde_json::Error) -> Self {
QmlError::SerializationError {
message: err.to_string(),
}
}
}
impl From<uuid::Error> for QmlError {
fn from(err: uuid::Error) -> Self {
QmlError::InvalidJobData {
message: format!("UUID error: {}", err),
}
}
}
pub type Result<T> = std::result::Result<T, QmlError>;