liquid_feedback_core
diff core.sql @ 536:750b0be5acb6
Work on unit/area/policy events: added column "policy_id" to "event" table, added new "event_type"s
author | jbe |
---|---|
date | Mon Jun 26 15:54:26 2017 +0200 (2017-06-26) |
parents | 8b6433096a58 |
children | aa261389c993 |
line diff
1.1 --- a/core.sql Sun Jun 18 02:24:50 2017 +0200 1.2 +++ b/core.sql Mon Jun 26 15:54:26 2017 +0200 1.3 @@ -738,6 +738,7 @@ 1.4 1.5 CREATE TABLE "issue" ( 1.6 UNIQUE ("area_id", "id"), -- index needed for foreign-key on table "event" 1.7 + UNIQUE ("policy_id", "id"), -- index needed for foreign-key on table "event" 1.8 "id" SERIAL4 PRIMARY KEY, 1.9 "area_id" INT4 NOT NULL REFERENCES "area" ("id") ON DELETE CASCADE ON UPDATE CASCADE, 1.10 "policy_id" INT4 NOT NULL REFERENCES "policy" ("id") ON DELETE RESTRICT ON UPDATE CASCADE, 1.11 @@ -804,7 +805,6 @@ 1.12 --("accepted" ISNULL OR "admission_snapshot_id" NOTNULL) AND 1.13 ("half_frozen" ISNULL OR "half_freeze_snapshot_id" NOTNULL) AND 1.14 ("fully_frozen" ISNULL OR "full_freeze_snapshot_id" NOTNULL) ) ); 1.15 -CREATE INDEX "issue_policy_id_idx" ON "issue" ("policy_id"); 1.16 CREATE INDEX "issue_state_idx" ON "issue" ("state"); 1.17 CREATE INDEX "issue_created_idx" ON "issue" ("created"); 1.18 CREATE INDEX "issue_accepted_idx" ON "issue" ("accepted"); 1.19 @@ -1382,6 +1382,15 @@ 1.20 1.21 1.22 CREATE TYPE "event_type" AS ENUM ( 1.23 + 'unit_created', 1.24 + 'unit_updated', 1.25 + 'unit_removed', 1.26 + 'subject_area_created', 1.27 + 'subject_area_updated', 1.28 + 'subject_area_removed', 1.29 + 'policy_created', 1.30 + 'policy_updated', 1.31 + 'policy_removed', 1.32 'issue_state_changed', 1.33 'initiative_created_in_new_issue', 1.34 'initiative_created_in_existing_issue', 1.35 @@ -1416,8 +1425,10 @@ 1.36 "unit_id" INT4 REFERENCES "unit" ("id") ON DELETE CASCADE ON UPDATE CASCADE, 1.37 "area_id" INT4, 1.38 FOREIGN KEY ("unit_id", "area_id") REFERENCES "area" ("unit_id", "id") ON DELETE CASCADE ON UPDATE CASCADE, 1.39 + "policy_id" INT4 REFERENCES "policy" ("id") ON DELETE CASCADE ON UPDATE CASCADE, 1.40 "issue_id" INT4 REFERENCES "issue" ("id") ON DELETE CASCADE ON UPDATE CASCADE, 1.41 FOREIGN KEY ("area_id", "issue_id") REFERENCES "issue" ("area_id", "id") ON DELETE CASCADE ON UPDATE CASCADE, 1.42 + FOREIGN KEY ("policy_id", "issue_id") REFERENCES "issue" ("policy_id", "id") ON DELETE CASCADE ON UPDATE CASCADE, 1.43 "state" "issue_state", 1.44 "initiative_id" INT4, 1.45 "draft_id" INT8, 1.46 @@ -1444,6 +1455,7 @@ 1.47 "scope" ISNULL AND 1.48 "unit_id" NOTNULL AND 1.49 "area_id" NOTNULL AND 1.50 + "policy_id" NOTNULL AND 1.51 "issue_id" NOTNULL AND 1.52 "state" NOTNULL AND 1.53 "initiative_id" ISNULL AND 1.54 @@ -1465,6 +1477,7 @@ 1.55 "scope" ISNULL AND 1.56 "unit_id" NOTNULL AND 1.57 "area_id" NOTNULL AND 1.58 + "policy_id" NOTNULL AND 1.59 "issue_id" NOTNULL AND 1.60 "state" NOTNULL AND 1.61 "initiative_id" NOTNULL AND 1.62 @@ -1481,6 +1494,7 @@ 1.63 "scope" ISNULL AND 1.64 "unit_id" NOTNULL AND 1.65 "area_id" NOTNULL AND 1.66 + "policy_id" NOTNULL AND 1.67 "issue_id" NOTNULL AND 1.68 "state" NOTNULL AND 1.69 "initiative_id" NOTNULL AND 1.70 @@ -1497,6 +1511,7 @@ 1.71 "scope" ISNULL AND 1.72 "unit_id" NOTNULL AND 1.73 "area_id" NOTNULL AND 1.74 + "policy_id" NOTNULL AND 1.75 "issue_id" NOTNULL AND 1.76 "state" NOTNULL AND 1.77 "initiative_id" NOTNULL AND 1.78 @@ -1518,6 +1533,7 @@ 1.79 "scope" ISNULL AND 1.80 "unit_id" ISNULL AND 1.81 "area_id" ISNULL AND 1.82 + "policy_id" ISNULL AND 1.83 "issue_id" ISNULL AND 1.84 "state" ISNULL AND 1.85 "initiative_id" ISNULL AND 1.86 @@ -1534,6 +1550,7 @@ 1.87 "scope" ISNULL AND 1.88 "unit_id" ISNULL AND 1.89 "area_id" ISNULL AND 1.90 + "policy_id" ISNULL AND 1.91 "issue_id" ISNULL AND 1.92 "state" ISNULL AND 1.93 "initiative_id" ISNULL AND 1.94 @@ -1550,6 +1567,7 @@ 1.95 "scope" ISNULL AND 1.96 "unit_id" ISNULL AND 1.97 "area_id" ISNULL AND 1.98 + "policy_id" ISNULL AND 1.99 "issue_id" ISNULL AND 1.100 "state" ISNULL AND 1.101 "initiative_id" ISNULL AND 1.102 @@ -1566,6 +1584,7 @@ 1.103 "scope" ISNULL AND 1.104 "unit_id" NOTNULL AND 1.105 "area_id" NOTNULL AND 1.106 + "policy_id" NOTNULL AND 1.107 "issue_id" NOTNULL AND 1.108 "state" NOTNULL AND 1.109 "initiative_id" ISNULL AND 1.110 @@ -1582,6 +1601,7 @@ 1.111 "scope" ISNULL AND 1.112 "unit_id" NOTNULL AND 1.113 "area_id" NOTNULL AND 1.114 + "policy_id" NOTNULL AND 1.115 "issue_id" NOTNULL AND 1.116 "state" NOTNULL AND 1.117 "initiative_id" NOTNULL AND 1.118 @@ -1598,6 +1618,7 @@ 1.119 "scope" ISNULL AND 1.120 "unit_id" NOTNULL AND 1.121 "area_id" NOTNULL AND 1.122 + "policy_id" NOTNULL AND 1.123 "issue_id" NOTNULL AND 1.124 "state" NOTNULL AND 1.125 "initiative_id" NOTNULL AND 1.126 @@ -1614,6 +1635,7 @@ 1.127 "scope" ISNULL AND 1.128 "unit_id" NOTNULL AND 1.129 "area_id" NOTNULL AND 1.130 + "policy_id" NOTNULL AND 1.131 "issue_id" NOTNULL AND 1.132 "state" NOTNULL AND 1.133 "initiative_id" NOTNULL AND 1.134 @@ -1630,6 +1652,7 @@ 1.135 "scope" ISNULL AND 1.136 "unit_id" NOTNULL AND 1.137 "area_id" NOTNULL AND 1.138 + "policy_id" NOTNULL AND 1.139 "issue_id" NOTNULL AND 1.140 "state" NOTNULL AND 1.141 "initiative_id" NOTNULL AND 1.142 @@ -1647,6 +1670,7 @@ 1.143 "scope" NOTNULL AND 1.144 "unit_id" NOTNULL AND 1.145 ("area_id" NOTNULL) = ("scope" != 'unit'::"delegation_scope") AND 1.146 + "policy_id" ISNULL AND 1.147 ("issue_id" NOTNULL) = ("scope" = 'issue'::"delegation_scope") AND 1.148 ("state" NOTNULL) = ("scope" = 'issue'::"delegation_scope") AND 1.149 "initiative_id" ISNULL AND 1.150 @@ -1663,6 +1687,7 @@ 1.151 "scope" ISNULL AND 1.152 "unit_id" ISNULL AND 1.153 "area_id" ISNULL AND 1.154 + "policy_id" ISNULL AND 1.155 "issue_id" ISNULL AND 1.156 "state" ISNULL AND 1.157 "initiative_id" ISNULL AND 1.158 @@ -1768,10 +1793,11 @@ 1.159 FOR SHARE; 1.160 INSERT INTO "event" ( 1.161 "event", 1.162 - "unit_id", "area_id", "issue_id", "state" 1.163 + "unit_id", "area_id", "policy_id", "issue_id", "state" 1.164 ) VALUES ( 1.165 'issue_state_changed', 1.166 - "area_row"."unit_id", NEW."area_id", NEW."id", NEW."state" 1.167 + "area_row"."unit_id", NEW."area_id", NEW."policy_id", 1.168 + NEW."id", NEW."state" 1.169 ); 1.170 END IF; 1.171 RETURN NULL; 1.172 @@ -1821,11 +1847,11 @@ 1.173 END IF; 1.174 INSERT INTO "event" ( 1.175 "event", "member_id", 1.176 - "unit_id", "area_id", "issue_id", "state", 1.177 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.178 "initiative_id", "draft_id" 1.179 ) VALUES ( 1.180 "event_v", NEW."author_id", 1.181 - "area_row"."unit_id", "issue_row"."area_id", 1.182 + "area_row"."unit_id", "issue_row"."area_id", "issue_row"."policy_id", 1.183 "initiative_row"."issue_id", "issue_row"."state", 1.184 NEW."initiative_id", NEW."id" 1.185 ); 1.186 @@ -1858,11 +1884,12 @@ 1.187 WHERE "initiative_id" = NEW."id" FOR SHARE; 1.188 INSERT INTO "event" ( 1.189 "event", "member_id", 1.190 - "unit_id", "area_id", "issue_id", "state", 1.191 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.192 "initiative_id", "draft_id" 1.193 ) VALUES ( 1.194 'initiative_revoked', NEW."revoked_by_member_id", 1.195 "area_row"."unit_id", "issue_row"."area_id", 1.196 + "issue_row"."policy_id", 1.197 NEW."issue_id", "issue_row"."state", 1.198 NEW."id", "draft_id_v" 1.199 ); 1.200 @@ -1895,11 +1922,11 @@ 1.201 WHERE "id" = "issue_row"."area_id" FOR SHARE; 1.202 INSERT INTO "event" ( 1.203 "event", "member_id", 1.204 - "unit_id", "area_id", "issue_id", "state", 1.205 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.206 "initiative_id", "suggestion_id" 1.207 ) VALUES ( 1.208 'suggestion_created', NEW."author_id", 1.209 - "area_row"."unit_id", "issue_row"."area_id", 1.210 + "area_row"."unit_id", "issue_row"."area_id", "issue_row"."policy_id", 1.211 "initiative_row"."issue_id", "issue_row"."state", 1.212 NEW."initiative_id", NEW."id" 1.213 ); 1.214 @@ -1932,11 +1959,12 @@ 1.215 WHERE "id" = "issue_row"."area_id" FOR SHARE; 1.216 INSERT INTO "event" ( 1.217 "event", 1.218 - "unit_id", "area_id", "issue_id", "state", 1.219 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.220 "initiative_id", "suggestion_id" 1.221 ) VALUES ( 1.222 'suggestion_removed', 1.223 "area_row"."unit_id", "issue_row"."area_id", 1.224 + "issue_row"."policy_id", 1.225 "initiative_row"."issue_id", "issue_row"."state", 1.226 OLD."initiative_id", OLD."id" 1.227 ); 1.228 @@ -1984,6 +2012,7 @@ 1.229 END IF; 1.230 IF 1.231 OLD."activated" NOTNULL AND 1.232 + -- TODO: NEW."activated" ISNULL? OLD."login" NOTNULL? 1.233 NEW."last_login" ISNULL AND 1.234 NEW."login" ISNULL AND 1.235 NEW."authority_login" ISNULL AND 1.236 @@ -2100,11 +2129,12 @@ 1.237 IF "issue_row"."id" NOTNULL THEN 1.238 INSERT INTO "event" ( 1.239 "event", "member_id", 1.240 - "unit_id", "area_id", "issue_id", "state", 1.241 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.242 "boolean_value" 1.243 ) VALUES ( 1.244 'interest', OLD."member_id", 1.245 "area_row"."unit_id", "issue_row"."area_id", 1.246 + "issue_row"."policy_id", 1.247 OLD."issue_id", "issue_row"."state", 1.248 FALSE 1.249 ); 1.250 @@ -2117,11 +2147,12 @@ 1.251 WHERE "id" = "issue_row"."area_id" FOR SHARE; 1.252 INSERT INTO "event" ( 1.253 "event", "member_id", 1.254 - "unit_id", "area_id", "issue_id", "state", 1.255 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.256 "boolean_value" 1.257 ) VALUES ( 1.258 'interest', NEW."member_id", 1.259 "area_row"."unit_id", "issue_row"."area_id", 1.260 + "issue_row"."policy_id", 1.261 NEW."issue_id", "issue_row"."state", 1.262 TRUE 1.263 ); 1.264 @@ -2166,11 +2197,12 @@ 1.265 WHERE "id" = "issue_row"."area_id" FOR SHARE; 1.266 INSERT INTO "event" ( 1.267 "event", "member_id", 1.268 - "unit_id", "area_id", "issue_id", "state", 1.269 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.270 "initiative_id", "boolean_value" 1.271 ) VALUES ( 1.272 'initiator', OLD."member_id", 1.273 "area_row"."unit_id", "issue_row"."area_id", 1.274 + "issue_row"."policy_id", 1.275 "issue_row"."id", "issue_row"."state", 1.276 OLD."initiative_id", FALSE 1.277 ); 1.278 @@ -2187,11 +2219,12 @@ 1.279 WHERE "id" = "issue_row"."area_id" FOR SHARE; 1.280 INSERT INTO "event" ( 1.281 "event", "member_id", 1.282 - "unit_id", "area_id", "issue_id", "state", 1.283 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.284 "initiative_id", "boolean_value" 1.285 ) VALUES ( 1.286 'initiator', NEW."member_id", 1.287 "area_row"."unit_id", "issue_row"."area_id", 1.288 + "issue_row"."policy_id", 1.289 "issue_row"."id", "issue_row"."state", 1.290 NEW."initiative_id", TRUE 1.291 ); 1.292 @@ -2228,11 +2261,12 @@ 1.293 WHERE "id" = "issue_row"."area_id" FOR SHARE; 1.294 INSERT INTO "event" ( 1.295 "event", "member_id", 1.296 - "unit_id", "area_id", "issue_id", "state", 1.297 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.298 "initiative_id", "draft_id" 1.299 ) VALUES ( 1.300 'support_updated', NEW."member_id", 1.301 "area_row"."unit_id", "issue_row"."area_id", 1.302 + "issue_row"."policy_id", 1.303 "issue_row"."id", "issue_row"."state", 1.304 NEW."initiative_id", NEW."draft_id" 1.305 ); 1.306 @@ -2251,11 +2285,12 @@ 1.307 WHERE "id" = "issue_row"."area_id" FOR SHARE; 1.308 INSERT INTO "event" ( 1.309 "event", "member_id", 1.310 - "unit_id", "area_id", "issue_id", "state", 1.311 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.312 "initiative_id", "boolean_value" 1.313 ) VALUES ( 1.314 'support', OLD."member_id", 1.315 "area_row"."unit_id", "issue_row"."area_id", 1.316 + "issue_row"."policy_id", 1.317 "issue_row"."id", "issue_row"."state", 1.318 OLD."initiative_id", FALSE 1.319 ); 1.320 @@ -2268,11 +2303,12 @@ 1.321 WHERE "id" = "issue_row"."area_id" FOR SHARE; 1.322 INSERT INTO "event" ( 1.323 "event", "member_id", 1.324 - "unit_id", "area_id", "issue_id", "state", 1.325 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.326 "initiative_id", "draft_id", "boolean_value" 1.327 ) VALUES ( 1.328 'support', NEW."member_id", 1.329 "area_row"."unit_id", "issue_row"."area_id", 1.330 + "issue_row"."policy_id", 1.331 "issue_row"."id", "issue_row"."state", 1.332 NEW."initiative_id", NEW."draft_id", TRUE 1.333 ); 1.334 @@ -2325,12 +2361,13 @@ 1.335 WHERE "id" = "issue_row"."area_id" FOR SHARE; 1.336 INSERT INTO "event" ( 1.337 "event", "member_id", 1.338 - "unit_id", "area_id", "issue_id", "state", 1.339 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.340 "initiative_id", "suggestion_id", 1.341 "boolean_value", "numeric_value" 1.342 ) VALUES ( 1.343 'suggestion_rated', OLD."member_id", 1.344 "area_row"."unit_id", "issue_row"."area_id", 1.345 + "issue_row"."policy_id", 1.346 "initiative_row"."issue_id", "issue_row"."state", 1.347 OLD."initiative_id", OLD."suggestion_id", 1.348 NULL, 0 1.349 @@ -2346,12 +2383,13 @@ 1.350 WHERE "id" = "issue_row"."area_id" FOR SHARE; 1.351 INSERT INTO "event" ( 1.352 "event", "member_id", 1.353 - "unit_id", "area_id", "issue_id", "state", 1.354 + "unit_id", "area_id", "policy_id", "issue_id", "state", 1.355 "initiative_id", "suggestion_id", 1.356 "boolean_value", "numeric_value" 1.357 ) VALUES ( 1.358 'suggestion_rated', NEW."member_id", 1.359 "area_row"."unit_id", "issue_row"."area_id", 1.360 + "issue_row"."policy_id", 1.361 "initiative_row"."issue_id", "issue_row"."state", 1.362 NEW."initiative_id", NEW."suggestion_id", 1.363 NEW."fulfilled", NEW."degree"