55 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
use config::Config;
 | 
						|
use emgauwa_lib::constants;
 | 
						|
use serde_derive::Deserialize;
 | 
						|
 | 
						|
#[derive(Clone, Debug, Deserialize)]
 | 
						|
#[serde(default)]
 | 
						|
#[allow(unused)]
 | 
						|
pub struct Logging {
 | 
						|
	pub level: String,
 | 
						|
	pub file: String,
 | 
						|
}
 | 
						|
 | 
						|
#[derive(Clone, Debug, Deserialize)]
 | 
						|
#[serde(default)]
 | 
						|
#[allow(unused)]
 | 
						|
pub struct Settings {
 | 
						|
	pub database: String,
 | 
						|
	pub port: u16,
 | 
						|
	pub host: String,
 | 
						|
	pub logging: Logging,
 | 
						|
}
 | 
						|
 | 
						|
impl Default for Settings {
 | 
						|
	fn default() -> Self {
 | 
						|
		Settings {
 | 
						|
			database: String::from("sqlite://emgauwa-core.sqlite"),
 | 
						|
			port: constants::DEFAULT_PORT,
 | 
						|
			host: String::from("127.0.0.1"),
 | 
						|
			logging: Logging::default(),
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
impl Default for Logging {
 | 
						|
	fn default() -> Self {
 | 
						|
		Logging {
 | 
						|
			level: String::from("info"),
 | 
						|
			file: String::from("stdout"),
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
pub fn init() -> Settings {
 | 
						|
	Config::builder()
 | 
						|
		.add_source(config::File::with_name("emgauwa-core"))
 | 
						|
		.add_source(
 | 
						|
			config::Environment::with_prefix("EMGAUWA_CORE")
 | 
						|
				.prefix_separator("__")
 | 
						|
				.separator("__"),
 | 
						|
		)
 | 
						|
		.build()
 | 
						|
		.unwrap()
 | 
						|
		.try_deserialize::<Settings>()
 | 
						|
		.expect("Error reading settings.")
 | 
						|
}
 |