summaryrefslogtreecommitdiff
path: root/backend/importers/actualbudget/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'backend/importers/actualbudget/src/main.rs')
-rw-r--r--backend/importers/actualbudget/src/main.rs57
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();
+}