]> ruin.nu Git - ndwebbie.git/blob - database/functions/groupmembers.sql
Clean up database directory
[ndwebbie.git] / database / functions / groupmembers.sql
1 CREATE OR REPLACE FUNCTION change_member() RETURNS trigger
2     AS $_X$
3 BEGIN
4         IF TG_OP = 'INSERT' THEN
5                 IF NEW.gid = 'M' THEN
6                         UPDATE planets SET alliance = 'NewDawn' WHERE
7                                 pid = (SELECT pid FROM users WHERE uid = NEW.uid);
8                 END IF;
9         ELSIF TG_OP = 'DELETE' THEN
10                 IF OLD.gid = 'M' THEN
11                         UPDATE planets SET alliance = NULL WHERE
12                                 pid = (SELECT pid FROM users WHERE uid = OLD.uid);
13                 END IF;
14         END IF;
15
16         return NEW;
17 END;
18 $_X$ LANGUAGE plpgsql;
19
20 CREATE OR REPLACE FUNCTION update_user_planet() RETURNS trigger AS $_X$
21 BEGIN
22         IF COALESCE(NEW.pid <> OLD.pid,TRUE) OR NEW.username <> OLD.username THEN
23                 UPDATE planets SET nick = NULL WHERE pid = OLD.pid;
24                 UPDATE planets SET nick = NEW.username WHERE pid = NEW.pid;
25         END IF;
26
27         IF COALESCE(NEW.pid <> OLD.pid,TRUE)
28                         AND (SELECT TRUE FROM groupmembers WHERE gid = 'M' AND uid = NEW.uid) THEN
29                 UPDATE planets SET alliance = NULL WHERE pid = OLD.pid;
30                 UPDATE planets SET alliance = 'NewDawn' WHERE pid = NEW.pid;
31         END IF;
32         RETURN NEW;
33 END;
34 $_X$ LANGUAGE plpgsql;
35
36 CREATE OR REPLACE FUNCTION groups(uid integer) RETURNS SETOF CHAR
37     AS $_$SELECT gid FROM groupmembers WHERE uid = $1 UNION SELECT ''$_$
38     LANGUAGE sql STABLE;