use crate::modules::monitoring::kube_prometheus::types::{
    AlertManagerAdditionalPromRules, AlertManagerChannelConfig, ServiceMonitor,
};

#[derive(Debug)]
pub struct PrometheusConfig {
    pub namespace: Option<String>,
    pub default_rules: bool,
    pub alert_manager: bool,
    pub node_exporter: bool,
    pub kube_state_metrics: bool,
    pub grafana: bool,
    pub prometheus_pushgateway: bool,
    pub alert_receiver_configs: Vec<AlertManagerChannelConfig>,
    pub alert_rules: Vec<AlertManagerAdditionalPromRules>,
    pub additional_service_monitors: Vec<ServiceMonitor>,
}

impl PrometheusConfig {
    pub fn new() -> Self {
        Self {
            namespace: None,
            default_rules: true,
            alert_manager: true,
            node_exporter: false,
            kube_state_metrics: false,
            grafana: true,
            prometheus_pushgateway: false,
            alert_receiver_configs: vec![],
            alert_rules: vec![],
            additional_service_monitors: vec![],
        }
    }
}
