diff --git a/src/database.rs b/src/database.rs index cd5108b..59c47be 100644 --- a/src/database.rs +++ b/src/database.rs @@ -13,6 +13,7 @@ static DB: LazyLock> = LazyLock::new(Surreal::init); pub async fn establish_connection() { let database_config = DatabaseConfig::default(); + DB.connect::(database_config.address).await.unwrap(); DB.signin(Root { username: &database_config.username, diff --git a/src/lib.rs b/src/lib.rs index 94ded32..52ea8b6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,10 @@ -use std::{fs::File, io::Read}; - pub mod database; +pub mod utils; + +use utils::naive_toml_parser; + +const DATABASE_CONFIG_FILE_LOCATION: &str = "./configs/database_config.toml"; +const SERVER_CONFIG_FILE_LOCATION: &str = "./configs/server_config.toml"; #[derive(Debug)] pub struct DatabaseConfig { @@ -12,53 +16,15 @@ pub struct DatabaseConfig { } impl Default for DatabaseConfig { fn default() -> Self { - let mut database_config_file = File::open("./configs/database_config.toml").unwrap(); - let mut database_configs = String::default(); - database_config_file - .read_to_string(&mut database_configs) - .unwrap(); - let database_configs = database_configs - .lines() - .map(|line| line.trim_end()) - .collect::>(); + let (header, mut database_configs) = naive_toml_parser(DATABASE_CONFIG_FILE_LOCATION); - if database_configs[0] == "[database_config]" { + if header == "[database_config]" { Self { - address: database_configs[1] - .split_once('=') - .unwrap() - .1 - .replace('"', "") - .trim() - .to_string(), - username: database_configs[2] - .split_once('=') - .unwrap() - .1 - .replace('"', "") - .trim() - .to_string(), - password: database_configs[3] - .split_once('=') - .unwrap() - .1 - .replace('"', "") - .trim() - .to_string(), - namespace: database_configs[4] - .split_once('=') - .unwrap() - .1 - .replace('"', "") - .trim() - .to_string(), - database: database_configs[5] - .split_once('=') - .unwrap() - .1 - .replace('"', "") - .trim() - .to_string(), + database: database_configs.pop().unwrap(), + namespace: database_configs.pop().unwrap(), + password: database_configs.pop().unwrap(), + username: database_configs.pop().unwrap(), + address: database_configs.pop().unwrap(), } } else { panic!("Database Config File Must Include [database_config] at the First Line") @@ -73,24 +39,11 @@ pub struct ServerConfig { impl Default for ServerConfig { fn default() -> Self { - let mut server_config_file = File::open("./configs/server_config.toml").unwrap(); - let mut server_configs = String::default(); - server_config_file - .read_to_string(&mut server_configs) - .unwrap(); - let server_configs = server_configs - .lines() - .map(|line| line.trim_end()) - .collect::>(); - if server_configs[0] == "[server_config]" { + let (header, mut server_configs) = naive_toml_parser(SERVER_CONFIG_FILE_LOCATION); + + if header == "[server_config]" { Self { - address: server_configs[1] - .split_once('=') - .unwrap() - .1 - .replace('"', "") - .trim() - .to_string(), + address: server_configs.pop().unwrap(), } } else { panic!("Server Config File Must Include [server_config] at the First Line") diff --git a/src/utils.rs b/src/utils.rs new file mode 100644 index 0000000..4650a52 --- /dev/null +++ b/src/utils.rs @@ -0,0 +1,24 @@ +use std::{fs::File, io::Read}; + +pub fn naive_toml_parser(file_location: &str) -> (String, Vec) { + let mut toml_file = File::open(file_location).unwrap(); + let mut toml_ingredients = String::default(); + toml_file.read_to_string(&mut toml_ingredients).unwrap(); + let mut toml_ingredients = toml_ingredients.lines().collect::>(); + + let header = toml_ingredients.remove(0).trim_end().to_string(); + let parsed = toml_ingredients + .iter() + .map(|ingredient| { + ingredient + .split_once('=') + .unwrap() + .1 + .replace('"', "") + .trim() + .to_string() + }) + .collect(); + + (header, parsed) +}