summaryrefslogtreecommitdiff
path: root/actualbudget_to_schist_transformer/src/schist_state.rs
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-12-12 08:28:04 +0000
committerJoe Carstairs <me@joeac.net>2024-12-12 08:28:04 +0000
commit54894f9de9bad4fecb2a116d59a03cdd003f84c0 (patch)
tree6ce5517cecf23d4e93d7a381a374e1fa6c810cee /actualbudget_to_schist_transformer/src/schist_state.rs
parent8a30bcbdf9264d235bf93da3df8e170cfde53d02 (diff)
Moves rust workspace to root
Diffstat (limited to 'actualbudget_to_schist_transformer/src/schist_state.rs')
-rw-r--r--actualbudget_to_schist_transformer/src/schist_state.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/actualbudget_to_schist_transformer/src/schist_state.rs b/actualbudget_to_schist_transformer/src/schist_state.rs
new file mode 100644
index 0000000..370a0e8
--- /dev/null
+++ b/actualbudget_to_schist_transformer/src/schist_state.rs
@@ -0,0 +1,28 @@
+use anyhow::Result;
+use diesel::SqliteConnection;
+use schist_models::{
+ account::Account, account_transfer::AccountTransfer, budget_drip::BudgetDrip, category::Category, category_transfer::CategoryTransfer, date_utc::DateUtc, transaction::Transaction, transaction_categorisation::TransactionCategorisation
+};
+
+pub struct SchistState {
+ pub first_transaction_date: DateUtc,
+ pub accounts: Vec<Account>,
+ pub account_transfers: Vec<AccountTransfer>,
+ pub categories: Vec<Category>,
+ pub budget_drips: Vec<BudgetDrip>,
+ pub transactions: Vec<Transaction>,
+ pub transaction_categorisations: Vec<TransactionCategorisation>,
+ pub category_transfers: Vec<CategoryTransfer>,
+}
+
+pub fn export_schist_state(schist_state: &SchistState, schist_connection: &mut SqliteConnection) -> Result<()> {
+ schist_queries::clear::clear(schist_connection)?;
+ schist_queries::accounts::insert_accounts(&schist_state.accounts, schist_connection)?;
+ schist_queries::account_transfers::insert_account_transfers(&schist_state.account_transfers, schist_connection)?;
+ schist_queries::categories::insert_categories(&schist_state.categories, schist_connection)?;
+ schist_queries::budget_drips::insert_budget_drips(&schist_state.budget_drips, schist_connection)?;
+ schist_queries::transactions::insert_transactions(&schist_state.transactions, schist_connection)?;
+ schist_queries::transaction_categorisations::insert_transaction_categorisations(&schist_state.transaction_categorisations, schist_connection)?;
+ schist_queries::category_transfers::insert_category_transfers(&schist_state.category_transfers, schist_connection)?;
+ Ok(())
+}