summaryrefslogtreecommitdiff
path: root/rust/core/migrations/2024-08-31-084439_initial_setup/up.sql
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-11-17 09:23:28 +0000
committerJoe Carstairs <me@joeac.net>2024-11-17 09:23:28 +0000
commit1ae19eb3315c40e3f9062592c27fa76c11cf626c (patch)
tree09d9ce380795971f4b50e1d4b0ca3c57c9e1db1a /rust/core/migrations/2024-08-31-084439_initial_setup/up.sql
parent1a494937021561595d0fb29e26fb707aef9e55de (diff)
Renames workspace folder
Diffstat (limited to 'rust/core/migrations/2024-08-31-084439_initial_setup/up.sql')
-rw-r--r--rust/core/migrations/2024-08-31-084439_initial_setup/up.sql71
1 files changed, 71 insertions, 0 deletions
diff --git a/rust/core/migrations/2024-08-31-084439_initial_setup/up.sql b/rust/core/migrations/2024-08-31-084439_initial_setup/up.sql
new file mode 100644
index 0000000..9038b54
--- /dev/null
+++ b/rust/core/migrations/2024-08-31-084439_initial_setup/up.sql
@@ -0,0 +1,71 @@
+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 budget_updates(
+ id INTEGER NOT NULL PRIMARY KEY,
+ category_id INTEGER NOT NULL,
+ date TEXT NOT NULL,
+ new_budget INTEGER NOT NULL,
+ new_period INTEGER NOT NULL,
+ UNIQUE (category_id, date),
+ FOREIGN KEY (category_id)
+ REFERENCES categories (id)
+ ON UPDATE CASCADE
+ ON DELETE RESTRICT
+);
+
+CREATE TABLE categories(
+ id INTEGER NOT NULL PRIMARY KEY,
+ name TEXT 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
+);