From 5389e1a5d26fdbf2441fa5a1e101999e8449b9d1 Mon Sep 17 00:00:00 2001 From: Benjamin Chausse Date: Mon, 3 Feb 2025 01:12:45 -0500 Subject: Batman --- internal/storage/schema.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 internal/storage/schema.go (limited to 'internal/storage/schema.go') 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 +); +` +} -- cgit v1.2.3