summaryrefslogtreecommitdiff
path: root/importers/actualbudget/src/main.rs
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-09-09 21:54:29 +0100
committerJoe Carstairs <me@joeac.net>2024-09-09 21:54:29 +0100
commitc737b6df94eae4981bb03dda3583e24046e24865 (patch)
treefbc309d9d4e71bf145e764a230eab9421797e74b /importers/actualbudget/src/main.rs
parente0d7cd9bbf02e7d52aadfb8d56f774a8a4099adf (diff)
Adds actualbudget importer
Diffstat (limited to 'importers/actualbudget/src/main.rs')
-rw-r--r--importers/actualbudget/src/main.rs58
1 files changed, 58 insertions, 0 deletions
diff --git a/importers/actualbudget/src/main.rs b/importers/actualbudget/src/main.rs
new file mode 100644
index 0000000..5bfb7b7
--- /dev/null
+++ b/importers/actualbudget/src/main.rs
@@ -0,0 +1,58 @@
+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, &actualbudget_zero_budgets);
+ 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();
+}