Skip to main content

server_config/
app.rs

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: 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            // 可选:后续可加 .add_source(Environment::with_prefix("APP")) 支持环境变量
21            .build()?;
22
23        config.try_deserialize()
24    }
25}