+46
-1
migrations/001_init.up.sql
+46
-1
migrations/001_init.up.sql
···
1
+
CREATE TABLE profiles (
2
+
did TEXT PRIMARY KEY,
3
+
display_name TEXT,
4
+
default_nick TEXT,
5
+
status TEXT,
6
+
avatar_cid TEXT,
7
+
avatar_mime TEXT,
8
+
color INTEGER CHECK (color BETWEEN 0 and 16777215),
9
+
uri TEXT NOT NULL UNIQUE,
10
+
cid TEXT NOT NULL,
11
+
indexed_at TIMESTAMPTZ NOT NULL DEFAULT now()
12
+
);
13
+
14
+
CREATE TABLE did_handle (
15
+
handle TEXT PRIMARY KEY,
16
+
did TEXT NOT NULL UNIQUE,
17
+
indexed_at TIMESTAMPTZ NOT NULL DEFAULT now()
18
+
);
19
+
1
20
CREATE TABLE channels (
2
21
uri TEXT PRIMARY KEY,
3
22
cid TEXT NOT NULL,
···
7
26
topic TEXT,
8
27
created_at TIMESTAMPTZ NOT NULL,
9
28
indexed_at TIMESTAMPTZ NOT NULL DEFAULT now()
10
-
);
29
+
);
30
+
31
+
CREATE TABLE signets (
32
+
uri TEXT PRIMARY KEY,
33
+
did TEXT NOT NULL,
34
+
channel_uri TEXT NOT NULL,
35
+
FOREIGN KEY (channel_uri) REFERENCES channels(uri) ON DELETE CASCADE,
36
+
message_id INTEGER CHECK (message_id BETWEEN 0 AND 4294967295),
37
+
cid TEXT NOT NULL,
38
+
indexed_at TIMESTAMPTZ NOT NULL DEFAULT now()
39
+
);
40
+
41
+
CREATE INDEX ON signets (channel_uri, message_id DESC);
42
+
43
+
CREATE TABLE messages (
44
+
uri TEXT PRIMARY KEY,
45
+
did TEXT NOT NULL,
46
+
signet_uri TEXT NOT NULL,
47
+
FOREIGN KEY (signet_uri) REFERENCES signets(uri) ON DELETE CASCADE,
48
+
body TEXT,
49
+
nick TEXT NOT NULL DEFAULT 'wanderer',
50
+
color INTEGER CHECK (color BETWEEN 0 AND 16777215),
51
+
cid TEXT NOT NULL,
52
+
indexed_at TIMESTAMPTZ NOT NULL DEFAULT now()
53
+
);
54
+
55
+
CREATE INDEX ON messages (signet_uri);
+9
-1
migrations/002_init.down.sql
+9
-1
migrations/002_init.down.sql