aboutsummaryrefslogtreecommitdiffstats
path: root/postgres/init.sql
blob: 55bb468f4dde6ea2094eb2b40f1f3e657b315332 (plain) (blame)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
-- The following function is from Stack Overflow
-- https://stackoverflow.com/questions/18389124/simulate-create-database-if-not-exists-for-postgresql/36218838#36218838
-- User frankhommers (https://stackoverflow.com/users/971229/frankhommers)

DO
$do$
DECLARE
  _db TEXT := %s;
  _user TEXT := %s;
  _password TEXT := %s;
BEGIN
  CREATE EXTENSION IF NOT EXISTS dblink;
  IF EXISTS (SELECT 1 FROM pg_database WHERE datname = _db) THEN
    RAISE NOTICE 'Database already exists';
  ELSE
    PERFORM dblink_connect(
        'host=localhost user=' || _user ||
        ' password=' || _password ||
        ' dbname=' || current_database()
    );
    PERFORM dblink_exec('CREATE DATABASE ' || _db);
  END IF;
END
$do$;

CREATE TABLE IF NOT EXISTS users (
    id varchar,
    joined_at timestamp,
    primary key(id)
);

INSERT INTO users VALUES (
    0,
    current_timestamp
) ON CONFLICT (id) DO NOTHING;

INSERT INTO users VALUES (
    1,
    current_timestamp
) ON CONFLICT (id) DO NOTHING;

CREATE TABLE IF NOT EXISTS channels (
    id varchar,
    name varchar,
    primary key(id)
);

INSERT INTO channels VALUES(
    '267659945086812160',
    'python-general'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO channels VALUES(
    '11',
    'help-apple'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO channels VALUES(
    '12',
    'help-cherry'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO channels VALUES(
    '21',
    'ot0-hello'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO channels VALUES(
    '22',
    'ot1-world'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO channels VALUES(
    '31',
    'voice-chat-0'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO channels VALUES(
    '32',
    'code-help-voice-0'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO channels VALUES(
    '1234',
    'zebra'
) ON CONFLICT (id) DO NOTHING;

CREATE TABLE IF NOT EXISTS messages (
    id varchar,
    author_id varchar references users(id),
    is_deleted boolean,
    created_at timestamp,
    channel_id varchar references channels(id),
    primary key(id)
);

INSERT INTO messages VALUES(
    0,
    0,
    false,
    now(),
    '267659945086812160'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO messages VALUES(
    1,
    0,
    false,
    now() + INTERVAL '10 minutes,',
    '1234'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO messages VALUES(
    2,
    0,
    false,
    now(),
    '11'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO messages VALUES(
    3,
    0,
    false,
    now(),
    '12'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO messages VALUES(
    4,
    1,
    false,
    now(),
    '21'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO messages VALUES(
    5,
    1,
    false,
    now(),
    '22'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO messages VALUES(
    6,
    1,
    false,
    now(),
    '31'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO messages VALUES(
    7,
    1,
    false,
    now(),
    '32'
) ON CONFLICT (id) DO NOTHING;

INSERT INTO messages VALUES(
    8,
    1,
    true,
    now(),
    '32'
) ON CONFLICT (id) DO NOTHING;