summaryrefslogtreecommitdiff
path: root/rust
diff options
context:
space:
mode:
Diffstat (limited to 'rust')
-rw-r--r--rust/Cargo.lock27
-rw-r--r--rust/Cargo.toml1
-rw-r--r--rust/actualbudget_models/Cargo.toml7
-rw-r--r--rust/actualbudget_models/src/actualbudget_account.rs (renamed from rust/schist_actualbudget_importer/src/models/actualbudget_account.rs)2
-rw-r--r--rust/actualbudget_models/src/actualbudget_category.rs (renamed from rust/schist_actualbudget_importer/src/models/actualbudget_category.rs)2
-rw-r--r--rust/actualbudget_models/src/actualbudget_date.rs (renamed from rust/schist_actualbudget_importer/src/models/actualbudget_date.rs)0
-rw-r--r--rust/actualbudget_models/src/actualbudget_schema.rs (renamed from rust/schist_actualbudget_importer/src/schema.rs)0
-rw-r--r--rust/actualbudget_models/src/actualbudget_transaction.rs (renamed from rust/schist_actualbudget_importer/src/models/actualbudget_transaction.rs)4
-rw-r--r--rust/actualbudget_models/src/actualbudget_zero_budget.rs (renamed from rust/schist_actualbudget_importer/src/models/actualbudget_zero_budget.rs)4
-rw-r--r--rust/actualbudget_models/src/lib.rs (renamed from rust/schist_actualbudget_importer/src/models/mod.rs)1
-rw-r--r--rust/actualbudget_queries/Cargo.toml10
-rw-r--r--rust/actualbudget_queries/src/actualbudget_accounts.rs25
-rw-r--r--rust/actualbudget_queries/src/actualbudget_categories.rs (renamed from rust/schist_actualbudget_importer/src/queries/actualbudget_categories/get_all.rs)3
-rw-r--r--rust/actualbudget_queries/src/actualbudget_transactions.rs23
-rw-r--r--rust/actualbudget_queries/src/actualbudget_zero_budgets.rs12
-rw-r--r--rust/actualbudget_queries/src/lib.rs (renamed from rust/schist_actualbudget_importer/src/queries/mod.rs)0
-rw-r--r--rust/actualbudget_schema/Cargo.toml7
-rw-r--r--rust/actualbudget_schema/src/lib.rs1
-rw-r--r--rust/schist_actualbudget_importer/Cargo.toml3
-rw-r--r--rust/schist_actualbudget_importer/src/main.rs5
-rw-r--r--rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/get_all.rs6
-rw-r--r--rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/get_category_transfers_account.rs13
-rw-r--r--rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/mod.rs5
-rw-r--r--rust/schist_actualbudget_importer/src/queries/actualbudget_categories/mod.rs3
-rw-r--r--rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/get_all.rs6
-rw-r--r--rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/get_first_date.rs14
-rw-r--r--rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/mod.rs5
-rw-r--r--rust/schist_actualbudget_importer/src/queries/actualbudget_zero_budgets/get_all.rs6
-rw-r--r--rust/schist_actualbudget_importer/src/queries/actualbudget_zero_budgets/mod.rs3
-rw-r--r--rust/schist_actualbudget_importer/src/transformers.rs40
30 files changed, 156 insertions, 82 deletions
diff --git a/rust/Cargo.lock b/rust/Cargo.lock
index f4c8ea2..bb96e98 100644
--- a/rust/Cargo.lock
+++ b/rust/Cargo.lock
@@ -6,8 +6,9 @@ version = 3
name = "actualbudget_importer"
version = "0.1.0"
dependencies = [
+ "actualbudget_models",
+ "actualbudget_queries",
"anyhow",
- "chrono",
"diesel",
"libsqlite3-sys",
"schist_models",
@@ -15,6 +16,30 @@ dependencies = [
]
[[package]]
+name = "actualbudget_models"
+version = "0.1.0"
+dependencies = [
+ "diesel",
+]
+
+[[package]]
+name = "actualbudget_queries"
+version = "0.1.0"
+dependencies = [
+ "actualbudget_models",
+ "actualbudget_schema",
+ "anyhow",
+ "diesel",
+]
+
+[[package]]
+name = "actualbudget_schema"
+version = "0.1.0"
+dependencies = [
+ "actualbudget_models",
+]
+
+[[package]]
name = "addr2line"
version = "0.24.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/rust/Cargo.toml b/rust/Cargo.toml
index 499747d..9c7ac98 100644
--- a/rust/Cargo.toml
+++ b/rust/Cargo.toml
@@ -1,5 +1,6 @@
[workspace]
members = [
+ "actualbudget_models", "actualbudget_queries", "actualbudget_schema",
"schist_actualbudget_importer",
"schist_backend",
"schist_fakes",
diff --git a/rust/actualbudget_models/Cargo.toml b/rust/actualbudget_models/Cargo.toml
new file mode 100644
index 0000000..83d3093
--- /dev/null
+++ b/rust/actualbudget_models/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "actualbudget_models"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+diesel = { workspace = true, features = ["sqlite"] }
diff --git a/rust/schist_actualbudget_importer/src/models/actualbudget_account.rs b/rust/actualbudget_models/src/actualbudget_account.rs
index b3d00ac..9f058cd 100644
--- a/rust/schist_actualbudget_importer/src/models/actualbudget_account.rs
+++ b/rust/actualbudget_models/src/actualbudget_account.rs
@@ -1,7 +1,7 @@
use diesel::prelude::{Queryable, Selectable};
#[derive(Queryable, Selectable)]
-#[diesel(table_name = crate::schema::accounts)]
+#[diesel(table_name = crate::actualbudget_schema::accounts)]
pub struct ActualbudgetAccount {
pub id: String,
pub name: String,
diff --git a/rust/schist_actualbudget_importer/src/models/actualbudget_category.rs b/rust/actualbudget_models/src/actualbudget_category.rs
index cbea99b..8702f19 100644
--- a/rust/schist_actualbudget_importer/src/models/actualbudget_category.rs
+++ b/rust/actualbudget_models/src/actualbudget_category.rs
@@ -1,7 +1,7 @@
use diesel::{prelude::Queryable, Selectable};
#[derive(Queryable, Selectable)]
-#[diesel(table_name = crate::schema::categories)]
+#[diesel(table_name = crate::actualbudget_schema::categories)]
pub struct ActualbudgetCategory {
pub id: String,
pub name: String,
diff --git a/rust/schist_actualbudget_importer/src/models/actualbudget_date.rs b/rust/actualbudget_models/src/actualbudget_date.rs
index bef160c..bef160c 100644
--- a/rust/schist_actualbudget_importer/src/models/actualbudget_date.rs
+++ b/rust/actualbudget_models/src/actualbudget_date.rs
diff --git a/rust/schist_actualbudget_importer/src/schema.rs b/rust/actualbudget_models/src/actualbudget_schema.rs
index a872231..a872231 100644
--- a/rust/schist_actualbudget_importer/src/schema.rs
+++ b/rust/actualbudget_models/src/actualbudget_schema.rs
diff --git a/rust/schist_actualbudget_importer/src/models/actualbudget_transaction.rs b/rust/actualbudget_models/src/actualbudget_transaction.rs
index be2ca1a..2b2f67b 100644
--- a/rust/schist_actualbudget_importer/src/models/actualbudget_transaction.rs
+++ b/rust/actualbudget_models/src/actualbudget_transaction.rs
@@ -1,9 +1,9 @@
use diesel::prelude::{Identifiable, Queryable, QueryableByName, Selectable};
-use crate::models::actualbudget_date::ActualbudgetDate;
+use crate::actualbudget_date::ActualbudgetDate;
#[derive(Identifiable, QueryableByName, Queryable, Selectable, Clone)]
-#[diesel(table_name = crate::schema::transactions)]
+#[diesel(table_name = crate::actualbudget_schema::transactions)]
pub struct ActualbudgetTransaction {
pub id: String,
pub is_parent: bool,
diff --git a/rust/schist_actualbudget_importer/src/models/actualbudget_zero_budget.rs b/rust/actualbudget_models/src/actualbudget_zero_budget.rs
index 6478d34..41b3443 100644
--- a/rust/schist_actualbudget_importer/src/models/actualbudget_zero_budget.rs
+++ b/rust/actualbudget_models/src/actualbudget_zero_budget.rs
@@ -1,8 +1,8 @@
-use crate::models::actualbudget_date::ActualbudgetDate;
+use crate::actualbudget_date::ActualbudgetDate;
use diesel::{prelude::{Identifiable, Queryable, QueryableByName, Selectable}, sqlite::Sqlite};
#[derive(Identifiable, QueryableByName, Queryable, Selectable, Clone)]
-#[diesel(table_name = crate::schema::zero_budgets)]
+#[diesel(table_name = crate::actualbudget_schema::zero_budgets)]
#[diesel(check_for_backend(Sqlite))]
pub struct ActualbudgetZeroBudget {
pub id: String,
diff --git a/rust/schist_actualbudget_importer/src/models/mod.rs b/rust/actualbudget_models/src/lib.rs
index 1c97c65..2fae261 100644
--- a/rust/schist_actualbudget_importer/src/models/mod.rs
+++ b/rust/actualbudget_models/src/lib.rs
@@ -1,5 +1,6 @@
pub mod actualbudget_account;
pub mod actualbudget_category;
pub mod actualbudget_date;
+pub mod actualbudget_schema;
pub mod actualbudget_transaction;
pub mod actualbudget_zero_budget;
diff --git a/rust/actualbudget_queries/Cargo.toml b/rust/actualbudget_queries/Cargo.toml
new file mode 100644
index 0000000..6108461
--- /dev/null
+++ b/rust/actualbudget_queries/Cargo.toml
@@ -0,0 +1,10 @@
+[package]
+name = "actualbudget_queries"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+actualbudget_models = { path = "../actualbudget_models" }
+actualbudget_schema = { path = "../actualbudget_schema" }
+anyhow = { workspace = true }
+diesel = { workspace = true }
diff --git a/rust/actualbudget_queries/src/actualbudget_accounts.rs b/rust/actualbudget_queries/src/actualbudget_accounts.rs
new file mode 100644
index 0000000..1d8843d
--- /dev/null
+++ b/rust/actualbudget_queries/src/actualbudget_accounts.rs
@@ -0,0 +1,25 @@
+use actualbudget_models::actualbudget_account::ActualbudgetAccount;
+use actualbudget_schema::actualbudget_schema::accounts::{
+ self as accounts_schema,
+ dsl::accounts as accounts_table,
+};
+use anyhow::{Context, Result};
+use diesel::{ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection};
+
+pub fn get_all_actualbudget_accounts(connection: &mut SqliteConnection) -> Result<Vec<ActualbudgetAccount>> {
+ let actualbudget_accounts = accounts_table
+ .select(ActualbudgetAccount::as_select())
+ .load(connection)
+ .with_context(|| "failed to get all Actualbudget accounts")?;
+ Ok(actualbudget_accounts)
+}
+
+pub fn get_category_transfers_account(connection: &mut SqliteConnection) -> Result<Option<ActualbudgetAccount>> {
+ let category_transfers_account = accounts_table
+ .filter(accounts_schema::name.eq("Category transfers"))
+ .select(ActualbudgetAccount::as_select())
+ .first(connection)
+ .optional()
+ .with_context(|| "failed to get Category Transfers account")?;
+ Ok(category_transfers_account)
+}
diff --git a/rust/schist_actualbudget_importer/src/queries/actualbudget_categories/get_all.rs b/rust/actualbudget_queries/src/actualbudget_categories.rs
index 4cb7ebc..5f33e1e 100644
--- a/rust/schist_actualbudget_importer/src/queries/actualbudget_categories/get_all.rs
+++ b/rust/actualbudget_queries/src/actualbudget_categories.rs
@@ -1,4 +1,5 @@
-use crate::{models::actualbudget_category::ActualbudgetCategory, schema::categories::dsl::categories};
+use actualbudget_models::actualbudget_category::ActualbudgetCategory;
+use actualbudget_schema::actualbudget_schema::categories::dsl::categories;
use diesel::{result::Error, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection};
pub fn get_all_actualbudget_categories(connection: &mut SqliteConnection) -> Result<Vec<ActualbudgetCategory>, Error> {
diff --git a/rust/actualbudget_queries/src/actualbudget_transactions.rs b/rust/actualbudget_queries/src/actualbudget_transactions.rs
new file mode 100644
index 0000000..44d3730
--- /dev/null
+++ b/rust/actualbudget_queries/src/actualbudget_transactions.rs
@@ -0,0 +1,23 @@
+use actualbudget_models::{actualbudget_date::ActualbudgetDate, actualbudget_transaction::ActualbudgetTransaction};
+use actualbudget_schema::actualbudget_schema::transactions::{
+ self as transactions_schema,
+ dsl::transactions as transactions_table,
+};
+use anyhow::{Context, Result};
+use diesel::{dsl::min, result::Error, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection};
+
+pub fn get_all_actualbudget_transactions(connection: &mut SqliteConnection) -> Result<Vec<ActualbudgetTransaction>> {
+ let actualbudget_transactions = transactions_table
+ .select(ActualbudgetTransaction::as_select())
+ .load(connection)
+ .with_context(|| "failed to get all Actualbudget transactions")?;
+ Ok(actualbudget_transactions)
+}
+
+pub fn get_first_actualbudget_transaction_date(connection: &mut SqliteConnection) -> Result<ActualbudgetDate> {
+ let date_as_int = transactions_table
+ .select(min(transactions_schema::date))
+ .first::<Option<i32>>(connection)
+ .map_or_else(|e| Err(e), |o| o.map_or_else(|| Err(Error::NotFound), |i| Ok(i)))?;
+ Ok(ActualbudgetDate::from_i32(date_as_int))
+}
diff --git a/rust/actualbudget_queries/src/actualbudget_zero_budgets.rs b/rust/actualbudget_queries/src/actualbudget_zero_budgets.rs
new file mode 100644
index 0000000..187fe8d
--- /dev/null
+++ b/rust/actualbudget_queries/src/actualbudget_zero_budgets.rs
@@ -0,0 +1,12 @@
+use anyhow::{Context, Result};
+use actualbudget_models::actualbudget_zero_budget::ActualbudgetZeroBudget;
+use actualbudget_schema::actualbudget_schema::zero_budgets::dsl::zero_budgets as zero_budgets_table;
+use diesel::{QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection};
+
+pub fn get_all_actualbudget_zero_budgets(connection: &mut SqliteConnection) -> Result<Vec<ActualbudgetZeroBudget>> {
+ let zero_budgets = zero_budgets_table
+ .select(ActualbudgetZeroBudget::as_select())
+ .load(connection)
+ .with_context(|| "failed to get all Actualbudget zero budgets")?;
+ Ok(zero_budgets)
+}
diff --git a/rust/schist_actualbudget_importer/src/queries/mod.rs b/rust/actualbudget_queries/src/lib.rs
index e16dafc..e16dafc 100644
--- a/rust/schist_actualbudget_importer/src/queries/mod.rs
+++ b/rust/actualbudget_queries/src/lib.rs
diff --git a/rust/actualbudget_schema/Cargo.toml b/rust/actualbudget_schema/Cargo.toml
new file mode 100644
index 0000000..58e956f
--- /dev/null
+++ b/rust/actualbudget_schema/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "actualbudget_schema"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+actualbudget_models = { path = "../actualbudget_models" }
diff --git a/rust/actualbudget_schema/src/lib.rs b/rust/actualbudget_schema/src/lib.rs
new file mode 100644
index 0000000..ef66b22
--- /dev/null
+++ b/rust/actualbudget_schema/src/lib.rs
@@ -0,0 +1 @@
+pub use actualbudget_models::actualbudget_schema;
diff --git a/rust/schist_actualbudget_importer/Cargo.toml b/rust/schist_actualbudget_importer/Cargo.toml
index ea46aa0..9afefef 100644
--- a/rust/schist_actualbudget_importer/Cargo.toml
+++ b/rust/schist_actualbudget_importer/Cargo.toml
@@ -4,8 +4,9 @@ version = "0.1.0"
edition = "2021"
[dependencies]
+actualbudget_models = { path = "../actualbudget_models" }
+actualbudget_queries = { path = "../actualbudget_queries" }
anyhow = { workspace = true }
-chrono = { workspace = true, features = ["serde"] }
diesel = { workspace = true, features = ["sqlite"] }
libsqlite3-sys = { workspace = true, features = ["bundled"] }
schist_models = { path = "../schist_models" }
diff --git a/rust/schist_actualbudget_importer/src/main.rs b/rust/schist_actualbudget_importer/src/main.rs
index ebf5353..2236f73 100644
--- a/rust/schist_actualbudget_importer/src/main.rs
+++ b/rust/schist_actualbudget_importer/src/main.rs
@@ -1,13 +1,10 @@
-pub mod models;
-pub mod queries;
-pub mod schema;
pub mod transformers;
use anyhow::Result;
use schist_models::{account::Account, budget_update::BudgetUpdate, category::Category, category_transfer::CategoryTransfer, transaction::Transaction, transaction_categorisation::TransactionCategorisation};
use schist_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};
+use actualbudget_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();
diff --git a/rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/get_all.rs b/rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/get_all.rs
deleted file mode 100644
index 6f667de..0000000
--- a/rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/get_all.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-use crate::{models::actualbudget_account::ActualbudgetAccount, schema::accounts::dsl::accounts};
-use diesel::{result::Error, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection};
-
-pub fn get_all_actualbudget_accounts(connection: &mut SqliteConnection) -> Result<Vec<ActualbudgetAccount>, Error> {
- accounts.select(ActualbudgetAccount::as_select()).load(connection)
-}
diff --git a/rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/get_category_transfers_account.rs b/rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/get_category_transfers_account.rs
deleted file mode 100644
index f05dc78..0000000
--- a/rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/get_category_transfers_account.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use diesel::{result::Error, ExpressionMethods, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection};
-
-use crate::{models::actualbudget_account::ActualbudgetAccount, schema::accounts::{
- self as accounts_schema,
- dsl::accounts as accounts_table,
-}};
-
-pub fn get_category_transfers_account(connection: &mut SqliteConnection) -> Result<ActualbudgetAccount, Error> {
- accounts_table
- .filter(accounts_schema::name.eq("Category transfers"))
- .select(ActualbudgetAccount::as_select())
- .first(connection)
-}
diff --git a/rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/mod.rs b/rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/mod.rs
deleted file mode 100644
index c6d6015..0000000
--- a/rust/schist_actualbudget_importer/src/queries/actualbudget_accounts/mod.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-mod get_all;
-mod get_category_transfers_account;
-
-pub use get_all::get_all_actualbudget_accounts;
-pub use get_category_transfers_account::get_category_transfers_account;
diff --git a/rust/schist_actualbudget_importer/src/queries/actualbudget_categories/mod.rs b/rust/schist_actualbudget_importer/src/queries/actualbudget_categories/mod.rs
deleted file mode 100644
index 0c04e53..0000000
--- a/rust/schist_actualbudget_importer/src/queries/actualbudget_categories/mod.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-mod get_all;
-
-pub use get_all::get_all_actualbudget_categories;
diff --git a/rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/get_all.rs b/rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/get_all.rs
deleted file mode 100644
index 84c8d08..0000000
--- a/rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/get_all.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-use crate::{models::actualbudget_transaction::ActualbudgetTransaction, schema::transactions::dsl::transactions};
-use diesel::{result::Error, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection};
-
-pub fn get_all_actualbudget_transactions(connection: &mut SqliteConnection) -> Result<Vec<ActualbudgetTransaction>, Error> {
- transactions.select(ActualbudgetTransaction::as_select()).load(connection)
-}
diff --git a/rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/get_first_date.rs b/rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/get_first_date.rs
deleted file mode 100644
index b958c37..0000000
--- a/rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/get_first_date.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-use anyhow::Result;
-use crate::{models::actualbudget_date::ActualbudgetDate, schema::transactions::{
- self as transactions_schema,
- dsl::transactions as transactions_table,
-}};
-use diesel::{dsl::min, result::Error, QueryDsl, RunQueryDsl, SqliteConnection};
-
-pub fn get_first_actualbudget_transaction_date(connection: &mut SqliteConnection) -> Result<ActualbudgetDate> {
- let date_as_int = transactions_table
- .select(min(transactions_schema::date))
- .first::<Option<i32>>(connection)
- .map_or_else(|e| Err(e), |o| o.map_or_else(|| Err(Error::NotFound), |i| Ok(i)))?;
- Ok(ActualbudgetDate::from_i32(date_as_int))
-}
diff --git a/rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/mod.rs b/rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/mod.rs
deleted file mode 100644
index b4ed0dd..0000000
--- a/rust/schist_actualbudget_importer/src/queries/actualbudget_transactions/mod.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-mod get_all;
-mod get_first_date;
-
-pub use get_all::get_all_actualbudget_transactions;
-pub use get_first_date::get_first_actualbudget_transaction_date;
diff --git a/rust/schist_actualbudget_importer/src/queries/actualbudget_zero_budgets/get_all.rs b/rust/schist_actualbudget_importer/src/queries/actualbudget_zero_budgets/get_all.rs
deleted file mode 100644
index 0c3f695..0000000
--- a/rust/schist_actualbudget_importer/src/queries/actualbudget_zero_budgets/get_all.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-use crate::{models::actualbudget_zero_budget::ActualbudgetZeroBudget, schema::zero_budgets::dsl::zero_budgets};
-use diesel::{result::Error, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection};
-
-pub fn get_all_actualbudget_zero_budgets(connection: &mut SqliteConnection) -> Result<Vec<ActualbudgetZeroBudget>, Error> {
- zero_budgets.select(ActualbudgetZeroBudget::as_select()).load(connection)
-}
diff --git a/rust/schist_actualbudget_importer/src/queries/actualbudget_zero_budgets/mod.rs b/rust/schist_actualbudget_importer/src/queries/actualbudget_zero_budgets/mod.rs
deleted file mode 100644
index ba7e21b..0000000
--- a/rust/schist_actualbudget_importer/src/queries/actualbudget_zero_budgets/mod.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-mod get_all;
-
-pub use get_all::get_all_actualbudget_zero_budgets;
diff --git a/rust/schist_actualbudget_importer/src/transformers.rs b/rust/schist_actualbudget_importer/src/transformers.rs
index d1b1564..cf62608 100644
--- a/rust/schist_actualbudget_importer/src/transformers.rs
+++ b/rust/schist_actualbudget_importer/src/transformers.rs
@@ -1,3 +1,10 @@
+use actualbudget_models::{
+ actualbudget_account::ActualbudgetAccount,
+ actualbudget_category::ActualbudgetCategory,
+ actualbudget_date::ActualbudgetDate,
+ actualbudget_transaction::ActualbudgetTransaction,
+ actualbudget_zero_budget::ActualbudgetZeroBudget,
+};
use anyhow::Result;
use schist_models::{
account::Account,
@@ -12,8 +19,6 @@ use schist_models::{
use core::panic;
use std::hash::{DefaultHasher, Hash, Hasher};
-use crate::models::{actualbudget_account::ActualbudgetAccount, actualbudget_category::ActualbudgetCategory, actualbudget_date::ActualbudgetDate, actualbudget_transaction::ActualbudgetTransaction, actualbudget_zero_budget::ActualbudgetZeroBudget};
-
pub fn transform_date(actualbudget_date: &ActualbudgetDate) -> Result<DatetimeUtc> {
actualbudget_date.to_iso().parse()
}
@@ -99,14 +104,15 @@ fn get_first_zero_budget_in_category(
pub fn transform_transactions(
actualbudget_transactions: &[ActualbudgetTransaction],
- actualbudget_category_transfers_account: &ActualbudgetAccount,
+ actualbudget_category_transfers_account: &Option<ActualbudgetAccount>,
) -> Result<(Vec<Transaction>, Vec<TransactionCategorisation>)> {
let mut transactions = Vec::<Transaction>::new();
let mut transaction_categorisations = Vec::<TransactionCategorisation>::new();
let mut actualbudget_transactions = actualbudget_transactions.to_vec();
- actualbudget_transactions
- .retain(|t| t.category_id.clone() != actualbudget_category_transfers_account.id.clone());
+ actualbudget_transactions.retain(|transaction|
+ is_not_category_transfer(transaction, actualbudget_category_transfers_account)
+ );
let mut parent_actualbudget_transactions = actualbudget_transactions.to_vec();
parent_actualbudget_transactions.retain(|t| t.is_parent);
let mut child_actualbudget_transactions = actualbudget_transactions.to_vec();
@@ -170,13 +176,14 @@ pub fn transform_transactions(
pub fn transform_category_transfers(
actualbudget_transactions: &[ActualbudgetTransaction],
- actualbudget_category_transfers_account: &ActualbudgetAccount,
+ actualbudget_category_transfers_account: &Option<ActualbudgetAccount>,
) -> Vec<CategoryTransfer> {
let mut category_transfers = Vec::<CategoryTransfer>::new();
let mut actualbudget_category_transfers = actualbudget_transactions.to_vec();
- actualbudget_category_transfers
- .retain(|t| t.category_id.clone() == actualbudget_category_transfers_account.id.clone());
+ actualbudget_category_transfers.retain(|transaction|
+ is_category_transfer(transaction, actualbudget_category_transfers_account)
+ );
let mut actualbudget_parent_category_transfers = actualbudget_category_transfers.to_vec();
actualbudget_parent_category_transfers.retain(|t| t.is_parent);
let mut actualbudget_child_category_transfers = actualbudget_category_transfers.to_vec();
@@ -223,3 +230,20 @@ pub fn transform_category_transfers(
category_transfers
}
+
+fn is_category_transfer(
+ transaction: &ActualbudgetTransaction,
+ actualbudget_category_transfers_account: &Option<ActualbudgetAccount>
+) -> bool {
+ match actualbudget_category_transfers_account {
+ None => false,
+ Some(acc) => transaction.category_id.clone() == acc.id.clone(),
+ }
+}
+
+fn is_not_category_transfer(
+ transaction: &ActualbudgetTransaction,
+ actualbudget_category_transfers_account: &Option<ActualbudgetAccount>
+) -> bool {
+ !is_category_transfer(transaction, actualbudget_category_transfers_account)
+}