summaryrefslogtreecommitdiff
path: root/rust/core/src/queries/transactions
diff options
context:
space:
mode:
Diffstat (limited to 'rust/core/src/queries/transactions')
-rw-r--r--rust/core/src/queries/transactions/delete_all.rs7
-rw-r--r--rust/core/src/queries/transactions/get_all.rs11
-rw-r--r--rust/core/src/queries/transactions/insert.rs15
-rw-r--r--rust/core/src/queries/transactions/mod.rs7
4 files changed, 40 insertions, 0 deletions
diff --git a/rust/core/src/queries/transactions/delete_all.rs b/rust/core/src/queries/transactions/delete_all.rs
new file mode 100644
index 0000000..43b7976
--- /dev/null
+++ b/rust/core/src/queries/transactions/delete_all.rs
@@ -0,0 +1,7 @@
+use diesel::{result::Error, RunQueryDsl, SqliteConnection};
+
+use crate::schema::transactions::dsl::transactions;
+
+pub fn delete_all_transactions(connection: &mut SqliteConnection) -> Result<usize, Error> {
+ diesel::delete(transactions).execute(connection)
+}
diff --git a/rust/core/src/queries/transactions/get_all.rs b/rust/core/src/queries/transactions/get_all.rs
new file mode 100644
index 0000000..afb87f4
--- /dev/null
+++ b/rust/core/src/queries/transactions/get_all.rs
@@ -0,0 +1,11 @@
+use anyhow::{Context, Result};
+use crate::{models::transaction::Transaction, schema::transactions::dsl::transactions as transactions_table};
+use diesel::{QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection};
+
+pub fn get_all_transactions(connection: &mut SqliteConnection) -> Result<Vec<Transaction>> {
+ let all_transactions = transactions_table
+ .select(Transaction::as_select())
+ .load(connection)
+ .with_context(|| "failed to get all category transfers")?;
+ Ok(all_transactions)
+}
diff --git a/rust/core/src/queries/transactions/insert.rs b/rust/core/src/queries/transactions/insert.rs
new file mode 100644
index 0000000..32f3dc2
--- /dev/null
+++ b/rust/core/src/queries/transactions/insert.rs
@@ -0,0 +1,15 @@
+use crate::{
+ models::transaction::Transaction,
+ schema::transactions::dsl::transactions as transactions_table,
+};
+use diesel::prelude::*;
+use diesel::result::Error;
+
+pub fn insert_transactions(
+ transactions: &[Transaction],
+ connection: &mut SqliteConnection,
+) -> Result<usize, Error> {
+ diesel::insert_into(transactions_table)
+ .values(transactions)
+ .execute(connection)
+}
diff --git a/rust/core/src/queries/transactions/mod.rs b/rust/core/src/queries/transactions/mod.rs
new file mode 100644
index 0000000..983e9af
--- /dev/null
+++ b/rust/core/src/queries/transactions/mod.rs
@@ -0,0 +1,7 @@
+mod delete_all;
+mod get_all;
+mod insert;
+
+pub use delete_all::delete_all_transactions;
+pub use get_all::get_all_transactions;
+pub use insert::insert_transactions;