diff options
| author | Joe Carstairs <me@joeac.net> | 2024-12-12 08:28:04 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-12-12 08:28:04 +0000 |
| commit | 54894f9de9bad4fecb2a116d59a03cdd003f84c0 (patch) | |
| tree | 6ce5517cecf23d4e93d7a381a374e1fa6c810cee /schist_models/migrations/2024-08-31-084439_initial_setup | |
| parent | 8a30bcbdf9264d235bf93da3df8e170cfde53d02 (diff) | |
Moves rust workspace to root
Diffstat (limited to 'schist_models/migrations/2024-08-31-084439_initial_setup')
| -rw-r--r-- | schist_models/migrations/2024-08-31-084439_initial_setup/down.sql | 7 | ||||
| -rw-r--r-- | schist_models/migrations/2024-08-31-084439_initial_setup/up.sql | 93 |
2 files changed, 100 insertions, 0 deletions
diff --git a/schist_models/migrations/2024-08-31-084439_initial_setup/down.sql b/schist_models/migrations/2024-08-31-084439_initial_setup/down.sql new file mode 100644 index 0000000..ba65012 --- /dev/null +++ b/schist_models/migrations/2024-08-31-084439_initial_setup/down.sql @@ -0,0 +1,7 @@ +DROP TABLE accounts; +DROP TABLE account_transfers; +DROP TABLE budget_drips; +DROP TABLE categories; +DROP TABLE transaction_categorisations; +DROP TABLE category_transfers; +DROP TABLE transactions; diff --git a/schist_models/migrations/2024-08-31-084439_initial_setup/up.sql b/schist_models/migrations/2024-08-31-084439_initial_setup/up.sql new file mode 100644 index 0000000..a09bf7b --- /dev/null +++ b/schist_models/migrations/2024-08-31-084439_initial_setup/up.sql @@ -0,0 +1,93 @@ +PRAGMA foreign_keys = ON; + +CREATE TABLE accounts( + id INTEGER NOT NULL PRIMARY KEY, + name TEXT NOT NULL, + opening_balance INTEGER NOT NULL, + 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, + date TEXT NOT NULL, + quantity INTEGER NOT NULL, + FOREIGN KEY (category_id) + REFERENCES categories (id) + ON UPDATE CASCADE + ON DELETE RESTRICT, + UNIQUE(category_id, date) +); + +CREATE TABLE categories( + id INTEGER NOT NULL PRIMARY KEY, + name TEXT NOT NULL, + balance INTEGER NOT NULL, + balance_date TEXT NOT NULL, + budget_period INTEGER NOT NULL, + budget_period_unit TEXT NOT NULL, + budget_quantity INTEGER NOT NULL +); + +CREATE TABLE category_transfers( + id INTEGER NOT NULL PRIMARY KEY, + description TEXT NOT NULL, + quantity INTEGER NOT NULL, + from_category_id INTEGER NOT NULL, + to_category_id INTEGER NOT NULL, + FOREIGN KEY (from_category_id) + REFERENCES categories (id) + ON UPDATE CASCADE + ON DELETE RESTRICT, + FOREIGN KEY (to_category_id) + REFERENCES categories (id) + ON UPDATE CASCADE + ON DELETE RESTRICT +); + +CREATE TABLE transactions( + id INTEGER NOT NULL PRIMARY KEY, + description TEXT NOT NULL, + payee TEXT NOT NULL, + quantity INTEGER NOT NULL, + date TEXT NOT NULL, + account_id INTEGER NOT NULL, + FOREIGN KEY (account_id) + REFERENCES accounts (id) + ON UPDATE CASCADE + ON DELETE RESTRICT +); + +CREATE TABLE transaction_categorisations( + id INTEGER NOT NULL PRIMARY KEY, + description TEXT NOT NULL, + quantity INTEGER NOT NULL, + transaction_id INTEGER NOT NULL, + category_id INTEGER NOT NULL, + FOREIGN KEY (transaction_id) + REFERENCES transactions (id) + ON UPDATE CASCADE + ON DELETE RESTRICT, + FOREIGN KEY (category_id) + REFERENCES categories (id) + ON UPDATE CASCADE + ON DELETE RESTRICT +); |
