pub mod models; pub mod queries; pub mod schema; pub mod transformers; use anyhow::Result; use schist_core::queries as schist_queries; use diesel::{Connection, SqliteConnection}; use 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}; fn main() -> Result<()> { let connection_src = &mut SqliteConnection::establish("in.sqlite").unwrap(); let connection_dest = &mut SqliteConnection::establish("out.sqlite").unwrap(); let actualbudget_first_transaction_date = get_first_actualbudget_transaction_date(connection_src)?; let actualbudget_accounts = get_all_actualbudget_accounts(connection_src)?; let actualbudget_categories = get_all_actualbudget_categories(connection_src)?; let actualbudget_zero_budgets = get_all_actualbudget_zero_budgets(connection_src)?; let actualbudget_category_transfers_account = get_category_transfers_account(connection_src)?; let actualbudget_transactions = get_all_actualbudget_transactions(connection_src)?; let first_transaction_date = transformers::transform_date(&actualbudget_first_transaction_date)?; let accounts = transformers::transform_accounts(&actualbudget_accounts, &first_transaction_date); let categories = transformers::transform_categories(&actualbudget_categories); let budget_updates = transformers::transform_budget_updates(&actualbudget_zero_budgets)?; let (transactions, transaction_categorisations) = transformers::transform_transactions( &actualbudget_transactions, &actualbudget_category_transfers_account, )?; let category_transfers = transformers::transform_category_transfers( &actualbudget_transactions, &actualbudget_category_transfers_account, ); schist_queries::clear::clear(connection_dest)?; schist_queries::accounts::insert_accounts(&accounts, connection_dest)?; schist_queries::categories::insert_categories(&categories, connection_dest)?; schist_queries::budget_updates::insert_budget_updates(&budget_updates, connection_dest)?; schist_queries::transactions::insert_transactions(&transactions, connection_dest)?; schist_queries::transaction_categorisations::insert_transaction_categorisations(&transaction_categorisations, connection_dest)?; schist_queries::category_transfers::insert_category_transfers(&category_transfers, connection_dest)?; Ok(()) }