use crate::include_config;
use serde::Deserialize;
mod lang_negotiation;
pub use lang_negotiation::LangNegotiation;
mod startup_banner;
pub use startup_banner::StartupBanner;
mod log_rolling;
pub use log_rolling::LogRolling;
mod log_format;
pub use log_format::LogFormat;
include_config!(SETTINGS: Settings => [
"app.name" => "PageTop App",
"app.description" => "Developed with the amazing PageTop framework.",
"app.theme" => "Basic",
"app.lang_negotiation" => "Full",
"app.startup_banner" => "Slant",
"app.welcome" => true,
"dev.pagetop_static_dir" => "",
"log.enabled" => true,
"log.tracing" => "Info",
"log.rolling" => "Stdout",
"log.path" => "log",
"log.prefix" => "tracing.log",
"log.format" => "Full",
"server.bind_address" => "localhost",
"server.bind_port" => 8080,
"server.session_lifetime" => 604_800,
]);
#[derive(Debug, Deserialize)]
pub struct Settings {
pub app: App,
pub dev: Dev,
pub log: Log,
pub server: Server,
}
#[derive(Debug, Deserialize)]
pub struct App {
pub name: String,
pub description: String,
pub theme: String,
pub language: Option<String>,
pub lang_negotiation: LangNegotiation,
pub startup_banner: StartupBanner,
pub welcome: bool,
pub run_mode: String,
}
#[derive(Debug, Deserialize)]
pub struct Dev {
pub pagetop_static_dir: String,
}
#[derive(Debug, Deserialize)]
pub struct Log {
pub enabled: bool,
pub tracing: String,
pub rolling: LogRolling,
pub path: String,
pub prefix: String,
pub format: LogFormat,
}
#[derive(Debug, Deserialize)]
pub struct Server {
pub bind_address: String,
pub bind_port: u16,
pub session_lifetime: i64,
}