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, pub actualbudget_categories: Vec, pub actualbudget_payees: Vec, pub actualbudget_zero_budgets: Vec, pub actualbudget_category_transfers_account: Option, pub actualbudget_transactions: Vec, } pub fn read_actualbudget_state(actualbudget_connection: &mut SqliteConnection) -> Result { 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)?, }) }