use super::api_config::ApiConfig;
use myc_adapters_shared_lib::models::RedisConfig;
use myc_config::{optional_config::OptionalConfig, VaultConfig};
use myc_core::models::CoreConfig;
use myc_diesel::models::config::DieselConfig;
use myc_http_tools::models::auth_config::AuthConfig;
use myc_notifier::models::{QueueConfig, SmtpConfig};
use mycelium_base::utils::errors::MappedErrors;
use std::path::PathBuf;
#[derive(Clone)]
pub struct ConfigHandler {
pub core: CoreConfig,
pub diesel: DieselConfig,
pub api: ApiConfig,
pub auth: AuthConfig,
pub smtp: SmtpConfig,
pub queue: QueueConfig,
pub redis: RedisConfig,
pub vault: OptionalConfig<VaultConfig>,
}
impl ConfigHandler {
pub fn init_from_file(file: PathBuf) -> Result<Self, MappedErrors> {
Ok(Self {
core: CoreConfig::from_default_config_file(file.clone())?,
diesel: DieselConfig::from_default_config_file(file.clone())?,
api: ApiConfig::from_default_config_file(file.clone())?,
auth: AuthConfig::from_default_config_file(file.clone())?,
smtp: SmtpConfig::from_default_config_file(file.clone())?,
queue: QueueConfig::from_default_config_file(file.clone())?,
redis: RedisConfig::from_default_config_file(file.clone())?,
vault: VaultConfig::from_default_config_file(file.clone())?,
})
}
}