use core::net::IpAddr;
use serde::{Deserialize, Serialize};
use smart_default::SmartDefault;
use std::collections::HashMap;
use std::path::PathBuf;
use terracotta::{
app::config::{HtmlTemplates, LoadingBehavior},
assets::config::Config as AssetsConfig,
stats::config::Config as StatsConfig,
};
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, SmartDefault)]
pub struct Config {
#[default(IpAddr::from([127, 0, 0, 1]))]
pub host: IpAddr,
#[default = 8000]
pub port: u16,
#[default = "log"]
pub logdir: String,
#[default = "Rustmark"]
pub title: String,
#[serde(rename = "html_templates")]
pub html: HtmlTemplates,
pub markdown: MarkdownContent,
pub assets: AssetsConfig,
pub stats: StatsConfig,
#[default(HashMap::new())]
pub users: HashMap<String, String>,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, SmartDefault)]
pub struct MarkdownContent {
#[default(LoadingBehavior::Deny)]
pub behavior: LoadingBehavior,
#[default = "html"]
pub local_path: PathBuf,
}