use std::io;
use std::path::PathBuf;
use crate::servers::ServerConfig;
use crate::util::logger::LoggingConfig;
#[derive(Debug, thiserror::Error)]
pub enum ConfigError {
#[error("Error parsing configuration file {0}, {1}")]
ParseError(String, String),
#[error("Node Config file {0} IO error, {1}")]
FileIOError(String, String),
#[error("Node Configuration file not found: {0}")]
FileNotFoundError(String),
#[error("Error serializing node configuration: {0}")]
SerializationError(String),
}
impl From<io::Error> for ConfigError {
fn from(error: io::Error) -> ConfigError {
ConfigError::FileIOError(
String::from(""),
format!("Error loading config file: {}", error),
)
}
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
pub struct GlobalConfig {
pub config_file_path: Option<PathBuf>,
pub members: Option<ConfigMembers>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
pub struct ConfigMembers {
pub config_file_version: Option<u32>,
#[serde(default)]
pub server: ServerConfig,
pub logging: Option<LoggingConfig>,
}