]> ruin.nu Git - ndwebbie.git/blobdiff - database/functions/users.sql
Clean up database directory
[ndwebbie.git] / database / functions / users.sql
diff --git a/database/functions/users.sql b/database/functions/users.sql
new file mode 100644 (file)
index 0000000..2460cc1
--- /dev/null
@@ -0,0 +1,28 @@
+CREATE OR REPLACE FUNCTION update_user_planet() RETURNS trigger AS $_X$
+BEGIN
+       IF COALESCE(NEW.pid <> OLD.pid,TRUE) OR NEW.username <> OLD.username THEN
+               UPDATE planets SET nick = NULL WHERE pid = OLD.pid;
+               UPDATE planets SET nick = NEW.username WHERE pid = NEW.pid;
+       END IF;
+
+       IF COALESCE(NEW.pid <> OLD.pid,TRUE)
+                       AND (SELECT TRUE FROM groupmembers WHERE gid = 2 AND uid = NEW.uid) THEN
+               UPDATE planets SET alliance = NULL WHERE pid = OLD.pid;
+               UPDATE planets SET alliance = 'NewDawn' WHERE pid = NEW.pid;
+       END IF;
+       RETURN NEW;
+END;
+$_X$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION add_user() RETURNS trigger
+    AS $_X$
+DECLARE
+       thread INTEGER;
+BEGIN
+       INSERT INTO forum_threads (fbid,subject,uid)
+               VALUES(-1,NEW.uid || ': ' || NEW.username,-3) RETURNING ftid
+               INTO STRICT thread;
+       NEW.ftid = thread;
+       RETURN NEW;
+END;
+$_X$ LANGUAGE plpgsql;