[evolvis-commits] r9011: fixing counters for bug tracker↵
mirabilos at evolvis.org
mirabilos at evolvis.org
Thu Feb 24 16:57:30 CET 2011
Author: mirabilos
Date: 2011-02-24 16:57:30 +0100 (Thu, 24 Feb 2011)
New Revision: 9011
Added:
trunk/gforge_base/evolvisforge-5.1/gforge/db/20030822.sql
Log:
fixing counters for bug tracker
Added: trunk/gforge_base/evolvisforge-5.1/gforge/db/20030822.sql
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/db/20030822.sql (rev 0)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/db/20030822.sql 2011-02-24 15:57:30 UTC (rev 9011)
@@ -0,0 +1,84 @@
+CREATE OR REPLACE FUNCTION artifactgroup_update_agg () RETURNS OPAQUE AS '
+BEGIN
+ --
+ -- see if they are moving to a new artifacttype
+ -- if so, its a more complex operation
+ --
+ IF NEW.group_artifact_id <> OLD.group_artifact_id THEN
+ --
+ -- transferred artifacts always have a status of 1
+ -- so we will increment the new artifacttypes sums
+ --
+ IF OLD.status_id=3 THEN
+ -- No need to decrement counters on old tracker
+ ELSE
+ IF OLD.status_id=2 THEN
+ UPDATE artifact_counts_agg SET count=count-1 \
+ WHERE group_artifact_id=OLD.group_artifact_id;
+ ELSE
+ IF OLD.status_id=1 THEN
+ UPDATE artifact_counts_agg SET count=count-1,open_count=open_count-1 \
+ WHERE group_artifact_id=OLD.group_artifact_id;
+ END IF;
+ END IF;
+ END IF;
+
+ IF NEW.status_id=3 THEN
+ --DO NOTHING
+ ELSE
+ IF NEW.status_id=2 THEN
+ UPDATE artifact_counts_agg SET count=count+1 \
+ WHERE group_artifact_id=NEW.group_artifact_id;
+ ELSE
+ IF NEW.status_id=1 THEN
+ UPDATE artifact_counts_agg SET count=count+1, open_count=open_count+1 \
+ WHERE group_artifact_id=NEW.group_artifact_id;
+ END IF;
+ END IF;
+ END IF;
+ ELSE
+ --
+ -- just need to evaluate the status flag and
+ -- increment/decrement the counter as necessary
+ --
+ IF NEW.status_id <> OLD.status_id THEN
+ IF NEW.status_id = 1 THEN
+ IF OLD.status_id=2 THEN
+ UPDATE artifact_counts_agg SET open_count=open_count+1 \
+ WHERE group_artifact_id=NEW.group_artifact_id;
+ ELSE
+ IF OLD.status_id=3 THEN
+ UPDATE artifact_counts_agg SET open_count=open_count+1, count=count+1 \
+ WHERE group_artifact_id=NEW.group_artifact_id;
+ END IF;
+ END IF;
+ ELSE
+ IF NEW.status_id = 2 THEN
+ IF OLD.status_id=1 THEN
+ UPDATE artifact_counts_agg SET open_count=open_count-1 \
+ WHERE group_artifact_id=NEW.group_artifact_id;
+ ELSE
+ IF OLD.status_id=3 THEN
+ UPDATE artifact_counts_agg SET count=count+1 \
+ WHERE group_artifact_id=NEW.group_artifact_id;
+ END IF;
+ END IF;
+ ELSE
+ IF NEW.status_id = 3 THEN
+ IF OLD.status_id=2 THEN
+ UPDATE artifact_counts_agg SET count=count-1 \
+ WHERE group_artifact_id=NEW.group_artifact_id;
+ ELSE
+ IF OLD.status_id=1 THEN
+ UPDATE artifact_counts_agg SET open_count=open_count-1,count=count-1 \
+ WHERE group_artifact_id=NEW.group_artifact_id;
+ END IF;
+ END IF;
+ END IF;
+ END IF;
+ END IF;
+ END IF;
+ END IF;
+ RETURN NEW;
+END;
+' LANGUAGE 'plpgsql';
More information about the evolvis-commits
mailing list