use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct KafkaIngestConfig {
pub enabled: bool,
pub brokers: Vec<String>,
pub group_id: String,
#[serde(default)]
pub topics: Vec<TopicMapping>,
pub dlq: DlqConfig,
pub processing_timeout_ms: u64,
pub max_inflight: usize,
pub lag_poll_interval_secs: u64,
}
impl Default for KafkaIngestConfig {
fn default() -> Self {
Self {
enabled: false,
brokers: vec!["localhost:9092".to_string()],
group_id: "orion".to_string(),
topics: vec![],
dlq: DlqConfig::default(),
processing_timeout_ms: 60_000,
max_inflight: 100,
lag_poll_interval_secs: 30,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TopicMapping {
pub topic: String,
pub channel: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct DlqConfig {
pub enabled: bool,
pub topic: String,
}
impl Default for DlqConfig {
fn default() -> Self {
Self {
enabled: false,
topic: "orion-dlq".to_string(),
}
}
}