diff options
| author | Joe Carstairs <me@joeac.net> | 2024-12-12 08:28:04 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-12-12 08:28:04 +0000 |
| commit | 54894f9de9bad4fecb2a116d59a03cdd003f84c0 (patch) | |
| tree | 6ce5517cecf23d4e93d7a381a374e1fa6c810cee /rust/schist_queries/src/transaction_categorisations.rs | |
| parent | 8a30bcbdf9264d235bf93da3df8e170cfde53d02 (diff) | |
Moves rust workspace to root
Diffstat (limited to 'rust/schist_queries/src/transaction_categorisations.rs')
| -rw-r--r-- | rust/schist_queries/src/transaction_categorisations.rs | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/rust/schist_queries/src/transaction_categorisations.rs b/rust/schist_queries/src/transaction_categorisations.rs deleted file mode 100644 index 320782d..0000000 --- a/rust/schist_queries/src/transaction_categorisations.rs +++ /dev/null @@ -1,59 +0,0 @@ -use anyhow::{Context, Result}; -use diesel::{dsl::sum, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection}; -use schist_models::transaction_categorisation::TransactionCategorisation; -use schist_schema::schema::transaction_categorisations::{ - self as transaction_categorisations_schema, - dsl::transaction_categorisations as transaction_categorisations_table, -}; - -pub fn delete_all_transaction_categorisations(connection: &mut SqliteConnection) -> Result<usize> { - let num_rows_deleted = diesel::delete(transaction_categorisations_table) - .execute(connection) - .with_context(|| "failed to delete all transaction categorisations")?; - Ok(num_rows_deleted) -} - -pub fn get_all_transaction_categorisations(connection: &mut SqliteConnection) -> Result<Vec<TransactionCategorisation>> { - let all_transaction_categorisations = transaction_categorisations_table - .select(TransactionCategorisation::as_select()) - .load(connection) - .with_context(|| "failed to get all transaction categorisations")?; - Ok(all_transaction_categorisations) -} - -pub fn insert_transaction_categorisations( - transaction_categorisations: &[TransactionCategorisation], - connection: &mut SqliteConnection, -) -> Result<usize> { - let num_rows_inserted = diesel::insert_into(transaction_categorisations_table) - .values(transaction_categorisations) - .execute(connection) - .with_context(|| insert_err_msg(&transaction_categorisations))?; - Ok(num_rows_inserted) -} - -fn insert_err_msg(transaction_categorisations: &[TransactionCategorisation]) -> String { - format!( - "failed to insert transaction categorisations: [{}]", - transaction_categorisations - .iter() - .map(|tc| tc.id.to_string()) - .collect::<Vec<String>>() - .join(", ") - ) -} - -pub fn sum_transaction_categorisation_quantity_per_category_id( - connection: &mut SqliteConnection, -) -> Result<Vec<(i32, i64)>> { - let sum = transaction_categorisations_table - .group_by(transaction_categorisations_schema::category_id) - .select(( - transaction_categorisations_schema::category_id, - sum(transaction_categorisations_schema::quantity), - )) - .load::<(i32, Option<i64>)>(connection) - .map(|vec| vec.iter().map(|(category_id, sum)| (*category_id, sum.unwrap_or(0))).collect()) - .with_context(|| "failed to sum transaction categorisation quantity per category ID")?; - Ok(sum) -} |
