From c3a93377d93bf027e27473c03db156ebfd8cba0f Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Sat, 11 Dec 2021 21:55:33 +0000 Subject: [PATCH] Fix schema --- http/account.go | 1 - postgres/schema/0002_budgets.sql | 10 +++ postgres/schema/0003_users.sql | 11 ++++ postgres/schema/0004_user_budgets.sql | 8 +++ postgres/schema/0005_accounts.sql | 10 +++ postgres/schema/0006_payees.sql | 9 +++ postgres/schema/0007_category-groups.sql | 9 +++ postgres/schema/0008_categories.sql | 9 +++ postgres/schema/0009_transactions.sql | 16 +++++ ...7_assignments.sql => 0010_assignments.sql} | 0 ...r-months.sql => 0011_views-for-months.sql} | 0 postgres/schema/202112021109_initial.sql | 66 ------------------- .../schema/202112072032_income-category.sql | 14 ---- .../202112072148_off-budget-accounts.sql | 5 -- 14 files changed, 82 insertions(+), 86 deletions(-) create mode 100644 postgres/schema/0002_budgets.sql create mode 100644 postgres/schema/0003_users.sql create mode 100644 postgres/schema/0004_user_budgets.sql create mode 100644 postgres/schema/0005_accounts.sql create mode 100644 postgres/schema/0006_payees.sql create mode 100644 postgres/schema/0007_category-groups.sql create mode 100644 postgres/schema/0008_categories.sql create mode 100644 postgres/schema/0009_transactions.sql rename postgres/schema/{202112071547_assignments.sql => 0010_assignments.sql} (100%) rename postgres/schema/{202112081529_views-for-months.sql => 0011_views-for-months.sql} (100%) delete mode 100644 postgres/schema/202112021109_initial.sql delete mode 100644 postgres/schema/202112072032_income-category.sql delete mode 100644 postgres/schema/202112072148_off-budget-accounts.sql diff --git a/http/account.go b/http/account.go index 3de56cf..77919de 100644 --- a/http/account.go +++ b/http/account.go @@ -15,7 +15,6 @@ type AccountData struct { } func (h *Handler) account(c *gin.Context) { - accountID := c.Param("accountid") accountUUID, err := uuid.Parse(accountID) if err != nil { diff --git a/postgres/schema/0002_budgets.sql b/postgres/schema/0002_budgets.sql new file mode 100644 index 0000000..6d7de91 --- /dev/null +++ b/postgres/schema/0002_budgets.sql @@ -0,0 +1,10 @@ +-- +goose Up +CREATE TABLE budgets ( + id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, + name text NOT NULL, + last_modification timestamp with time zone, + income_category_id uuid NOT NULL REFERENCES categories (id) DEFERRABLE +); + +-- +goose Down +DROP TABLE budgets; \ No newline at end of file diff --git a/postgres/schema/0003_users.sql b/postgres/schema/0003_users.sql new file mode 100644 index 0000000..6b7e631 --- /dev/null +++ b/postgres/schema/0003_users.sql @@ -0,0 +1,11 @@ +-- +goose Up +CREATE TABLE users ( + id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, + email text NOT NULL, + name text NOT NULL, + password text NOT NULL, + last_login timestamp with time zone +); + +-- +goose Down +DROP TABLE users; \ No newline at end of file diff --git a/postgres/schema/0004_user_budgets.sql b/postgres/schema/0004_user_budgets.sql new file mode 100644 index 0000000..4cb06e8 --- /dev/null +++ b/postgres/schema/0004_user_budgets.sql @@ -0,0 +1,8 @@ +-- +goose Up +CREATE TABLE user_budgets ( + user_id uuid NOT NULL REFERENCES users (id) ON DELETE CASCADE, + budget_id uuid NOT NULL REFERENCES budgets (id) ON DELETE CASCADE +); + +-- +goose Down +DROP TABLE user_budgets; \ No newline at end of file diff --git a/postgres/schema/0005_accounts.sql b/postgres/schema/0005_accounts.sql new file mode 100644 index 0000000..ed5fba3 --- /dev/null +++ b/postgres/schema/0005_accounts.sql @@ -0,0 +1,10 @@ +-- +goose Up +CREATE TABLE accounts ( + id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, + budget_id uuid NOT NULL REFERENCES budgets (id) ON DELETE CASCADE, + name varchar(50) NOT NULL, + on_budget boolean DEFAULT TRUE NOT NULL +); + +-- +goose Down +DROP TABLE accounts; \ No newline at end of file diff --git a/postgres/schema/0006_payees.sql b/postgres/schema/0006_payees.sql new file mode 100644 index 0000000..47013ae --- /dev/null +++ b/postgres/schema/0006_payees.sql @@ -0,0 +1,9 @@ +-- +goose Up +CREATE TABLE payees ( + id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, + budget_id uuid NOT NULL REFERENCES budgets (id) ON DELETE CASCADE, + name varchar(50) NOT NULL +); + +-- +goose Down +DROP TABLE payees; \ No newline at end of file diff --git a/postgres/schema/0007_category-groups.sql b/postgres/schema/0007_category-groups.sql new file mode 100644 index 0000000..a49575a --- /dev/null +++ b/postgres/schema/0007_category-groups.sql @@ -0,0 +1,9 @@ +-- +goose Up +CREATE TABLE category_groups ( + id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, + budget_id uuid NOT NULL REFERENCES budgets (id) ON DELETE CASCADE, + name varchar(50) NOT NULL +); + +-- +goose Down +DROP TABLE category_groups; \ No newline at end of file diff --git a/postgres/schema/0008_categories.sql b/postgres/schema/0008_categories.sql new file mode 100644 index 0000000..908f680 --- /dev/null +++ b/postgres/schema/0008_categories.sql @@ -0,0 +1,9 @@ +-- +goose Up +CREATE TABLE categories ( + id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, + category_group_id uuid NOT NULL REFERENCES category_groups (id) ON DELETE CASCADE, + name varchar(50) NOT NULL +); + +-- +goose Down +DROP TABLE categories; \ No newline at end of file diff --git a/postgres/schema/0009_transactions.sql b/postgres/schema/0009_transactions.sql new file mode 100644 index 0000000..2d5b8c4 --- /dev/null +++ b/postgres/schema/0009_transactions.sql @@ -0,0 +1,16 @@ +-- +goose Up +CREATE TABLE transactions ( + id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, + date date NOT NULL, + memo text NOT NULL, + amount decimal(12,2) NOT NULL, + account_id uuid NOT NULL REFERENCES accounts (id), + category_id uuid REFERENCES categories (id), + payee_id uuid REFERENCES payees (id) +); +ALTER TABLE "transactions" ADD FOREIGN KEY ("account_id") REFERENCES "accounts" ("id"); +ALTER TABLE "transactions" ADD FOREIGN KEY ("payee_id") REFERENCES "payees" ("id"); +ALTER TABLE "transactions" ADD FOREIGN KEY ("category_id") REFERENCES "categories" ("id"); + +-- +goose Down +DROP TABLE transactions; \ No newline at end of file diff --git a/postgres/schema/202112071547_assignments.sql b/postgres/schema/0010_assignments.sql similarity index 100% rename from postgres/schema/202112071547_assignments.sql rename to postgres/schema/0010_assignments.sql diff --git a/postgres/schema/202112081529_views-for-months.sql b/postgres/schema/0011_views-for-months.sql similarity index 100% rename from postgres/schema/202112081529_views-for-months.sql rename to postgres/schema/0011_views-for-months.sql diff --git a/postgres/schema/202112021109_initial.sql b/postgres/schema/202112021109_initial.sql deleted file mode 100644 index 9448d2a..0000000 --- a/postgres/schema/202112021109_initial.sql +++ /dev/null @@ -1,66 +0,0 @@ --- +goose Up -CREATE TABLE budgets ( - id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, - name text NOT NULL, - last_modification timestamp with time zone -); - -CREATE TABLE users ( - id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, - email text NOT NULL, - name text NOT NULL, - password text NOT NULL, - last_login timestamp with time zone -); - -CREATE TABLE user_budgets ( - user_id uuid NOT NULL REFERENCES users (id) ON DELETE CASCADE, - budget_id uuid NOT NULL REFERENCES budgets (id) ON DELETE CASCADE -); - -CREATE TABLE accounts ( - id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, - budget_id uuid NOT NULL REFERENCES budgets (id) ON DELETE CASCADE, - name varchar(50) NOT NULL -); - -CREATE TABLE payees ( - id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, - budget_id uuid NOT NULL REFERENCES budgets (id) ON DELETE CASCADE, - name varchar(50) NOT NULL -); - -CREATE TABLE category_groups ( - id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, - budget_id uuid NOT NULL REFERENCES budgets (id) ON DELETE CASCADE, - name varchar(50) NOT NULL -); - -CREATE TABLE categories ( - id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, - category_group_id uuid NOT NULL REFERENCES category_groups (id) ON DELETE CASCADE, - name varchar(50) NOT NULL -); - -CREATE TABLE transactions ( - id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, - date date NOT NULL, - memo text NOT NULL, - amount decimal(12,2) NOT NULL, - account_id uuid NOT NULL REFERENCES accounts (id), - category_id uuid REFERENCES categories (id), - payee_id uuid REFERENCES payees (id) -); -ALTER TABLE "transactions" ADD FOREIGN KEY ("account_id") REFERENCES "accounts" ("id"); -ALTER TABLE "transactions" ADD FOREIGN KEY ("payee_id") REFERENCES "payees" ("id"); -ALTER TABLE "transactions" ADD FOREIGN KEY ("category_id") REFERENCES "categories" ("id"); - --- +goose Down -DROP TABLE transactions; -DROP TABLE accounts; -DROP TABLE payees; -DROP TABLE categories; -DROP TABLE category_groups; -DROP TABLE user_budgets; -DROP TABLE budgets; -DROP TABLE users; \ No newline at end of file diff --git a/postgres/schema/202112072032_income-category.sql b/postgres/schema/202112072032_income-category.sql deleted file mode 100644 index 03fe5ce..0000000 --- a/postgres/schema/202112072032_income-category.sql +++ /dev/null @@ -1,14 +0,0 @@ --- +goose Up -ALTER TABLE budgets ADD COLUMN income_category_id uuid NULL REFERENCES categories (id); -UPDATE budgets -SET income_category_id = ( - SELECT categories.id - FROM categories - LEFT JOIN category_groups ON category_groups.id = categories.category_group_id - WHERE categories.name = 'Ready to Assign' - AND category_groups.budget_id = budgets.id -); -ALTER TABLE budgets ALTER COLUMN income_category_id SET NOT NULL; - --- +goose Down -ALTER TABLE budgets DROP COLUMN income_category_id; \ No newline at end of file diff --git a/postgres/schema/202112072148_off-budget-accounts.sql b/postgres/schema/202112072148_off-budget-accounts.sql deleted file mode 100644 index ce5762f..0000000 --- a/postgres/schema/202112072148_off-budget-accounts.sql +++ /dev/null @@ -1,5 +0,0 @@ --- +goose Up -ALTER TABLE accounts ADD COLUMN on_budget boolean DEFAULT TRUE NOT NULL; - --- +goose Down -ALTER TABLE accounts DROP COLUMN on_budget; \ No newline at end of file