summaryrefslogtreecommitdiff
path: root/backend/actualbudget_importer/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'backend/actualbudget_importer/src/main.rs')
-rw-r--r--backend/actualbudget_importer/src/main.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/backend/actualbudget_importer/src/main.rs b/backend/actualbudget_importer/src/main.rs
new file mode 100644
index 0000000..cb69bb5
--- /dev/null
+++ b/backend/actualbudget_importer/src/main.rs
@@ -0,0 +1,45 @@
+pub mod models;
+pub mod queries;
+pub mod schema;
+pub mod transformers;
+
+use anyhow::Result;
+use budgeting_app_core::queries as budgeting_app_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,
+ );
+
+ budgeting_app_queries::clear::clear(connection_dest)?;
+ budgeting_app_queries::accounts::insert_accounts(&accounts, connection_dest)?;
+ budgeting_app_queries::categories::insert_categories(&categories, connection_dest)?;
+ budgeting_app_queries::budget_updates::insert_budget_updates(&budget_updates, connection_dest)?;
+ budgeting_app_queries::transactions::insert_transactions(&transactions, connection_dest)?;
+ budgeting_app_queries::transaction_categorisations::insert_transaction_categorisations(&transaction_categorisations, connection_dest)?;
+ budgeting_app_queries::category_transfers::insert_category_transfers(&category_transfers, connection_dest)?;
+
+ Ok(())
+}