//! Provider definitions and constants for LMRC Stack

/// Available server providers
pub const SERVER_PROVIDERS: &[&str] = &["hetzner"];

/// Available Kubernetes providers
pub const KUBERNETES_PROVIDERS: &[&str] = &["k3s", "kubernetes"];

/// Available database providers
pub const DATABASE_PROVIDERS: &[&str] = &["postgres"];

/// Available DNS providers
pub const DNS_PROVIDERS: &[&str] = &["cloudflare"];

/// Available Git providers
pub const GIT_PROVIDERS: &[&str] = &["gitlab"];

/// Get all available providers as a structured list
pub fn get_available_providers() -> AvailableProviders {
    AvailableProviders {
        server: SERVER_PROVIDERS.to_vec(),
        kubernetes: KUBERNETES_PROVIDERS.to_vec(),
        database: DATABASE_PROVIDERS.to_vec(),
        dns: DNS_PROVIDERS.to_vec(),
        git: GIT_PROVIDERS.to_vec(),
    }
}

/// Structured representation of available providers
#[derive(Debug, Clone)]
pub struct AvailableProviders {
    pub server: Vec<&'static str>,
    pub kubernetes: Vec<&'static str>,
    pub database: Vec<&'static str>,
    pub dns: Vec<&'static str>,
    pub git: Vec<&'static str>,
}
