1use config::{Config, ConfigError, File};
2use serde::Deserialize;
3
4use crate::{database::DatabaseConfig, jwt::JwtConfig, log::LogConfig};
5
6#[derive(Debug, Deserialize, Clone)]
7pub struct AppConfig {
8 pub server_host: String,
9 pub server_port: u16,
10 pub server_name: String,
11 pub database: Option<DatabaseConfig>,
12 pub jwt: Option<JwtConfig>,
13 pub log: Option<LogConfig>,
14}
15
16impl AppConfig {
17 pub fn from_env() -> Result<Self, ConfigError> {
18 let config = Config::builder()
19 .add_source(File::with_name("config/default"))
20 .build()?;
22
23 config.try_deserialize()
24 }
25}