liquid_feedback_core

annotate update/core-update.v1.2.0-v1.2.1.sql @ 494:b4b660562322

Another bugfix in function "get_initiatives_for_notification"
author jbe
date Sun Apr 03 20:00:20 2016 +0200 (2016-04-03)
parents fdd1729d7e2a
children
rev   line source
jbe@59 1 BEGIN;
jbe@59 2
jbe@59 3 CREATE OR REPLACE VIEW "liquid_feedback_version" AS
jbe@59 4 SELECT * FROM (VALUES ('1.2.1', 1, 2, 1))
jbe@59 5 AS "subquery"("string", "major", "minor", "revision");
jbe@59 6
jbe@59 7 ALTER TABLE "issue" ADD COLUMN "cleaned" TIMESTAMPTZ;
jbe@59 8 ALTER TABLE "issue" ADD CONSTRAINT "clean_restriction"
jbe@59 9 CHECK (
jbe@59 10 "cleaned" ISNULL OR (
jbe@59 11 "closed" NOTNULL AND (
jbe@59 12 "fully_frozen" ISNULL OR "ranks_available"
jbe@59 13 )
jbe@59 14 )
jbe@59 15 );
jbe@59 16
jbe@59 17 COMMENT ON COLUMN "issue"."cleaned" IS 'Point in time, when discussion data and votes had been deleted';
jbe@59 18
jbe@59 19 CREATE FUNCTION "clean_issue"("issue_id_p" "issue"."id"%TYPE)
jbe@59 20 RETURNS VOID
jbe@59 21 LANGUAGE 'plpgsql' VOLATILE AS $$
jbe@59 22 DECLARE
jbe@59 23 "issue_row" "issue"%ROWTYPE;
jbe@59 24 BEGIN
jbe@59 25 SELECT * INTO "issue_row"
jbe@59 26 FROM "issue" WHERE "id" = "issue_id_p"
jbe@59 27 FOR UPDATE;
jbe@59 28 IF "issue_row"."cleaned" ISNULL THEN
jbe@59 29 UPDATE "issue" SET
jbe@59 30 "closed" = NULL,
jbe@59 31 "ranks_available" = FALSE
jbe@59 32 WHERE "id" = "issue_id_p";
jbe@59 33 DELETE FROM "delegating_voter"
jbe@59 34 WHERE "issue_id" = "issue_id_p";
jbe@59 35 DELETE FROM "direct_voter"
jbe@59 36 WHERE "issue_id" = "issue_id_p";
jbe@59 37 DELETE FROM "delegating_interest_snapshot"
jbe@59 38 WHERE "issue_id" = "issue_id_p";
jbe@59 39 DELETE FROM "direct_interest_snapshot"
jbe@59 40 WHERE "issue_id" = "issue_id_p";
jbe@59 41 DELETE FROM "delegating_population_snapshot"
jbe@59 42 WHERE "issue_id" = "issue_id_p";
jbe@59 43 DELETE FROM "direct_population_snapshot"
jbe@59 44 WHERE "issue_id" = "issue_id_p";
jbe@59 45 DELETE FROM "delegation"
jbe@59 46 WHERE "issue_id" = "issue_id_p";
jbe@59 47 DELETE FROM "supporter"
jbe@59 48 WHERE "issue_id" = "issue_id_p";
jbe@59 49 UPDATE "issue" SET
jbe@59 50 "closed" = "issue_row"."closed",
jbe@59 51 "ranks_available" = "issue_row"."ranks_available",
jbe@59 52 "cleaned" = now()
jbe@59 53 WHERE "id" = "issue_id_p";
jbe@59 54 END IF;
jbe@59 55 RETURN;
jbe@59 56 END;
jbe@59 57 $$;
jbe@59 58
jbe@59 59 COMMENT ON FUNCTION "clean_issue"("issue"."id"%TYPE) IS 'Delete discussion data and votes belonging to an issue';
jbe@59 60
jbe@59 61 COMMIT;

Impressum / About Us