From 8cf93f45c1cc789ae55d7b46196bc3746ad23093 Mon Sep 17 00:00:00 2001 From: holly sparkles Date: Wed, 4 Oct 2023 11:30:15 +0200 Subject: [PATCH] refactor: move config structs to config module --- src/config.rs | 37 +++++++++++++++++++++++++++++++++++++ src/main.rs | 43 ++++++------------------------------------- 2 files changed, 43 insertions(+), 37 deletions(-) create mode 100644 src/config.rs diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 0000000..b2f0909 --- /dev/null +++ b/src/config.rs @@ -0,0 +1,37 @@ +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, +} + +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, +} diff --git a/src/main.rs b/src/main.rs index fa6b0c4..71991d8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,47 +3,16 @@ use async_std::{ path::{Path, PathBuf}, }; use data::LicenseDatabase; -use jealousy::FromEnv; -use serde::Deserialize; -use std::net::Ipv4Addr; use tide::{http::mime, log, Response, Result, Server, StatusCode}; -use crate::data::Queryable; +use crate::{ + config::{RunningConfig, ServerConfig}, + data::Queryable, +}; +mod config; mod data; -#[derive(Debug, Deserialize, FromEnv, Clone)] -#[from_env(prefix = "LICENSE_API")] -struct ServerConfig { - #[serde(default = "ServerConfig::default_base_url")] - base_url: String, - database: String, - #[serde(default = "ServerConfig::default_server_ip")] - server_ip: Ipv4Addr, // TODO: IPv6 support - #[serde(default = "ServerConfig::default_server_port")] - server_port: u16, -} - -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)] -struct RunningConfig { - config: ServerConfig, - database: LicenseDatabase, -} - const ERROR_LICENSE_NOT_FOUND: &str = " is undefined. use the 'list' endpoint to see defined licenses."; @@ -51,7 +20,7 @@ const ERROR_LICENSE_NOT_FOUND: &str = async fn main() -> Result<()> { log::start(); - match ServerConfig::from_env() { + match ::from_env() { Ok(config) => { // TODO: fix the borrow issue here let run_config = RunningConfig { -- libgit2 1.7.2