liquid_feedback_core

diff update/core-update.v3.2.2-v4.0.0.sql @ 552:a676d305502f

Added column "member"."deleted" as TIMESTAMPTZ
author jbe
date Sat Sep 16 19:58:27 2017 +0200 (2017-09-16)
parents deabd90adae8
children 85f25c413238
line diff
     1.1 --- a/update/core-update.v3.2.2-v4.0.0.sql	Sat Sep 16 15:53:31 2017 +0200
     1.2 +++ b/update/core-update.v3.2.2-v4.0.0.sql	Sat Sep 16 19:58:27 2017 +0200
     1.3 @@ -31,7 +31,14 @@
     1.4  ALTER TABLE "system_setting" ADD COLUMN "snapshot_retention" INTERVAL;
     1.5  
     1.6  COMMENT ON COLUMN "system_setting"."snapshot_retention" IS 'Unreferenced snapshots are retained for the given period of time after creation; set to NULL for infinite retention.';
     1.7 +
     1.8 +
     1.9 +ALTER TABLE "member" ADD COLUMN "deleted" TIMESTAMPTZ;
    1.10 +ALTER TABLE "member" ADD CONSTRAINT "deleted_requires_locked"
    1.11 +  CHECK ("deleted" ISNULL OR "locked" = TRUE);
    1.12   
    1.13 +COMMENT ON COLUMN "member"."deleted" IS 'Timestamp of deletion (set by "delete_member" function)';
    1.14 +
    1.15   
    1.16  CREATE TABLE "member_settings" (
    1.17          "member_id"             INT4            PRIMARY KEY REFERENCES "member" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
    1.18 @@ -1250,7 +1257,7 @@
    1.19    LANGUAGE 'plpgsql' VOLATILE AS $$
    1.20      BEGIN
    1.21        IF TG_OP = 'INSERT' THEN
    1.22 -        IF NEW."activated" NOTNULL THEN
    1.23 +        IF NEW."activated" NOTNULL AND NEW."deleted" ISNULL THEN
    1.24            INSERT INTO "event" ("event", "member_id")
    1.25              VALUES ('member_activated', NEW."id");
    1.26          END IF;
    1.27 @@ -1262,6 +1269,18 @@
    1.28          IF OLD."id" != NEW."id" THEN
    1.29            RAISE EXCEPTION 'Cannot change member ID';
    1.30          END IF;
    1.31 +        IF
    1.32 +          (OLD."activated" ISNULL OR OLD."deleted" NOTNULL) AND
    1.33 +          NEW."activated" NOTNULL AND NEW."deleted" ISNULL
    1.34 +        THEN
    1.35 +          INSERT INTO "event" ("event", "member_id")
    1.36 +            VALUES ('member_activated', NEW."id");
    1.37 +        END IF;
    1.38 +        IF OLD."active" != NEW."active" THEN
    1.39 +          INSERT INTO "event" ("event", "member_id", "boolean_value") VALUES (
    1.40 +            'member_active', NEW."id", NEW."active"
    1.41 +          );
    1.42 +        END IF;
    1.43          IF OLD."name" != NEW."name" THEN
    1.44            INSERT INTO "event" (
    1.45              "event", "member_id", "text_value", "old_text_value"
    1.46 @@ -1269,17 +1288,9 @@
    1.47              'member_name_updated', NEW."id", NEW."name", OLD."name"
    1.48            );
    1.49          END IF;
    1.50 -        IF OLD."active" != NEW."active" THEN
    1.51 -          INSERT INTO "event" ("event", "member_id", "boolean_value") VALUES (
    1.52 -            'member_active', NEW."id", NEW."active"
    1.53 -          );
    1.54 -        END IF;
    1.55          IF
    1.56 -          OLD."activated" NOTNULL AND
    1.57 -          (OLD."login" NOTNULL OR OLD."authority_login" NOTNULL) AND
    1.58 -          NEW."login"           ISNULL AND
    1.59 -          NEW."authority_login" ISNULL AND
    1.60 -          NEW."locked"          = TRUE
    1.61 +          OLD."activated" NOTNULL AND OLD."deleted" ISNULL AND
    1.62 +          (NEW."activated" ISNULL OR NEW."deleted" NOTNULL)
    1.63          THEN
    1.64            INSERT INTO "event" ("event", "member_id")
    1.65              VALUES ('member_removed', NEW."id");
    1.66 @@ -3271,6 +3282,7 @@
    1.67          "authority"                    = NULL,
    1.68          "authority_uid"                = NULL,
    1.69          "authority_login"              = NULL,
    1.70 +        "deleted"                      = coalesce("deleted", now()),
    1.71          "locked"                       = TRUE,
    1.72          "active"                       = FALSE,
    1.73          "notify_email"                 = NULL,

Impressum / About Us