diff options
author | Benjamin Chausse <benjamin@chausse.xyz> | 2025-02-03 01:12:45 -0500 |
---|---|---|
committer | Benjamin Chausse <benjamin@chausse.xyz> | 2025-02-03 01:12:45 -0500 |
commit | 5389e1a5d26fdbf2441fa5a1e101999e8449b9d1 (patch) | |
tree | 069cd37cb8e556c1ba3b47c3ea8576a1aa91ea2c /internal/storage/schema.go |
Batman
Diffstat (limited to 'internal/storage/schema.go')
-rw-r--r-- | internal/storage/schema.go | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/internal/storage/schema.go b/internal/storage/schema.go new file mode 100644 index 0000000..042c09b --- /dev/null +++ b/internal/storage/schema.go @@ -0,0 +1,38 @@ +package storage + +func opts() string { + return "?_foreign_keys=on&_journal_mode=WAL" +} + +func schema() string { + return ` +CREATE TABLE User ( + UserID INTEGER PRIMARY KEY AUTOINCREMENT, + Name TEXT NOT NULL, + Email TEXT NOT NULL UNIQUE +); + +CREATE TABLE Task ( + TaskID INTEGER PRIMARY KEY AUTOINCREMENT, + Title TEXT NOT NULL, + Description TEXT NOT NULL, + Due DATE NOT NULL, + Do DATE NOT NULL, + Owner INTEGER NOT NULL, + FOREIGN KEY (Owner) REFERENCES User(UserID) ON DELETE CASCADE +); + +CREATE TABLE Tag ( + TagID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + Name TEXT NOT NULL UNIQUE +); + +CREATE TABLE TaskTag ( + TaskUUID INTEGER NOT NULL, + TagID INTEGER NOT NULL, + PRIMARY KEY (TaskUUID, TagID), + FOREIGN KEY (TaskUUID) REFERENCES Task(UUID) ON DELETE CASCADE, + FOREIGN KEY (TagID) REFERENCES Tag(TagID) ON DELETE CASCADE +); +` +} |