use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct CachingConfig {
#[serde(default)]
pub enabled: bool,
pub backend: String,
pub redis_url: Option<String>,
pub rules: Vec<CacheRule>,
}
impl Default for CachingConfig {
fn default() -> Self {
Self {
enabled: false,
backend: "redis".to_string(),
redis_url: None,
rules: vec![],
}
}
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CacheRule {
pub query: String,
pub ttl_seconds: u32,
pub invalidation_triggers: Vec<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct AnalyticsConfig {
#[serde(default)]
pub enabled: bool,
pub queries: Vec<AnalyticsQuery>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct AnalyticsQuery {
pub name: String,
pub sql_source: String,
pub description: Option<String>,
}