From 54894f9de9bad4fecb2a116d59a03cdd003f84c0 Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Thu, 12 Dec 2024 08:28:04 +0000 Subject: Moves rust workspace to root --- .../src/actualbudget_transactions.rs | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 actualbudget_queries/src/actualbudget_transactions.rs (limited to 'actualbudget_queries/src/actualbudget_transactions.rs') diff --git a/actualbudget_queries/src/actualbudget_transactions.rs b/actualbudget_queries/src/actualbudget_transactions.rs new file mode 100644 index 0000000..4dc38e8 --- /dev/null +++ b/actualbudget_queries/src/actualbudget_transactions.rs @@ -0,0 +1,23 @@ +use actualbudget_models::{ActualbudgetDate, ActualbudgetTransaction}; +use actualbudget_schema::actualbudget_schema::v_transactions::{ + self as transactions_schema, + dsl::v_transactions as transactions_table, +}; +use anyhow::{Context, Result}; +use diesel::{dsl::min, result::Error, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection}; + +pub fn get_all_actualbudget_transactions(connection: &mut SqliteConnection) -> Result> { + let actualbudget_transactions = transactions_table + .select(ActualbudgetTransaction::as_select()) + .load(connection) + .with_context(|| "failed to get all Actualbudget transactions")?; + Ok(actualbudget_transactions) +} + +pub fn get_first_actualbudget_transaction_date(connection: &mut SqliteConnection) -> Result { + let date_as_int = transactions_table + .select(min(transactions_schema::date)) + .first::>(connection) + .map_or_else(|e| Err(e), |o| o.map_or_else(|| Err(Error::NotFound), |i| Ok(i)))?; + Ok(ActualbudgetDate::from_i32(date_as_int)) +} -- cgit v1.2.3