zero-to-axum/src/conf.rs
2025-05-22 11:57:37 -05:00

31 lines
770 B
Rust

use anyhow::Result;
use config::{Config, Environment, File};
use serde::Deserialize;
use std::{env, net::SocketAddr};
#[derive(Debug, Deserialize, Clone)]
pub struct Database {
pub url: String,
}
#[derive(Debug, Deserialize, Clone)]
#[allow(unused)]
pub struct Conf {
pub debug: bool,
pub database: Database,
pub listen: SocketAddr,
}
impl Conf {
pub fn read() -> Result<Self> {
let mode = env::var("MODE").unwrap_or_else(|_| "dev".into());
let s = Config::builder()
.add_source(File::with_name("conf/default"))
.add_source(File::with_name(&format!("conf/{}", mode)).required(false))
.add_source(Environment::with_prefix("z2a"))
.build()?;
Ok(s.try_deserialize()?)
}
}