[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