liquid_feedback_core

annotate update/core-update.v1.3.0-v1.3.1.sql @ 102:2daa8ce3d743

Update script added
author jbe
date Tue Jan 04 02:55:01 2011 +0100 (2011-01-04)
parents
children bc8aa59b0945
rev   line source
jbe@102 1 BEGIN;
jbe@102 2
jbe@102 3 CREATE OR REPLACE VIEW "liquid_feedback_version" AS
jbe@102 4 SELECT * FROM (VALUES ('1.3.1', 1, 3, 1))
jbe@102 5 AS "subquery"("string", "major", "minor", "revision");
jbe@102 6
jbe@102 7 ALTER TABLE "member" ADD COLUMN "locked" BOOLEAN NOT NULL DEFAULT FALSE;
jbe@102 8
jbe@102 9 COMMENT ON COLUMN "member"."locked" IS 'Locked members can not log in.';
jbe@102 10 COMMENT ON COLUMN "member"."active" IS 'Memberships, support and votes are taken into account when corresponding members are marked as active. When the user does not log in for an extended period of time, this flag may be set to FALSE. If the user is not locked, he/she may reset the active flag by logging in.';
jbe@102 11
jbe@102 12 CREATE OR REPLACE FUNCTION "create_interest_snapshot"
jbe@102 13 ( "issue_id_p" "issue"."id"%TYPE )
jbe@102 14 RETURNS VOID
jbe@102 15 LANGUAGE 'plpgsql' VOLATILE AS $$
jbe@102 16 DECLARE
jbe@102 17 "member_id_v" "member"."id"%TYPE;
jbe@102 18 BEGIN
jbe@102 19 DELETE FROM "direct_interest_snapshot"
jbe@102 20 WHERE "issue_id" = "issue_id_p"
jbe@102 21 AND "event" = 'periodic';
jbe@102 22 DELETE FROM "delegating_interest_snapshot"
jbe@102 23 WHERE "issue_id" = "issue_id_p"
jbe@102 24 AND "event" = 'periodic';
jbe@102 25 DELETE FROM "direct_supporter_snapshot"
jbe@102 26 WHERE "issue_id" = "issue_id_p"
jbe@102 27 AND "event" = 'periodic';
jbe@102 28 INSERT INTO "direct_interest_snapshot"
jbe@102 29 ("issue_id", "event", "member_id", "voting_requested")
jbe@102 30 SELECT
jbe@102 31 "issue_id_p" AS "issue_id",
jbe@102 32 'periodic' AS "event",
jbe@102 33 "member"."id" AS "member_id",
jbe@102 34 "interest"."voting_requested"
jbe@102 35 FROM "interest" JOIN "member"
jbe@102 36 ON "interest"."member_id" = "member"."id"
jbe@102 37 WHERE "interest"."issue_id" = "issue_id_p"
jbe@102 38 AND "member"."active";
jbe@102 39 FOR "member_id_v" IN
jbe@102 40 SELECT "member_id" FROM "direct_interest_snapshot"
jbe@102 41 WHERE "issue_id" = "issue_id_p"
jbe@102 42 AND "event" = 'periodic'
jbe@102 43 LOOP
jbe@102 44 UPDATE "direct_interest_snapshot" SET
jbe@102 45 "weight" = 1 +
jbe@102 46 "weight_of_added_delegations_for_interest_snapshot"(
jbe@102 47 "issue_id_p",
jbe@102 48 "member_id_v",
jbe@102 49 '{}'
jbe@102 50 )
jbe@102 51 WHERE "issue_id" = "issue_id_p"
jbe@102 52 AND "event" = 'periodic'
jbe@102 53 AND "member_id" = "member_id_v";
jbe@102 54 END LOOP;
jbe@102 55 INSERT INTO "direct_supporter_snapshot"
jbe@102 56 ( "issue_id", "initiative_id", "event", "member_id",
jbe@102 57 "informed", "satisfied" )
jbe@102 58 SELECT
jbe@102 59 "issue_id_p" AS "issue_id",
jbe@102 60 "initiative"."id" AS "initiative_id",
jbe@102 61 'periodic' AS "event",
jbe@102 62 "supporter"."member_id" AS "member_id",
jbe@102 63 "supporter"."draft_id" = "current_draft"."id" AS "informed",
jbe@102 64 NOT EXISTS (
jbe@102 65 SELECT NULL FROM "critical_opinion"
jbe@102 66 WHERE "initiative_id" = "initiative"."id"
jbe@102 67 AND "member_id" = "supporter"."member_id"
jbe@102 68 ) AS "satisfied"
jbe@102 69 FROM "initiative"
jbe@102 70 JOIN "supporter"
jbe@102 71 ON "supporter"."initiative_id" = "initiative"."id"
jbe@102 72 JOIN "current_draft"
jbe@102 73 ON "initiative"."id" = "current_draft"."initiative_id"
jbe@102 74 JOIN "direct_interest_snapshot"
jbe@102 75 ON "supporter"."member_id" = "direct_interest_snapshot"."member_id"
jbe@102 76 AND "initiative"."issue_id" = "direct_interest_snapshot"."issue_id"
jbe@102 77 AND "event" = 'periodic'
jbe@102 78 WHERE "initiative"."issue_id" = "issue_id_p";
jbe@102 79 RETURN;
jbe@102 80 END;
jbe@102 81 $$;
jbe@102 82
jbe@102 83 COMMIT;

Impressum / About Us