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,