From c2e8252f5e963e8c68d7124742f3c1bdf61a083f Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Wed, 27 Nov 2024 19:47:36 +0000 Subject: AccountTransfer model --- .../2024-08-31-084439_initial_setup/down.sql | 1 + .../migrations/2024-08-31-084439_initial_setup/up.sql | 18 ++++++++++++++++++ rust/schist_models/src/account_transfer.rs | 15 +++++++++++++++ rust/schist_models/src/lib.rs | 1 + rust/schist_models/src/schema.rs | 12 ++++++++++++ rust/schist_models/user_data.sqlite | Bin 0 -> 45056 bytes 6 files changed, 47 insertions(+) create mode 100644 rust/schist_models/src/account_transfer.rs create mode 100644 rust/schist_models/user_data.sqlite (limited to 'rust') diff --git a/rust/schist_models/migrations/2024-08-31-084439_initial_setup/down.sql b/rust/schist_models/migrations/2024-08-31-084439_initial_setup/down.sql index b9b1675..ba65012 100644 --- a/rust/schist_models/migrations/2024-08-31-084439_initial_setup/down.sql +++ b/rust/schist_models/migrations/2024-08-31-084439_initial_setup/down.sql @@ -1,4 +1,5 @@ DROP TABLE accounts; +DROP TABLE account_transfers; DROP TABLE budget_drips; DROP TABLE categories; DROP TABLE transaction_categorisations; diff --git a/rust/schist_models/migrations/2024-08-31-084439_initial_setup/up.sql b/rust/schist_models/migrations/2024-08-31-084439_initial_setup/up.sql index a684ce7..a09bf7b 100644 --- a/rust/schist_models/migrations/2024-08-31-084439_initial_setup/up.sql +++ b/rust/schist_models/migrations/2024-08-31-084439_initial_setup/up.sql @@ -7,6 +7,24 @@ CREATE TABLE accounts( opening_date TEXT NOT NULL ); +CREATE TABLE account_transfers( + id INTEGER NOT NULL PRIMARY KEY, + date TEXT NOT NULL, + description TEXT NOT NULL, + quantity INTEGER NOT NULL, + from_account_id INTEGER NOT NULL, + to_account_id INTEGER NOT NULL, + FOREIGN KEY (from_account_id) + REFERENCES accounts (id) + ON UPDATE CASCADE + ON DELETE RESTRICT, + FOREIGN KEY (to_account_id) + REFERENCES accounts (id) + ON UPDATE CASCADE + ON DELETE RESTRICT +); + + CREATE TABLE budget_drips( id INTEGER NOT NULL PRIMARY KEY, category_id INTEGER NOT NULL, diff --git a/rust/schist_models/src/account_transfer.rs b/rust/schist_models/src/account_transfer.rs new file mode 100644 index 0000000..06c51ac --- /dev/null +++ b/rust/schist_models/src/account_transfer.rs @@ -0,0 +1,15 @@ +use derive_builder::Builder; +use diesel::prelude::{Identifiable, Insertable, Queryable, Selectable}; + +use crate::date_utc::DateUtc; + +#[derive(Builder, Queryable, Identifiable, Selectable, Debug, PartialEq, Insertable)] +#[diesel(table_name = crate::schema::account_transfers)] +pub struct AccountTransfer { + pub id: i32, + pub date: DateUtc, + pub description: String, + pub quantity: i32, + pub from_account_id: i32, + pub to_account_id: i32, +} diff --git a/rust/schist_models/src/lib.rs b/rust/schist_models/src/lib.rs index 1712c36..d9e93c4 100644 --- a/rust/schist_models/src/lib.rs +++ b/rust/schist_models/src/lib.rs @@ -1,4 +1,5 @@ pub mod account; +pub mod account_transfer; pub mod budget_drip; pub mod budget_period_unit; pub mod category; diff --git a/rust/schist_models/src/schema.rs b/rust/schist_models/src/schema.rs index 5164d07..1dd1391 100644 --- a/rust/schist_models/src/schema.rs +++ b/rust/schist_models/src/schema.rs @@ -1,5 +1,16 @@ // @generated automatically by Diesel CLI. +diesel::table! { + account_transfers (id) { + id -> Integer, + date -> Text, + description -> Text, + quantity -> Integer, + from_account_id -> Integer, + to_account_id -> Integer, + } +} + diesel::table! { accounts (id) { id -> Integer, @@ -67,6 +78,7 @@ diesel::joinable!(transaction_categorisations -> transactions (transaction_id)); diesel::joinable!(transactions -> accounts (account_id)); diesel::allow_tables_to_appear_in_same_query!( + account_transfers, accounts, budget_drips, categories, diff --git a/rust/schist_models/user_data.sqlite b/rust/schist_models/user_data.sqlite new file mode 100644 index 0000000..a428ff0 Binary files /dev/null and b/rust/schist_models/user_data.sqlite differ -- cgit v1.2.3