summaryrefslogtreecommitdiff
path: root/backend/core/src/queries/transaction_categorisations
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-10-22 07:46:43 +0100
committerJoe Carstairs <me@joeac.net>2024-10-22 07:46:43 +0100
commit5824c353f978a5b9ab9696451ee3014c6a614ffc (patch)
treebc39754ca417e84eb00b0aa9a1ae2330da0bf282 /backend/core/src/queries/transaction_categorisations
parent7adaace61a4fe983eba5ded3aaaf624ce6fb9014 (diff)
Refactors importer to use core stuff
Diffstat (limited to 'backend/core/src/queries/transaction_categorisations')
-rw-r--r--backend/core/src/queries/transaction_categorisations/delete_all.rs7
-rw-r--r--backend/core/src/queries/transaction_categorisations/insert.rs15
-rw-r--r--backend/core/src/queries/transaction_categorisations/mod.rs7
-rw-r--r--backend/core/src/queries/transaction_categorisations/sum_quantity_per_category_id.rs17
4 files changed, 46 insertions, 0 deletions
diff --git a/backend/core/src/queries/transaction_categorisations/delete_all.rs b/backend/core/src/queries/transaction_categorisations/delete_all.rs
new file mode 100644
index 0000000..e80a0ca
--- /dev/null
+++ b/backend/core/src/queries/transaction_categorisations/delete_all.rs
@@ -0,0 +1,7 @@
+use diesel::{result::Error, RunQueryDsl, SqliteConnection};
+
+use crate::schema::transaction_categorisations::dsl::transaction_categorisations;
+
+pub fn delete_all_transaction_categorisations(connection: &mut SqliteConnection) -> Result<usize, Error> {
+ diesel::delete(transaction_categorisations).execute(connection)
+}
diff --git a/backend/core/src/queries/transaction_categorisations/insert.rs b/backend/core/src/queries/transaction_categorisations/insert.rs
new file mode 100644
index 0000000..3da1c33
--- /dev/null
+++ b/backend/core/src/queries/transaction_categorisations/insert.rs
@@ -0,0 +1,15 @@
+use crate::{
+ models::transaction_categorisation::TransactionCategorisation,
+ schema::transaction_categorisations::dsl::transaction_categorisations as transaction_categorisations_table,
+};
+use diesel::prelude::*;
+use diesel::result::Error;
+
+pub fn insert_transaction_categorisations(
+ transaction_categorisations: &[TransactionCategorisation],
+ connection: &mut SqliteConnection,
+) -> Result<usize, Error> {
+ diesel::insert_into(transaction_categorisations_table)
+ .values(transaction_categorisations)
+ .execute(connection)
+}
diff --git a/backend/core/src/queries/transaction_categorisations/mod.rs b/backend/core/src/queries/transaction_categorisations/mod.rs
new file mode 100644
index 0000000..3664fa6
--- /dev/null
+++ b/backend/core/src/queries/transaction_categorisations/mod.rs
@@ -0,0 +1,7 @@
+mod delete_all;
+mod insert;
+mod sum_quantity_per_category_id;
+
+pub use delete_all::delete_all_transaction_categorisations;
+pub use insert::insert_transaction_categorisations;
+pub use sum_quantity_per_category_id::sum_transaction_categorisation_quantity_per_category_id;
diff --git a/backend/core/src/queries/transaction_categorisations/sum_quantity_per_category_id.rs b/backend/core/src/queries/transaction_categorisations/sum_quantity_per_category_id.rs
new file mode 100644
index 0000000..7f93e0c
--- /dev/null
+++ b/backend/core/src/queries/transaction_categorisations/sum_quantity_per_category_id.rs
@@ -0,0 +1,17 @@
+use crate::schema::transaction_categorisations::{
+ self as transaction_categorisations_schema,
+ dsl::transaction_categorisations as transaction_categorisations_table,
+};
+use diesel::{dsl::sum, result::Error, QueryDsl, RunQueryDsl, SqliteConnection};
+
+pub fn sum_transaction_categorisation_quantity_per_category_id(
+ connection: &mut SqliteConnection,
+) -> Result<Vec<(i32, Option<i64>)>, Error> {
+ 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)
+}