1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
use anyhow::Result;
use diesel::SqliteConnection;
use schist_models::{
account::Account, account_transfer::AccountTransfer, budget_drip::BudgetDrip, category::Category, category_transfer::CategoryTransfer, date_utc::DateUtc, transaction::Transaction, transaction_categorisation::TransactionCategorisation
};
pub struct SchistState {
pub first_transaction_date: DateUtc,
pub accounts: Vec<Account>,
pub account_transfers: Vec<AccountTransfer>,
pub categories: Vec<Category>,
pub budget_drips: Vec<BudgetDrip>,
pub transactions: Vec<Transaction>,
pub transaction_categorisations: Vec<TransactionCategorisation>,
pub category_transfers: Vec<CategoryTransfer>,
}
pub fn export_schist_state(schist_state: &SchistState, schist_connection: &mut SqliteConnection) -> Result<()> {
schist_queries::clear::clear(schist_connection)?;
schist_queries::accounts::insert_accounts(&schist_state.accounts, schist_connection)?;
schist_queries::account_transfers::insert_account_transfers(&schist_state.account_transfers, schist_connection)?;
schist_queries::categories::insert_categories(&schist_state.categories, schist_connection)?;
schist_queries::budget_drips::insert_budget_drips(&schist_state.budget_drips, schist_connection)?;
schist_queries::transactions::insert_transactions(&schist_state.transactions, schist_connection)?;
schist_queries::transaction_categorisations::insert_transaction_categorisations(&schist_state.transaction_categorisations, schist_connection)?;
schist_queries::category_transfers::insert_category_transfers(&schist_state.category_transfers, schist_connection)?;
Ok(())
}
|