diff options
Diffstat (limited to 'backend/importers/actualbudget/src/main.rs')
| -rw-r--r-- | backend/importers/actualbudget/src/main.rs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/backend/importers/actualbudget/src/main.rs b/backend/importers/actualbudget/src/main.rs new file mode 100644 index 0000000..495216e --- /dev/null +++ b/backend/importers/actualbudget/src/main.rs @@ -0,0 +1,57 @@ +pub mod getters; +pub mod inserters; +pub mod models; +pub mod transformers; + +use getters::*; +use inserters::*; +use sqlite::Connection; + +fn main() { + let connection_src = sqlite::open("in.sqlite").unwrap(); + let connection_dest = sqlite::open("out.sqlite").unwrap(); + + let actualbudget_first_transaction_date = get_first_transaction_date(&connection_src); + let actualbudget_accounts = get_accounts(&connection_src); + let actualbudget_categories = get_categories(&connection_src); + let actualbudget_zero_budgets = get_zero_budgets(&connection_src); + let actualbudget_category_transfers_account = get_category_transfers_account(&connection_src); + let actualbudget_transactions = get_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, + ); + + clear_destination(&connection_dest); + insert_accounts(&connection_dest, &accounts); + insert_categories(&connection_dest, &categories); + insert_budget_updates(&connection_dest, &budget_updates); + insert_transactions(&connection_dest, &transactions); + insert_transaction_categorisations(&connection_dest, &transaction_categorisations); + insert_category_transfers(&connection_dest, &category_transfers); +} + +fn clear_destination(connection: &Connection) { + connection + .execute( + " + delete from accounts; + delete from budget_updates; + delete from categories; + delete from transaction_categorisations; + delete from category_transfers; + delete from transactions; + ", + ) + .unwrap(); +} |
