summaryrefslogtreecommitdiff
path: root/actualbudget_to_schist_transformer/src/actualbudget_state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'actualbudget_to_schist_transformer/src/actualbudget_state.rs')
-rw-r--r--actualbudget_to_schist_transformer/src/actualbudget_state.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/actualbudget_to_schist_transformer/src/actualbudget_state.rs b/actualbudget_to_schist_transformer/src/actualbudget_state.rs
new file mode 100644
index 0000000..5379b62
--- /dev/null
+++ b/actualbudget_to_schist_transformer/src/actualbudget_state.rs
@@ -0,0 +1,31 @@
+use std::cmp::min;
+
+use actualbudget_models::{ActualbudgetAccount, ActualbudgetCategory, ActualbudgetDate, ActualbudgetPayee, ActualbudgetTransaction, ActualbudgetZeroBudget};
+use actualbudget_queries::{actualbudget_accounts::{get_all_actualbudget_accounts, get_category_transfers_account}, actualbudget_categories::get_all_actualbudget_categories, actualbudget_payees::get_all_actualbudget_payees, actualbudget_transactions::{get_all_actualbudget_transactions, get_first_actualbudget_transaction_date}, actualbudget_zero_budgets::{get_all_actualbudget_zero_budgets, get_first_zero_budget_date}};
+use anyhow::Result;
+use diesel::SqliteConnection;
+
+pub struct ActualbudgetState {
+ pub actualbudget_first_activity_date: ActualbudgetDate,
+ pub actualbudget_accounts: Vec<ActualbudgetAccount>,
+ pub actualbudget_categories: Vec<ActualbudgetCategory>,
+ pub actualbudget_payees: Vec<ActualbudgetPayee>,
+ pub actualbudget_zero_budgets: Vec<ActualbudgetZeroBudget>,
+ pub actualbudget_category_transfers_account: Option<ActualbudgetAccount>,
+ pub actualbudget_transactions: Vec<ActualbudgetTransaction>,
+}
+
+pub fn read_actualbudget_state(actualbudget_connection: &mut SqliteConnection) -> Result<ActualbudgetState> {
+ Ok(ActualbudgetState {
+ actualbudget_first_activity_date: min(
+ get_first_actualbudget_transaction_date(actualbudget_connection)?,
+ get_first_zero_budget_date(actualbudget_connection)?,
+ ),
+ actualbudget_accounts: get_all_actualbudget_accounts(actualbudget_connection)?,
+ actualbudget_categories: get_all_actualbudget_categories(actualbudget_connection)?,
+ actualbudget_payees: get_all_actualbudget_payees(actualbudget_connection)?,
+ actualbudget_zero_budgets: get_all_actualbudget_zero_budgets(actualbudget_connection)?,
+ actualbudget_category_transfers_account: get_category_transfers_account(actualbudget_connection)?,
+ actualbudget_transactions: get_all_actualbudget_transactions(actualbudget_connection)?,
+ })
+}