summaryrefslogtreecommitdiff
path: root/migrations/2024-05-11T02-53-05_init/up.sql
blob: 2d4d8c27507e4c6c54fcdebcb63cac1a5e0210ed (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
-- Your SQL goes here
CREATE TABLE IF NOT EXISTS "channels"  (
  "id" SERIAL NOT NULL UNIQUE PRIMARY KEY,
  "alias_id" INTEGER NOT NULL UNIQUE,
  "alias_name" VARCHAR NOT NULL UNIQUE,
  "joined_at" TIMESTAMP NOT NULL DEFAULT timezone('utc', now()),
  "opted_out_at" TIMESTAMP
);

CREATE TABLE IF NOT EXISTS "users"  (
  "id" SERIAL NOT NULL UNIQUE PRIMARY KEY,
  "alias_id" INTEGER NOT NULL UNIQUE,
  "alias_name" VARCHAR NOT NULL UNIQUE,
  "joined_at" TIMESTAMP NOT NULL DEFAULT timezone('utc', now()),
  "opted_out_at" TIMESTAMP
);

CREATE TABLE IF NOT EXISTS "channel_preferences" (
  "channel_id" INTEGER NOT NULL UNIQUE PRIMARY KEY REFERENCES "channels"("id") ON DELETE CASCADE,
  "prefix" VARCHAR,
  "locale" VARCHAR
);

CREATE TABLE IF NOT EXISTS "user_rights" (
  "id" SERIAL NOT NULL UNIQUE PRIMARY KEY,
  "user_id" INTEGER NOT NULL REFERENCES "users"("id") ON DELETE CASCADE,
  "channel_id" INTEGER NOT NULL REFERENCES "channels"("id") ON DELETE CASCADE,
  "level" INTEGER NOT NULL DEFAULT 1,

  CONSTRAINT "unique_user_channel" UNIQUE ("user_id", "channel_id")
);

CREATE TABLE IF NOT EXISTS "actions" (
  "id" SERIAL NOT NULL UNIQUE PRIMARY KEY,
  "user_id" INTEGER NOT NULL REFERENCES "users"("id") ON DELETE CASCADE,
  "channel_id" INTEGER NOT NULL REFERENCES "channels"("id") ON DELETE CASCADE,
  "command" VARCHAR NOT NULL,
  "arguments" VARCHAR,
  "full_message" VARCHAR NOT NULL,
  "sent_at" TIMESTAMP NOT NULL DEFAULT timezone('utc', now())
);

CREATE TABLE IF NOT EXISTS "events" (
  "id" SERIAL NOT NULL UNIQUE PRIMARY KEY,
  "channel_id" INTEGER NOT NULL REFERENCES "channels"("id") ON DELETE CASCADE,
  "name" VARCHAR NOT NULL,
  "event_type" INTEGER NOT NULL,
  "flags" INTEGER[] NOT NULL DEFAULT ARRAY[]::INTEGER[],
  "message" VARCHAR NOT NULL
);

CREATE TABLE IF NOT EXISTS "event_subscriptions" (
  "id" SERIAL NOT NULL UNIQUE PRIMARY KEY,
  "event_id" INTEGER NOT NULL REFERENCES "events"("id") ON DELETE CASCADE,
  "user_id" INTEGER NOT NULL REFERENCES "users"("id") ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS "custom_commands" (
  "id" SERIAL NOT NULL UNIQUE PRIMARY KEY,
  "channel_id" INTEGER NOT NULL REFERENCES "channels"("id") ON DELETE CASCADE,
  "name" VARCHAR NOT NULL,
  "message" VARCHAR NOT NULL
);

CREATE TABLE IF NOT EXISTS "timers" (
  "id" SERIAL NOT NULL UNIQUE PRIMARY KEY,
  "channel_id" INTEGER NOT NULL REFERENCES "channels"("id") ON DELETE CASCADE,
  "name" VARCHAR NOT NULL,
  "message" VARCHAR NOT NULL,
  "interval_sec" INTEGER NOT NULL,
  "last_executed_at" TIMESTAMP NOT NULL DEFAULT timezone('utc', now())
);