aboutsummaryrefslogtreecommitdiff
path: root/migrations/000-leave-gorm.sql
blob: 360e2e331b4f7ea33634a7ab81dc5215aae37f68 (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
39
40
41
42
43
44
45
CREATE DOMAIN snowflake AS NUMERIC(20,0) CHECK (VALUE > 0);
CREATE DOMAIN uint AS INTEGER CHECK (VALUE >= 0);

CREATE TABLE IF NOT EXISTS guilds (
    id snowflake PRIMARY KEY,
    disabled_channels TEXT,
    fallback_channel snowflake,
    days_xp_remains INTEGER CHECK (days_xp_remains > 0) DEFAULT 90 
);

CREATE TABLE IF NOT EXISTS copaings (
    id snowflake UNIQUE,
    guild_id snowflake REFERENCES guilds(id) ON DELETE CASCADE,
    PRIMARY KEY(id, guild_id)
);

CREATE TABLE IF NOT EXISTS copaing_xps (
    copaing_id snowflake REFERENCES copaings(id) ON DELETE CASCADE,
    guild_id snowflake REFERENCES copaings(id) ON DELETE CASCADE,
    xp uint DEFAULT 0,
    created_at TIMESTAMP DEFAULT now(),
    PRIMARY KEY(copaing_id, guild_id, created_at)
);

CREATE TABLE IF NOT EXISTS xp_roles (
    xp uint,
    role snowflake,
    guild_id snowflake REFERENCES guilds(id) ON DELETE CASCADE,
    PRIMARY KEY(xp, role, guild_id)
);

CREATE TABLE IF NOT EXISTS role_react_messages (
    id SERIAL PRIMARY KEY,
    message_id snowflake,
    channel_id snowflake,
    guild_id snowflake REFERENCES guilds(id) ON DELETE CASCADE,
    note TEXT
);

CREATE TABLE IF NOT EXISTS role_reacts (
    role snowflake,
    message_id INTEGER REFERENCES role_react_messages(id) ON DELETE CASCADE,
    reaction TEXT,
    PRIMARY KEY(role, message_id, reaction)
);