use thiserror::Error;
#[derive(Debug, Error)]
pub enum WorkerError {
#[error("RabbitMQ communication error: {0}")]
Lapin(#[from] lapin::Error),
#[error("Failed to deserialize message: {0}")]
Deserialization(#[from] serde_json::Error),
#[error("Messaging setup or configuration error: {message}")]
MessagingError {
message: String,
},
#[error("Message handler failed: {0}")]
HandlerError(#[from] Box<dyn std::error::Error + Send + Sync>),
#[error("Dead letter queue operation failed: {0}")]
DlqError(String),
}
impl From<&str> for WorkerError {
fn from(s: &str) -> Self {
WorkerError::MessagingError { message: s.to_string() }
}
}
impl From<String> for WorkerError {
fn from(s: String) -> Self {
WorkerError::MessagingError { message: s }
}
}