use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct ObserversConfig {
#[serde(default)]
pub enabled: bool,
pub backend: String,
pub redis_url: Option<String>,
pub nats_url: Option<String>,
pub handlers: Vec<EventHandler>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub runtime: Option<toml::Value>,
}
impl Default for ObserversConfig {
fn default() -> Self {
Self {
enabled: false,
backend: "redis".to_string(),
redis_url: None,
nats_url: None,
handlers: vec![],
runtime: None,
}
}
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct EventHandler {
pub name: String,
pub event: String,
pub action: String,
pub webhook_url: Option<String>,
pub retry_strategy: Option<String>,
pub max_retries: Option<u32>,
pub description: Option<String>,
}