use emgauwa_common::errors::EmgauwaError;
use emgauwa_common::settings;
use serde_derive::Deserialize;

#[derive(Clone, Debug, Deserialize)]
#[serde(default)]
#[allow(unused)]
pub struct Settings {
	pub server: settings::Server,
	pub database: String,
	pub permissions: settings::Permissions,
	pub logging: settings::Logging,

	pub origins: Vec<String>,
}

impl Default for Settings {
	fn default() -> Self {
		Settings {
			server: settings::Server::default(),
			database: String::from("sqlite://emgauwa-core.sqlite"),
			permissions: settings::Permissions::default(),
			logging: settings::Logging::default(),

			origins: Vec::new(),
		}
	}
}

pub fn init() -> Result<Settings, EmgauwaError> {
	settings::load("core", "CORE")
}