Rewrite settings to result
This commit is contained in:
1 parent
8841a51897
commit
6f8adde06b
2 files changed
+48
-30
No files matched your search
@@ -1,3 +1,5 @@
|
||||
use crate::notification::NotificationData;
|
||||
use crate::notification::NotificationData::{DbLoadError, DbSaveError};
|
||||
use rusqlite::Connection;
|
||||
|
||||
pub fn get_setting(key: String, connection: &Connection) -> Option<String> {
|
||||
@@ -15,13 +17,19 @@ pub fn get_setting(key: String, connection: &Connection) -> Option<String> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn set_setting(key: String, value: String, connection: &Connection) {
|
||||
let current = get_settings_list(connection);
|
||||
pub fn set_setting(
|
||||
key: String,
|
||||
value: String,
|
||||
connection: &Connection,
|
||||
) -> Result<(), NotificationData> {
|
||||
let current = get_settings_list(connection)?;
|
||||
if current.contains(&key) {
|
||||
update_settings(key, value, connection);
|
||||
update_settings(key, value, connection)?;
|
||||
} else {
|
||||
create_settings(key, value, connection);
|
||||
create_settings(key, value, connection)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn delete_settings(key: String, connection: &Connection) {
|
||||
@@ -30,16 +38,21 @@ pub fn delete_settings(key: String, connection: &Connection) {
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
fn create_settings(key: String, value: String, connection: &Connection) {
|
||||
fn create_settings(key: String, value: String, connection: &Connection) -> Result<(), NotificationData>{
|
||||
connection
|
||||
.execute(
|
||||
"INSERT into settings (id, value) VALUES (?1, ?2)",
|
||||
(key, value),
|
||||
)
|
||||
.unwrap();
|
||||
.map_err(|_| DbSaveError)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn update_settings(key: String, value: String, connection: &Connection) {
|
||||
fn update_settings(
|
||||
key: String,
|
||||
value: String,
|
||||
connection: &Connection,
|
||||
) -> Result<(), NotificationData> {
|
||||
connection
|
||||
.execute(
|
||||
"update settings
|
||||
@@ -47,11 +60,12 @@ set value = ?2
|
||||
where id = ?1",
|
||||
(key, value),
|
||||
)
|
||||
.unwrap();
|
||||
.map_err(|_| DbSaveError)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn get_settings_list(connection: &Connection) -> Vec<String> {
|
||||
let mut stmt = connection.prepare("SELECT id FROM settings").unwrap();
|
||||
let iter = stmt.query_map((), |row| row.get(0)).unwrap();
|
||||
iter.map(|row| row.unwrap()).collect()
|
||||
fn get_settings_list(connection: &Connection) -> Result<Vec<String>, NotificationData> {
|
||||
let mut stmt = connection.prepare("SELECT id FROM settings").expect("prepare stmt failed");
|
||||
let iter = stmt.query_map((), |row| row.get(0)).map_err(|_| DbLoadError)?;
|
||||
Ok(iter.map(|row| row.unwrap()).collect())
|
||||
}
|
||||
Reference in new issue
Block a user