Skip to main content

camel_core/lifecycle/domain/
error.rs

1use std::fmt;
2
3use camel_api::CamelError;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
6pub enum DomainError {
7    InvalidTransition { from: String, to: String },
8    NotFound(String),
9    AlreadyExists(String),
10    InvalidState(String),
11}
12
13impl fmt::Display for DomainError {
14    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
15        match self {
16            DomainError::InvalidTransition { from, to } => {
17                write!(f, "invalid transition: {from} -> {to}")
18            }
19            DomainError::NotFound(id) => write!(f, "not found: {id}"),
20            DomainError::AlreadyExists(id) => write!(f, "already exists: {id}"),
21            DomainError::InvalidState(msg) => write!(f, "invalid state: {msg}"),
22        }
23    }
24}
25
26impl std::error::Error for DomainError {}
27
28impl From<DomainError> for CamelError {
29    fn from(e: DomainError) -> Self {
30        CamelError::RouteError(e.to_string())
31    }
32}