2025-04-25 20:02:18 -07:00
|
|
|
use kordophone_db::settings::Settings as DbSettings;
|
|
|
|
|
use anyhow::Result;
|
|
|
|
|
|
2025-05-01 01:02:36 -07:00
|
|
|
pub mod keys {
|
2025-04-25 20:02:18 -07:00
|
|
|
pub static SERVER_URL: &str = "ServerURL";
|
|
|
|
|
pub static USERNAME: &str = "Username";
|
2025-05-01 01:02:36 -07:00
|
|
|
pub static TOKEN: &str = "Token";
|
2025-04-25 20:02:18 -07:00
|
|
|
}
|
|
|
|
|
|
2025-04-27 14:01:19 -07:00
|
|
|
#[derive(Debug)]
|
2025-04-28 16:06:51 -07:00
|
|
|
#[derive(Default)]
|
2025-04-25 20:02:18 -07:00
|
|
|
pub struct Settings {
|
|
|
|
|
pub server_url: Option<String>,
|
|
|
|
|
pub username: Option<String>,
|
2025-05-01 01:02:36 -07:00
|
|
|
pub token: Option<String>,
|
2025-04-25 20:02:18 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl Settings {
|
|
|
|
|
pub fn from_db(db_settings: &mut DbSettings) -> Result<Self> {
|
2025-04-27 18:07:58 -07:00
|
|
|
let server_url: Option<String> = db_settings.get(keys::SERVER_URL)?;
|
|
|
|
|
let username: Option<String> = db_settings.get(keys::USERNAME)?;
|
2025-05-01 01:02:36 -07:00
|
|
|
let token: Option<String> = db_settings.get(keys::TOKEN)?;
|
2025-04-25 20:02:18 -07:00
|
|
|
Ok(Self {
|
|
|
|
|
server_url,
|
|
|
|
|
username,
|
2025-05-01 01:02:36 -07:00
|
|
|
token,
|
2025-04-25 20:02:18 -07:00
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn save(&self, db_settings: &mut DbSettings) -> Result<()> {
|
2025-04-27 18:07:58 -07:00
|
|
|
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)?;
|
|
|
|
|
}
|
2025-05-01 01:02:36 -07:00
|
|
|
if let Some(token) = &self.token {
|
|
|
|
|
db_settings.put(keys::TOKEN, &token)?;
|
|
|
|
|
}
|
2025-04-25 20:02:18 -07:00
|
|
|
Ok(())
|
|
|
|
|
}
|
2025-04-27 18:07:58 -07:00
|
|
|
}
|
|
|
|
|
|