use crate::serde_helpers;
use chrono::Duration;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Settings {
pub firmware: Firmware,
pub network: Network,
pub polling: Polling,
pub storage: Storage,
pub update: Update,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Firmware {
pub metadata: PathBuf,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Network {
pub server_address: String,
pub listen_socket: String,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Polling {
#[serde(with = "serde_helpers::duration")]
pub interval: Duration,
pub enabled: bool,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Storage {
pub read_only: bool,
pub runtime_settings: PathBuf,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Update {
pub download_dir: PathBuf,
pub supported_install_modes: Vec<String>,
}