liquid_feedback_core

annotate update/core-update.v1.1.0-v1.2.0.sql @ 142:54ac8c473263

Use an improved definition for "disqualified" initiatives

"initiative"."disqualified" is TRUE, if the initiative may not win, because it either (a) has no better rank than the status quo, or (b) because there exists a better ranked initiative X, which directly beats this initiative, and either more voters prefer X to this initiative than voters preferring X to the status quo or less voters prefer this initiative to X than voters preferring the status quo to X
author jbe
date Wed Jun 01 16:58:00 2011 +0200 (2011-06-01)
parents a7ad50614d82
children
rev   line source
jbe@57 1 BEGIN;
jbe@57 2
jbe@57 3 CREATE OR REPLACE VIEW "liquid_feedback_version" AS
jbe@57 4 SELECT * FROM (VALUES ('1.2.0', 1, 2, 0))
jbe@57 5 AS "subquery"("string", "major", "minor", "revision");
jbe@57 6
jbe@57 7 ALTER TABLE "member_history" DROP COLUMN "login";
jbe@57 8
jbe@57 9 COMMENT ON TABLE "member_history" IS 'Filled by trigger; keeps information about old names and active flag of members';
jbe@57 10 COMMENT ON COLUMN "member_history"."until" IS 'Timestamp until the data was valid';
jbe@57 11
jbe@57 12 CREATE OR REPLACE FUNCTION "write_member_history_trigger"()
jbe@57 13 RETURNS TRIGGER
jbe@57 14 LANGUAGE 'plpgsql' VOLATILE AS $$
jbe@57 15 BEGIN
jbe@57 16 IF
jbe@57 17 NEW."active" != OLD."active" OR
jbe@57 18 NEW."name" != OLD."name"
jbe@57 19 THEN
jbe@57 20 INSERT INTO "member_history"
jbe@57 21 ("member_id", "active", "name")
jbe@57 22 VALUES (NEW."id", OLD."active", OLD."name");
jbe@57 23 END IF;
jbe@57 24 RETURN NULL;
jbe@57 25 END;
jbe@57 26 $$;
jbe@57 27
jbe@57 28 COMMENT ON TRIGGER "write_member_history" ON "member" IS 'When changing certain fields of a member, create a history entry in "member_history" table';
jbe@57 29
jbe@57 30 CREATE OR REPLACE FUNCTION "delete_member"("member_id_p" "member"."id"%TYPE)
jbe@57 31 RETURNS VOID
jbe@57 32 LANGUAGE 'plpgsql' VOLATILE AS $$
jbe@57 33 BEGIN
jbe@57 34 UPDATE "member" SET
jbe@57 35 "last_login" = NULL,
jbe@57 36 "login" = NULL,
jbe@57 37 "password" = NULL,
jbe@57 38 "active" = FALSE,
jbe@57 39 "notify_email" = NULL,
jbe@57 40 "notify_email_unconfirmed" = NULL,
jbe@57 41 "notify_email_secret" = NULL,
jbe@57 42 "notify_email_secret_expiry" = NULL,
jbe@57 43 "notify_email_lock_expiry" = NULL,
jbe@57 44 "password_reset_secret" = NULL,
jbe@57 45 "password_reset_secret_expiry" = NULL,
jbe@57 46 "organizational_unit" = NULL,
jbe@57 47 "internal_posts" = NULL,
jbe@57 48 "realname" = NULL,
jbe@57 49 "birthday" = NULL,
jbe@57 50 "address" = NULL,
jbe@57 51 "email" = NULL,
jbe@57 52 "xmpp_address" = NULL,
jbe@57 53 "website" = NULL,
jbe@57 54 "phone" = NULL,
jbe@57 55 "mobile_phone" = NULL,
jbe@57 56 "profession" = NULL,
jbe@57 57 "external_memberships" = NULL,
jbe@57 58 "external_posts" = NULL,
jbe@57 59 "statement" = NULL
jbe@57 60 WHERE "id" = "member_id_p";
jbe@57 61 -- "text_search_data" is updated by triggers
jbe@57 62 DELETE FROM "setting" WHERE "member_id" = "member_id_p";
jbe@57 63 DELETE FROM "setting_map" WHERE "member_id" = "member_id_p";
jbe@57 64 DELETE FROM "member_relation_setting" WHERE "member_id" = "member_id_p";
jbe@57 65 DELETE FROM "member_image" WHERE "member_id" = "member_id_p";
jbe@57 66 DELETE FROM "contact" WHERE "member_id" = "member_id_p";
jbe@57 67 DELETE FROM "area_setting" WHERE "member_id" = "member_id_p";
jbe@57 68 DELETE FROM "issue_setting" WHERE "member_id" = "member_id_p";
jbe@57 69 DELETE FROM "initiative_setting" WHERE "member_id" = "member_id_p";
jbe@57 70 DELETE FROM "suggestion_setting" WHERE "member_id" = "member_id_p";
jbe@57 71 DELETE FROM "membership" WHERE "member_id" = "member_id_p";
jbe@57 72 DELETE FROM "delegation" WHERE "truster_id" = "member_id_p";
jbe@57 73 DELETE FROM "direct_voter" USING "issue"
jbe@57 74 WHERE "direct_voter"."issue_id" = "issue"."id"
jbe@57 75 AND "issue"."closed" ISNULL
jbe@57 76 AND "member_id" = "member_id_p";
jbe@57 77 RETURN;
jbe@57 78 END;
jbe@57 79 $$;
jbe@57 80
jbe@57 81 COMMENT ON FUNCTION "delete_member"("member_id_p" "member"."id"%TYPE) IS 'Deactivate member and clear certain settings and data of this member (data protection)';
jbe@57 82
jbe@57 83 CREATE OR REPLACE FUNCTION "delete_private_data"()
jbe@57 84 RETURNS VOID
jbe@57 85 LANGUAGE 'plpgsql' VOLATILE AS $$
jbe@57 86 BEGIN
jbe@57 87 UPDATE "member" SET
jbe@57 88 "last_login" = NULL,
jbe@57 89 "login" = NULL,
jbe@57 90 "password" = NULL,
jbe@57 91 "notify_email" = NULL,
jbe@57 92 "notify_email_unconfirmed" = NULL,
jbe@57 93 "notify_email_secret" = NULL,
jbe@57 94 "notify_email_secret_expiry" = NULL,
jbe@57 95 "notify_email_lock_expiry" = NULL,
jbe@57 96 "password_reset_secret" = NULL,
jbe@57 97 "password_reset_secret_expiry" = NULL,
jbe@57 98 "organizational_unit" = NULL,
jbe@57 99 "internal_posts" = NULL,
jbe@57 100 "realname" = NULL,
jbe@57 101 "birthday" = NULL,
jbe@57 102 "address" = NULL,
jbe@57 103 "email" = NULL,
jbe@57 104 "xmpp_address" = NULL,
jbe@57 105 "website" = NULL,
jbe@57 106 "phone" = NULL,
jbe@57 107 "mobile_phone" = NULL,
jbe@57 108 "profession" = NULL,
jbe@57 109 "external_memberships" = NULL,
jbe@57 110 "external_posts" = NULL,
jbe@57 111 "statement" = NULL;
jbe@57 112 -- "text_search_data" is updated by triggers
jbe@57 113 DELETE FROM "invite_code";
jbe@57 114 DELETE FROM "setting";
jbe@57 115 DELETE FROM "setting_map";
jbe@57 116 DELETE FROM "member_relation_setting";
jbe@57 117 DELETE FROM "member_image";
jbe@57 118 DELETE FROM "contact";
jbe@57 119 DELETE FROM "session";
jbe@57 120 DELETE FROM "area_setting";
jbe@57 121 DELETE FROM "issue_setting";
jbe@57 122 DELETE FROM "initiative_setting";
jbe@57 123 DELETE FROM "suggestion_setting";
jbe@57 124 DELETE FROM "direct_voter" USING "issue"
jbe@57 125 WHERE "direct_voter"."issue_id" = "issue"."id"
jbe@57 126 AND "issue"."closed" ISNULL;
jbe@57 127 RETURN;
jbe@57 128 END;
jbe@57 129 $$;
jbe@57 130
jbe@57 131 COMMIT;

Impressum / About Us