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, pub account_transfers: Vec, pub categories: Vec, pub budget_drips: Vec, pub transactions: Vec, pub transaction_categorisations: Vec, pub category_transfers: Vec, } 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(()) }