diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/db/payments.rs | 9 | ||||
-rw-r--r-- | src/db/utils.rs | 4 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/db/payments.rs b/src/db/payments.rs index 4a6774c..93b815f 100644 --- a/src/db/payments.rs +++ b/src/db/payments.rs @@ -61,9 +61,7 @@ pub async fn count( payment_query: &queries::Payments, ) -> Count { let mut query = r#" - SELECT - COUNT(*) AS count, - SUM(payments.cost) AS total_cost + SELECT COUNT(*), SUM(payments.cost) FROM payments INNER JOIN users ON users.id = payments.user_id INNER JOIN categories ON categories.id = payments.category_id @@ -85,8 +83,7 @@ pub async fn count( match res { Ok(count) => count, - Err(err) => { - log::error!("Error counting payments: {:?}", err); + Err(_) => { Count { count: 0, total_cost: 0, @@ -192,7 +189,7 @@ fn complete_name( ) .as_str(), ); - params.push(Box::new(name)); + params.push(Box::new(text::format_search(&name))); } } } diff --git a/src/db/utils.rs b/src/db/utils.rs index f61d20a..2ff0f13 100644 --- a/src/db/utils.rs +++ b/src/db/utils.rs @@ -2,7 +2,9 @@ use crate::model::report::Report; use tokio_rusqlite::Row; pub fn format_key_for_search(value: &str) -> String { - format!("replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(lower({}), 'à', 'a'), 'â', 'a'), 'ç', 'c'), 'è', 'e'), 'é', 'e'), 'ê', 'e'), 'ë', 'e'), 'î', 'i'), 'ï', 'i'), 'ô', 'o'), 'ù', 'u'), 'û', 'u'), 'ü', 'u')", value) + // Lower doesn’t work on accentuated letters, hence the need to remove manually accents for + // uppercase letters as well. + format!("replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(lower({}), 'à', 'a'), 'â', 'a'), 'ç', 'c'), 'è', 'e'), 'é', 'e'), 'ê', 'e'), 'ë', 'e'), 'î', 'i'), 'ï', 'i'), 'ô', 'o'), 'ù', 'u'), 'û', 'u'), 'ü', 'u'), 'À', 'A'), 'Â', 'A'), 'Ç', 'C'), 'È', 'E'), 'É', 'E'), 'Ê', 'E'), 'Ë', 'E'), 'Î', 'I'), 'Ï', 'I'), 'Ô', 'O'), 'Ù', 'U'), 'Û', 'U'), 'Ü', 'U')", value) } pub fn one<A, I: Iterator<Item = Result<A, rusqlite::Error>>>( |