use serde::Deserialize;
#[derive(Debug, Clone, Default, Deserialize, PartialEq)]
#[serde(default)]
pub struct Settings {
pub database: DatabaseSettings,
pub secret_key: Option<String>,
pub admin: AdminSettings,
pub tenancy: TenancySettings,
pub cache: CacheSettings,
pub jobs: JobsSettings,
pub mail: MailSettings,
}
#[derive(Debug, Clone, Default, Deserialize, PartialEq)]
#[serde(default)]
pub struct DatabaseSettings {
pub url: Option<String>,
pub pool_max_size: Option<u32>,
pub pool_min_size: Option<u32>,
}
#[derive(Debug, Clone, Default, Deserialize, PartialEq)]
#[serde(default)]
pub struct AdminSettings {
pub allowed_tables: Vec<String>,
pub read_only_tables: Vec<String>,
}
#[derive(Debug, Clone, Default, Deserialize, PartialEq)]
#[serde(default)]
pub struct TenancySettings {
pub apex_domain: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, PartialEq)]
#[serde(default)]
pub struct CacheSettings {
pub backend: Option<String>,
pub redis_url: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, PartialEq)]
#[serde(default)]
pub struct JobsSettings {
pub backend: Option<String>,
pub concurrency: Option<u32>,
}
#[derive(Debug, Clone, Default, Deserialize, PartialEq)]
#[serde(default)]
pub struct MailSettings {
pub backend: Option<String>,
pub smtp_host: Option<String>,
pub from_address: Option<String>,
}