refactor: move config structs to config module
Diff
src/config.rs | 37 +++++++++++++++++++++++++++++++++++++
src/main.rs | 43 ++++++-------------------------------------
2 files changed, 43 insertions(+), 37 deletions(-)
@@ -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, #[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,
}
@@ -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, #[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 <ServerConfig as jealousy::FromEnv>::from_env() {
Ok(config) => {
let run_config = RunningConfig {