use thiserror::Error;
pub type Result<T> = std::result::Result<T, BosonError>;
#[derive(Debug, Error)]
pub enum BosonError {
#[error("task not found: {0}")]
TaskNotFound(String),
#[error("job not found: {0}")]
JobNotFound(String),
#[error("run not found: {0}")]
RunNotFound(String),
#[error("task config not found: {0}")]
TaskConfigNotFound(String),
#[error("parameter error: {0}")]
ParamError(String),
#[error("signature mismatch: job expects {expected}, task has {actual}")]
SignatureMismatch {
expected: String,
actual: String,
},
#[error("invalid config: {0}")]
InvalidConfig(String),
#[error("backend error: {0}")]
Backend(String),
#[error("internal error: {0}")]
Internal(String),
#[error("enqueue rate limited for task: {0}")]
RateLimited(String),
#[error("unknown queue backend: {0}")]
UnknownBackend(String),
}
#[derive(Debug, Error)]
pub enum IdentityError {
#[error("invalid actor: {0}")]
InvalidActor(String),
}
impl From<serde_json::Error> for BosonError {
fn from(err: serde_json::Error) -> Self {
Self::ParamError(err.to_string())
}
}