use crate::AppConfig; impl AppConfig { pub fn app_name(&self) -> anyhow::Result { if let Some(name) = self.env.get("APP_NAME") { return Ok(name.to_string()); } Ok(env!("CARGO_PKG_NAME").to_string()) } pub fn app_version(&self) -> anyhow::Result { if let Some(version) = self.env.get("APP_VERSION") { return Ok(version.to_string()); } Ok(env!("CARGO_PKG_VERSION").to_string()) } pub fn app_description(&self) -> anyhow::Result { if let Some(description) = self.env.get("APP_DESCRIPTION") { return Ok(description.to_string()); } Ok(env!("CARGO_PKG_DESCRIPTION").to_string()) } pub fn api_port(&self) -> anyhow::Result { if let Some(port) = self.env.get("APP_API_PORT") { return Ok(port.parse::()?); } Ok(8080) } pub fn email_health_port(&self) -> u16 { self.env .get("APP_EMAIL_HEALTH_PORT") .and_then(|port| port.parse::().ok()) .unwrap_or(8083) } pub fn session_secret(&self) -> anyhow::Result { if let Some(secret) = self.env.get("APP_SESSION_SECRET") { return Ok(secret.to_string()); } Err(anyhow::anyhow!("APP_SESSION_SECRET not found")) } }