]> git.sesse.net Git - skvidarsync/blob - skvidarlang.sql
Split out find_diff() into its own function.
[skvidarsync] / skvidarlang.sql
1 CREATE TABLE applied (
2     channel VARCHAR NOT NULL,
3     ts VARCHAR NOT NULL,
4     name VARCHAR NOT NULL,
5     PRIMARY KEY (channel, ts, name)
6 );
7
8 CREATE TABLE reaction_log (
9     userid VARCHAR NOT NULL,
10     channel VARCHAR NOT NULL,
11     ts VARCHAR NOT NULL,
12     event_type VARCHAR NOT NULL,
13     event_ts VARCHAR NOT NULL,
14     reaction VARCHAR NOT NULL
15 );
16 CREATE INDEX lookup_idx ON reaction_log USING btree (channel, ts, userid, reaction, event_ts DESC);
17
18 CREATE TABLE message_sheet_link (
19     channel VARCHAR NOT NULL,
20     ts VARCHAR NOT NULL,
21     sheet_title VARCHAR NOT NULL,
22     PRIMARY KEY (channel, ts)
23 );
24
25 CREATE VIEW current_reactions AS
26   SELECT userid, channel, ts, reaction
27     FROM ( SELECT DISTINCT ON (channel, ts, userid, reaction)
28                userid, channel, ts, event_type, event_ts, reaction
29            FROM reaction_log ORDER BY channel, ts, userid, reaction, event_ts DESC ) t1
30   WHERE event_type = 'reaction_added';
31
32 GRANT SELECT,INSERT,DELETE ON TABLE applied TO skvidarlang;
33 GRANT SELECT,INSERT ON TABLE reaction_log TO skvidarlang;
34 GRANT SELECT ON TABLE current_reactions TO skvidarlang;
35 GRANT SELECT,UPDATE,INSERT ON TABLE message_sheet_link TO skvidarlang;
36
37