use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize, Clone)]
#[serde(deny_unknown_fields)]
pub struct BootstrapConfig {
pub auto_create_default_space: bool,
pub default_space_name: String,
pub single_user_mode: bool,
}
impl Default for BootstrapConfig {
fn default() -> Self {
Self {
auto_create_default_space: true,
default_space_name: "default".to_string(),
single_user_mode: false,
}
}
}
impl BootstrapConfig {
pub fn validate(&self) -> Result<(), String> {
if self.default_space_name.is_empty() {
return Err("Default space name cannot be empty".to_string());
}
Ok(())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_bootstrap_config_default() {
let config = BootstrapConfig::default();
assert!(config.auto_create_default_space);
assert_eq!(config.default_space_name, "default");
assert!(!config.single_user_mode);
}
#[test]
fn test_bootstrap_config_validate() {
let config = BootstrapConfig::default();
assert!(config.validate().is_ok());
let invalid_config = BootstrapConfig {
default_space_name: String::new(),
..Default::default()
};
assert!(invalid_config.validate().is_err());
}
}