summaryrefslogtreecommitdiff
path: root/sql/functions/auth.user_delete.sql
blob: 8cb399e87c9b31ced1e1bd863b1c147852399b2b (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
drop function auth.user_delete (
    p_id bigint
);

create or replace function auth.user_delete (
    p_id bigint
)
returns bool
as $$
declare
    l_id bigint;
    l_result bool;
begin
    if p_id is null then
        l_result := false::bool;
    else
        select id into l_id
        from auth.users
        where id = p_id;

        if l_id is null or l_id != p_id then
            l_result := false::bool;
        else
            delete
            from auth.users_roles_append
            where user_id = l_id;

            delete
            from auth.users_roles_exclude
            where user_id = l_id;

            delete
            from auth.users_role_groups
            where user_id = l_id;

            delete
            from contact.contact_us_posts_read
            where user_id = l_id;

            delete
            from auth.users
            where id = l_id;

            l_result := true::bool;
        end if;
    end if;

    return l_result;
end;
$$ language plpgsql;