summaryrefslogtreecommitdiff
path: root/internal/storage/schema.go
blob: 042c09b797877450209757428d06512af68ed7f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
);
`
}