From dc55f9c0097e1c36b85d7666071b840b902920e9 Mon Sep 17 00:00:00 2001
From: Leonardo Bishop <me@leonardobishop.com>
Date: Mon, 20 Jan 2025 02:56:25 +0000
Subject: Add calendar support

---
 pkg/database/migrations/0001_initial.sql | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

(limited to 'pkg/database/migrations/0001_initial.sql')

diff --git a/pkg/database/migrations/0001_initial.sql b/pkg/database/migrations/0001_initial.sql
index eea0a73..a1f5fda 100644
--- a/pkg/database/migrations/0001_initial.sql
+++ b/pkg/database/migrations/0001_initial.sql
@@ -1,8 +1,8 @@
 -- +goose Up
 CREATE TABLE users (
     id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
-    username varchar(20) UNIQUE NOT NULL,
-    password char(60) NOT NULL
+    username varchar(20) UNIQUE NOT NULL CONSTRAINT non_blank_username CHECK(length(username) > 0),
+    password text NOT NULL CONSTRAINT valid_hash CHECK (length(password) = 60)
 );
 
 CREATE TABLE favourites (
@@ -11,7 +11,16 @@ CREATE TABLE favourites (
     event_guid uuid,
     event_id int,
     UNIQUE(user_id, event_guid, event_id),
-    CONSTRAINT chk_favourites CHECK (event_guid IS NOT NULL OR event_id IS NOT NULL),
-    FOREIGN KEY (user_id) REFERENCES users(id)
+    CONSTRAINT require_event_detail CHECK (event_guid IS NOT NULL OR event_id IS NOT NULL),
+    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
 );
 
+CREATE TABLE calendars (
+    id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
+    user_id int NOT NULL,
+    name text NOT NULL CONSTRAINT non_blank_name CHECK(length(name) > 0),
+    key text NOT NULL,
+    UNIQUE(user_id),
+    UNIQUE(name),
+    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
+);
-- 
cgit v1.2.3-70-g09d2

