···11+CREATE TABLE profiles (
22+ did TEXT PRIMARY KEY,
33+ display_name TEXT,
44+ default_nick TEXT,
55+ status TEXT,
66+ avatar_cid TEXT,
77+ avatar_mime TEXT,
88+ color INTEGER CHECK (color BETWEEN 0 and 16777215),
99+ uri TEXT NOT NULL UNIQUE,
1010+ cid TEXT NOT NULL,
1111+ indexed_at TIMESTAMPTZ NOT NULL DEFAULT now()
1212+);
1313+1414+CREATE TABLE did_handle (
1515+ handle TEXT PRIMARY KEY,
1616+ did TEXT NOT NULL UNIQUE,
1717+ indexed_at TIMESTAMPTZ NOT NULL DEFAULT now()
1818+);
1919+120CREATE TABLE channels (
221 uri TEXT PRIMARY KEY,
322 cid TEXT NOT NULL,
···726 topic TEXT,
827 created_at TIMESTAMPTZ NOT NULL,
928 indexed_at TIMESTAMPTZ NOT NULL DEFAULT now()
1010-);2929+);
3030+3131+CREATE TABLE signets (
3232+ uri TEXT PRIMARY KEY,
3333+ did TEXT NOT NULL,
3434+ channel_uri TEXT NOT NULL,
3535+ FOREIGN KEY (channel_uri) REFERENCES channels(uri) ON DELETE CASCADE,
3636+ message_id INTEGER CHECK (message_id BETWEEN 0 AND 4294967295),
3737+ cid TEXT NOT NULL,
3838+ indexed_at TIMESTAMPTZ NOT NULL DEFAULT now()
3939+);
4040+4141+CREATE INDEX ON signets (channel_uri, message_id DESC);
4242+4343+CREATE TABLE messages (
4444+ uri TEXT PRIMARY KEY,
4545+ did TEXT NOT NULL,
4646+ signet_uri TEXT NOT NULL,
4747+ FOREIGN KEY (signet_uri) REFERENCES signets(uri) ON DELETE CASCADE,
4848+ body TEXT,
4949+ nick TEXT NOT NULL DEFAULT 'wanderer',
5050+ color INTEGER CHECK (color BETWEEN 0 AND 16777215),
5151+ cid TEXT NOT NULL,
5252+ indexed_at TIMESTAMPTZ NOT NULL DEFAULT now()
5353+);
5454+5555+CREATE INDEX ON messages (signet_uri);
+9-1
migrations/002_init.down.sql
···11-DROP TABLE channels;11+DROP INDEX IF EXISTS messages_signet_uri_idx;
22+DROP TABLE messages;
33+44+DROP INDEX IF EXISTS signets_channel_uri_message_id_idx;
55+DROP TABLE signets;
66+77+DROP TABLE channels;
88+DROP TABLE did_handle;
99+DROP TABLE profiles;