summaryrefslogtreecommitdiff
path: root/backend/migrations/2024-08-31-084439_initial_setup
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-08-31 22:43:00 +0100
committerJoe Carstairs <me@joeac.net>2024-08-31 22:43:00 +0100
commit95d4db4da725b74999524a1307e5e17b434dbfeb (patch)
treee083d4d12014e78c9e2ba4414ac3cea2fe2563ff /backend/migrations/2024-08-31-084439_initial_setup
Backend
Diffstat (limited to 'backend/migrations/2024-08-31-084439_initial_setup')
-rw-r--r--backend/migrations/2024-08-31-084439_initial_setup/down.sql6
-rw-r--r--backend/migrations/2024-08-31-084439_initial_setup/up.sql66
2 files changed, 72 insertions, 0 deletions
diff --git a/backend/migrations/2024-08-31-084439_initial_setup/down.sql b/backend/migrations/2024-08-31-084439_initial_setup/down.sql
new file mode 100644
index 0000000..5e68c99
--- /dev/null
+++ b/backend/migrations/2024-08-31-084439_initial_setup/down.sql
@@ -0,0 +1,6 @@
+DROP TABLE accounts;
+DROP TABLE budget_updates;
+DROP TABLE categories;
+DROP TABLE category_transactions;
+DROP TABLE category_transfers;
+DROP TABLE transactions;
diff --git a/backend/migrations/2024-08-31-084439_initial_setup/up.sql b/backend/migrations/2024-08-31-084439_initial_setup/up.sql
new file mode 100644
index 0000000..f2461a5
--- /dev/null
+++ b/backend/migrations/2024-08-31-084439_initial_setup/up.sql
@@ -0,0 +1,66 @@
+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,
+ 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,
+ initial_budget INTEGER NOT NULL,
+ initial_period INTEGER NOT NULL
+);
+
+CREATE TABLE category_transactions(
+ id INTEGER NOT NULL PRIMARY KEY,
+ description TEXT NOT NULL,
+ quantity INTEGER NOT NULL,
+ category_id INTEGER NOT NULL,
+ FOREIGN KEY (category_id)
+ REFERENCES categories (id)
+ ON UPDATE CASCADE
+ ON DELETE RESTRICT
+);
+
+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,
+ account_id INTEGER NOT NULL,
+ FOREIGN KEY (account_id)
+ REFERENCES accounts (id)
+ ON UPDATE CASCADE
+ ON DELETE RESTRICT
+);