summaryrefslogtreecommitdiff
path: root/rust/schist_actualbudget_importer/src/actualbudget_state.rs
blob: 73698a542490d85c1ad99e500d6032124b2b4068 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use actualbudget_models::{ActualbudgetAccount, ActualbudgetCategory, ActualbudgetDate, ActualbudgetTransaction, ActualbudgetZeroBudget};
use actualbudget_queries::{actualbudget_accounts::{get_all_actualbudget_accounts, get_category_transfers_account}, actualbudget_categories::get_all_actualbudget_categories, actualbudget_transactions::{get_all_actualbudget_transactions, get_first_actualbudget_transaction_date}, actualbudget_zero_budgets::get_all_actualbudget_zero_budgets};
use anyhow::Result;
use diesel::SqliteConnection;

pub struct ActualbudgetState {
    pub actualbudget_first_transaction_date: ActualbudgetDate,
    pub actualbudget_accounts: Vec<ActualbudgetAccount>,
    pub actualbudget_categories: Vec<ActualbudgetCategory>,
    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_transaction_date: get_first_actualbudget_transaction_date(actualbudget_connection)?,
        actualbudget_accounts: get_all_actualbudget_accounts(actualbudget_connection)?,
        actualbudget_categories: get_all_actualbudget_categories(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)?,
    })
}