Rewrite settings to result

This commit is contained in:
micialware committed 2026-08-24 18:23:29 +03:00
1 parent 8841a51897
commit 6f8adde06b
2 files changed
+48 -30

No files matched your search

+26 -12
View File
@@ -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())
}