use jealousy::FromEnv; use serde::Deserialize; use std::net::Ipv4Addr; use crate::data::LicenseDatabase; #[derive(Debug, Deserialize, FromEnv, Clone)] #[from_env(prefix = "LICENSE_API")] pub struct ServerConfig { #[serde(default = "ServerConfig::default_base_url")] pub base_url: String, pub database: String, #[serde(default = "ServerConfig::default_server_ip")] pub server_ip: Ipv4Addr, // TODO: IPv6 support #[serde(default = "ServerConfig::default_server_port")] pub server_port: u16, pub welcome_message: Option } impl ServerConfig { fn default_base_url() -> String { String::from("/") } fn default_server_ip() -> Ipv4Addr { Ipv4Addr::new(0, 0, 0, 0) } fn default_server_port() -> u16 { 8080 } } #[derive(Debug, Clone)] pub struct RunningConfig { pub config: ServerConfig, pub database: LicenseDatabase, }