use crate::config::Config;
use anyhow::{Context, Result};
pub fn validate_config(config: &Config) -> Result<()> {
validate_bridge_config(&config.bridge)?;
validate_auth_config(&config.auth)?;
validate_database_config(&config.database)?;
Ok(())
}
fn validate_bridge_config(bridge: &crate::config::BridgeConfig) -> Result<()> {
if bridge.domain.is_empty() {
anyhow::bail!("bridge.domain cannot be empty");
}
if bridge.homeserver_url.is_empty() {
anyhow::bail!("bridge.homeserver_url cannot be empty");
}
if bridge.port == 0 {
anyhow::bail!("bridge.port cannot be 0");
}
Ok(())
}
fn validate_auth_config(auth: &crate::config::AuthConfig) -> Result<()> {
if auth.tenant_id.is_empty() {
anyhow::bail!("auth.tenant_id cannot be empty");
}
if auth.client_id.is_empty() {
anyhow::bail!("auth.client_id cannot be empty");
}
if auth.client_secret.is_empty() {
anyhow::bail!("auth.client_secret cannot be empty");
}
Ok(())
}
fn validate_database_config(database: &crate::config::DatabaseConfig) -> Result<()> {
if database.url.is_none() && database.filename.is_none() {
anyhow::bail!("either database.url or database.filename must be set");
}
Ok(())
}