Skip to main content

fraiseql_error/
observer.rs

1#[derive(Debug, thiserror::Error)]
2pub enum ObserverError {
3    #[error("Invalid condition: {message}")]
4    InvalidCondition { message: String },
5
6    #[error("Template error: {message}")]
7    TemplateError { message: String },
8
9    #[error("Action failed: {action} - {message}")]
10    ActionFailed { action: String, message: String },
11
12    #[error("Invalid configuration: {message}")]
13    InvalidConfig { message: String },
14
15    #[error("Event processing failed: {message}")]
16    ProcessingFailed { message: String },
17
18    #[error("Max retries exceeded for event {event_id}")]
19    MaxRetriesExceeded { event_id: String },
20
21    #[error("Database error: {0}")]
22    Database(#[from] sqlx::Error),
23}
24
25impl ObserverError {
26    pub const fn error_code(&self) -> &'static str {
27        match self {
28            Self::InvalidCondition { .. } => "observer_invalid_condition",
29            Self::TemplateError { .. } => "observer_template_error",
30            Self::ActionFailed { .. } => "observer_action_failed",
31            Self::InvalidConfig { .. } => "observer_invalid_config",
32            Self::ProcessingFailed { .. } => "observer_processing_failed",
33            Self::MaxRetriesExceeded { .. } => "observer_max_retries",
34            Self::Database(_) => "observer_database_error",
35        }
36    }
37}