fraiseql-error 2.0.0-beta.2

Error types for FraiseQL v2
Documentation
#[derive(Debug, thiserror::Error)]
pub enum ObserverError {
    #[error("Invalid condition: {message}")]
    InvalidCondition { message: String },

    #[error("Template error: {message}")]
    TemplateError { message: String },

    #[error("Action failed: {action} - {message}")]
    ActionFailed { action: String, message: String },

    #[error("Invalid configuration: {message}")]
    InvalidConfig { message: String },

    #[error("Event processing failed: {message}")]
    ProcessingFailed { message: String },

    #[error("Max retries exceeded for event {event_id}")]
    MaxRetriesExceeded { event_id: String },

    #[error("Database error: {0}")]
    Database(#[from] sqlx::Error),
}

impl ObserverError {
    pub const fn error_code(&self) -> &'static str {
        match self {
            Self::InvalidCondition { .. } => "observer_invalid_condition",
            Self::TemplateError { .. } => "observer_template_error",
            Self::ActionFailed { .. } => "observer_action_failed",
            Self::InvalidConfig { .. } => "observer_invalid_config",
            Self::ProcessingFailed { .. } => "observer_processing_failed",
            Self::MaxRetriesExceeded { .. } => "observer_max_retries",
            Self::Database(_) => "observer_database_error",
        }
    }
}