#![warn(missing_docs)]
use std::{collections::HashMap, sync::Arc};
use instance::InstanceConfig;
use nitro_shared::id::{InstanceID, TemplateID};
use preferences::PrefDeser;
#[cfg(feature = "schema")]
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use template::TemplateConfig;
use user::UserConfig;
pub mod instance;
pub mod package;
pub mod preferences;
pub mod template;
pub mod user;
#[derive(Deserialize, Serialize, Default)]
#[cfg_attr(feature = "schema", derive(JsonSchema))]
#[serde(default)]
pub struct ConfigDeser {
pub users: HashMap<String, UserConfig>,
pub default_user: Option<String>,
pub instances: HashMap<InstanceID, InstanceConfig>,
pub instance_groups: HashMap<Arc<str>, Vec<InstanceID>>,
#[serde(alias = "profiles")]
pub templates: HashMap<TemplateID, TemplateConfig>,
#[serde(alias = "global_profile")]
pub base_template: Option<TemplateConfig>,
pub preferences: PrefDeser,
}