use kordophone_db::settings::Settings as DbSettings; use anyhow::Result; pub mod keys { pub static SERVER_URL: &str = "ServerURL"; pub static USERNAME: &str = "Username"; pub static TOKEN: &str = "Token"; } #[derive(Debug)] #[derive(Default)] pub struct Settings { pub server_url: Option, pub username: Option, pub token: Option, } impl Settings { pub fn from_db(db_settings: &mut DbSettings) -> Result { let server_url: Option = db_settings.get(keys::SERVER_URL)?; let username: Option = db_settings.get(keys::USERNAME)?; let token: Option = db_settings.get(keys::TOKEN)?; Ok(Self { server_url, username, token, }) } pub fn save(&self, db_settings: &mut DbSettings) -> Result<()> { if let Some(server_url) = &self.server_url { db_settings.put(keys::SERVER_URL, &server_url)?; } if let Some(username) = &self.username { db_settings.put(keys::USERNAME, &username)?; } if let Some(token) = &self.token { db_settings.put(keys::TOKEN, &token)?; } Ok(()) } }