-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy path002-admin.sql
More file actions
68 lines (58 loc) · 2.48 KB
/
002-admin.sql
File metadata and controls
68 lines (58 loc) · 2.48 KB
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
--002-admin.sql
-----------------------------------------------------------------------
-- function to extract user ID from Slack event in format <@U06S8H0V94P|nathan>
create or replace function agent.extract_user_id_from_event(_event jsonb) returns text
as $func$
select (regexp_match(_event->>'text', '<@([A-Z0-9]+)\|[^>]+>'))[1]
$func$ language sql immutable security invoker
;
-----------------------------------------------------------------------
-- slack.insert_admin_user
create or replace function agent.insert_admin_user(_event jsonb) returns void
as $func$
insert into agent.admin_users (user_id, event)
select agent.extract_user_id_from_event(_event), _event
where agent.extract_user_id_from_event(_event) is not null
on conflict (user_id) do nothing;
insert into agent.admin_audits (event) values (_event);
$func$ language sql volatile security invoker
;
-----------------------------------------------------------------------
-- agent.delete_admin_user
create or replace function agent.delete_admin_user(_event jsonb) returns void
as $func$
delete from agent.admin_users
where user_id = agent.extract_user_id_from_event(_event);
insert into agent.admin_audits (event) values (_event);
$func$ language sql volatile security invoker
;
-----------------------------------------------------------------------
-- agent.insert_ignored_user
create or replace function agent.insert_ignored_user(_event jsonb) returns void
as $func$
insert into agent.ignored_users (user_id, event)
select agent.extract_user_id_from_event(_event), _event
where agent.extract_user_id_from_event(_event) is not null
on conflict (user_id) do nothing;
insert into agent.admin_audits (event) values (_event);
$func$ language sql volatile security invoker
;
-----------------------------------------------------------------------
-- agent.delete_ignored_user
create or replace function agent.delete_ignored_user(_event jsonb) returns void
as $func$
delete from agent.ignored_users
where user_id = agent.extract_user_id_from_event(_event);
insert into agent.admin_audits (event) values (_event);
$func$ language sql volatile security invoker
;
-----------------------------------------------------------------------
-- agent.is_user_ignored
create or replace function agent.is_user_ignored(_user_id text) returns boolean
as $func$
select exists (
select 1 from agent.ignored_users
where user_id = _user_id
)
$func$ language sql stable security invoker
;