]> ruin.nu Git - ndwebbie.git/blobdiff - database/functions/forum_posts.sql
Clean up database directory
[ndwebbie.git] / database / functions / forum_posts.sql
diff --git a/database/functions/forum_posts.sql b/database/functions/forum_posts.sql
new file mode 100644 (file)
index 0000000..1f31080
--- /dev/null
@@ -0,0 +1,19 @@
+CREATE OR REPLACE FUNCTION update_forum_thread_posts() RETURNS trigger
+       AS $$
+BEGIN
+
+       IF TG_OP = 'INSERT' THEN
+               UPDATE forum_threads SET posts = posts + 1, mtime = GREATEST(NEW.time,mtime)
+                       WHERE ftid = NEW.ftid;
+       ELSIF TG_OP = 'DELETE' THEN
+               UPDATE forum_threads SET posts = posts - 1 WHERE ftid = OLD.ftid;
+       ELSIF TG_OP = 'UPDATE' AND NEW.ftid <> OLD.ftid THEN
+               UPDATE forum_threads SET posts = posts - 1 WHERE ftid = OLD.ftid;
+               UPDATE forum_threads SET posts = posts + 1, mtime = GREATEST(NEW.time,mtime)
+                       WHERE ftid = NEW.ftid;
+       END IF;
+
+       return NEW;
+END;
+$$
+       LANGUAGE plpgsql;