1 parent
ecc201ef50
commit
698e3c4a1b
124 files changed
+4593
-2721
No files matched your search
+13
-23
@@ -1,4 +1,4 @@
|
||||
use rusqlite::{Connection, OptionalExtension, params};
|
||||
use crate::db::pool::{Connection, OptionalExtension, params};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
const ROLES: &[&str] = &["sent", "drafts", "trash", "junk", "archive"];
|
||||
@@ -20,11 +20,9 @@ pub fn get_role(conn: &Connection, role: &str) -> Result<Option<String>, String>
|
||||
if !valid_role(role) {
|
||||
return Err(format!("Invalid special folder role: {role}"));
|
||||
}
|
||||
conn.query_row(
|
||||
crate::queries::sqlite::queries::db_special_folders::Q_001,
|
||||
[role],
|
||||
|row| row.get(0),
|
||||
)
|
||||
conn.query_row(crate::dbq!(db_special_folders::Q_001), [role], |row| {
|
||||
row.get(0)
|
||||
})
|
||||
.optional()
|
||||
.map_err(|e| format!("Failed to read special folder {role}: {e}"))
|
||||
}
|
||||
@@ -46,27 +44,22 @@ pub fn set_role(conn: &Connection, role: &str, folder_name: Option<&str>) -> Res
|
||||
match folder_name.map(str::trim).filter(|value| !value.is_empty()) {
|
||||
Some(folder) => {
|
||||
let exists: bool = conn
|
||||
.query_row(
|
||||
crate::queries::sqlite::queries::db_special_folders::Q_002,
|
||||
[folder],
|
||||
|row| row.get(0),
|
||||
)
|
||||
.query_row(crate::dbq!(db_special_folders::Q_002), [folder], |row| {
|
||||
row.get(0)
|
||||
})
|
||||
.map_err(|e| format!("Failed to validate folder {folder}: {e}"))?;
|
||||
if !exists {
|
||||
return Err(format!("Folder does not exist: {folder}"));
|
||||
}
|
||||
conn.execute(
|
||||
crate::queries::sqlite::queries::db_special_folders::Q_003,
|
||||
crate::dbq!(db_special_folders::Q_003),
|
||||
params![role, folder],
|
||||
)
|
||||
.map_err(|e| format!("Failed to set special folder {role}: {e}"))?;
|
||||
}
|
||||
None => {
|
||||
conn.execute(
|
||||
crate::queries::sqlite::queries::db_special_folders::Q_004,
|
||||
[role],
|
||||
)
|
||||
.map_err(|e| format!("Failed to clear special folder {role}: {e}"))?;
|
||||
conn.execute(crate::dbq!(db_special_folders::Q_004), [role])
|
||||
.map_err(|e| format!("Failed to clear special folder {role}: {e}"))?;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
@@ -87,7 +80,7 @@ pub fn rename_folder_reference(
|
||||
new_name: &str,
|
||||
) -> Result<(), String> {
|
||||
conn.execute(
|
||||
crate::queries::sqlite::queries::db_special_folders::Q_005,
|
||||
crate::dbq!(db_special_folders::Q_005),
|
||||
params![new_name, old_name],
|
||||
)
|
||||
.map_err(|e| format!("Failed to update special folder reference: {e}"))?;
|
||||
@@ -95,11 +88,8 @@ pub fn rename_folder_reference(
|
||||
}
|
||||
|
||||
pub fn clear_folder_reference(conn: &Connection, folder_name: &str) -> Result<(), String> {
|
||||
conn.execute(
|
||||
crate::queries::sqlite::queries::db_special_folders::Q_006,
|
||||
[folder_name],
|
||||
)
|
||||
.map_err(|e| format!("Failed to clear special folder reference: {e}"))?;
|
||||
conn.execute(crate::dbq!(db_special_folders::Q_006), [folder_name])
|
||||
.map_err(|e| format!("Failed to clear special folder reference: {e}"))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user