index : license-api-rs.git

ascending towards madness

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<String>
}

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,
}