b453d5d
pub mod apihost;
pub mod auth;
pub mod chat;
pub mod database;
pub mod email;
pub mod git;
pub mod githost;
pub mod internal;
pub mod issues;
pub mod livekit;
pub mod oauth;
pub mod pow;
pub mod push;
pub mod quota;
pub mod redis;
pub mod rocketmq;
pub mod s3;
pub mod scoped;
pub mod space;
pub mod user;
pub mod web;
pub mod error;
pub mod loader;
pub use error::ConfigError;
use crate::apihost::ApihostConfig;
use crate::auth::AuthConfig;
use crate::chat::ChatConfig;
use crate::database::DatabaseConfig;
use crate::email::EmailConfig;
use crate::git::GitConfig;
use crate::githost::GithostConfig;
use crate::internal::InternalConfig;
use crate::issues::IssueConfig;
use crate::livekit::LiveKitConfig;
use crate::oauth::OAuthConfig;
use crate::pow::PowConfig;
use crate::push::PushConfig;
use crate::redis::RedisConfig;
use crate::rocketmq::RocketMqConfig;
use crate::s3::S3Config;
use crate::space::SpaceConfig;
use crate::user::UserConfig;
use crate::web::WebConfig;
use serde::Deserialize;
#[derive(Clone, Debug, Default, Deserialize)]
#[serde(default)]
pub struct AppConfig {
pub s3: S3Config,
pub redis: RedisConfig,
pub chat: ChatConfig,
pub database: DatabaseConfig,
pub pow: PowConfig,
pub auth: AuthConfig,
pub web: WebConfig,
pub user: UserConfig,
pub quota: quota::QuotaConfig,
pub space: SpaceConfig,
pub issues: IssueConfig,
pub livekit: LiveKitConfig,
pub oauth: OAuthConfig,
pub git: GitConfig,
pub email: EmailConfig,
pub apihost: ApihostConfig,
pub githost: GithostConfig,
pub rocketmq: RocketMqConfig,
pub internal: InternalConfig,
pub push: PushConfig,
}
impl AppConfig {
pub fn load() -> Result<Self, ConfigError> {
crate::loader::load_default()
}
pub fn validate(&self) -> Result<(), ConfigError> {
self.redis.validate().map_err(ConfigError::Validation)?;
self.database.validate().map_err(ConfigError::Validation)?;
self.pow.validate().map_err(ConfigError::Validation)?;
self.auth.validate().map_err(ConfigError::Validation)?;
self.chat.is_valid().map_err(ConfigError::Validation)?;
self.apihost.is_valid().map_err(ConfigError::Validation)?;
self.githost.is_valid().map_err(ConfigError::Validation)?;
self.rocketmq.is_valid().map_err(ConfigError::Validation)?;
self.internal.is_valid().map_err(ConfigError::Validation)?;
self.livekit.is_valid().map_err(ConfigError::Validation)?;
self.oauth.is_valid().map_err(ConfigError::Validation)?;
self.push.is_valid().map_err(ConfigError::Validation)?;
Ok(())
}
}