jinaga-server 3.8.0 → 3.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/postgres/postgres-store.js +18 -4
- package/dist/postgres/postgres-store.js.map +1 -1
- package/dist/postgres/purge-sql.d.ts +10 -0
- package/dist/postgres/purge-sql.js +77 -50
- package/dist/postgres/purge-sql.js.map +1 -1
- package/integration-test/jinaga-test/package-lock.json +4 -4
- package/integration-test/jinaga-test/package.json +1 -1
- package/integration-test/jinaga-test/postgres-keystore-race.test.js +9 -7
- package/integration-test/jinaga-test/purge.test.js +52 -1
- package/package.json +2 -2
- package/src/postgres/postgres-store.ts +19 -5
- package/src/postgres/purge-sql.ts +89 -55
- package/test/postgres/purgeSqlSpec.ts +123 -22
|
@@ -339,12 +339,26 @@ class PostgresStore {
|
|
|
339
339
|
});
|
|
340
340
|
}
|
|
341
341
|
purge(purgeConditions) {
|
|
342
|
+
var _a;
|
|
342
343
|
return __awaiter(this, void 0, void 0, function* () {
|
|
343
|
-
|
|
344
|
+
// Purge all conditions on one root type in a single statement,
|
|
345
|
+
// so that no condition deletes the triggers of another.
|
|
346
|
+
const conditionsByGivenType = new Map();
|
|
344
347
|
for (const specification of purgeConditions) {
|
|
345
|
-
const
|
|
346
|
-
const
|
|
347
|
-
|
|
348
|
+
const givenType = specification.given[0].label.type;
|
|
349
|
+
const group = (_a = conditionsByGivenType.get(givenType)) !== null && _a !== void 0 ? _a : [];
|
|
350
|
+
group.push(specification);
|
|
351
|
+
conditionsByGivenType.set(givenType, group);
|
|
352
|
+
}
|
|
353
|
+
let count = 0;
|
|
354
|
+
for (const specifications of conditionsByGivenType.values()) {
|
|
355
|
+
let factTypes = this.factTypeMap;
|
|
356
|
+
let roleMap = this.roleMap;
|
|
357
|
+
for (const specification of specifications) {
|
|
358
|
+
factTypes = yield this.loadFactTypesFromSpecification(specification);
|
|
359
|
+
roleMap = yield this.loadRolesFromSpecification(specification, factTypes);
|
|
360
|
+
}
|
|
361
|
+
const purgeCommand = (0, purge_sql_1.purgeSqlFromSpecifications)(specifications, factTypes, roleMap, this.schema);
|
|
348
362
|
if (!purgeCommand) {
|
|
349
363
|
continue;
|
|
350
364
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-store.js","sourceRoot":"","sources":["../../src/postgres/postgres-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"postgres-store.js","sourceRoot":"","sources":["../../src/postgres/postgres-store.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAegB;AAGhB,mCAA+C;AAC/C,6CAAsD;AACtD,+CAA4D;AAC5D,iCAsBgB;AAChB,yEAAkI;AAClI,2DAAkD;AAClD,2CAA8E;AA4D9E,SAAS,aAAa,CAAC,MAA4B,EAAE,GAAQ;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC7B,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,IAAI,KAAK,IAAI,EAAE;YACf,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,yBAAyB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACnG;QACD,MAAM,IAAI,GAAkB;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI;SACP,CAAA;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAa,GAAG,CAAC,QAAQ,CAAC;IACxC,OAAO;QACH,KAAK;QACL,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;KAC/B,CAAC;AACN,CAAC;AAED,MAAa,aAAa;IAKtB,YAAa,IAAU,EAAU,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAHvC,gBAAW,GAAgB,IAAA,uBAAgB,GAAE,CAAC;QAC9C,YAAO,GAAY,IAAA,mBAAY,GAAE,CAAC;QAGtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,8BAAiB,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,KAAK;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEK,IAAI,CAAC,SAAyB;;YAChC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAClE,IAAI,CAAC,SAAS,CAAC,IAAA,4BAAmB,EAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;gBAC3D,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;oBACrC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;iBACrE;gBACD,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,GAIpC,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAO,UAAU,EAAE,EAAE;oBAClE,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBACzF,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBACzF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAA,cAAO,EAAC,aAAa,EAAE,CAAC,CAAC,IAAI,EAAE,IAAA,0BAAmB,EAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5G,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;wBACvB,OAAO;4BACH,YAAY,EAAE,EAAE;4BAChB,SAAS;4BACT,KAAK,EAAE,IAAA,mBAAY,GAAE;yBACxB,CAAC;qBACL;oBAED,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAA,kBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBACxG,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBACxH,oEAAoE;oBACpE,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;wBACrC,MAAM,SAAS,GAAG,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;wBAC5C,MAAM,UAAU,GAAG,SAAS;6BACvB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;6BAC5C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAC9C,OAAO;4BACH,IAAI;4BACJ,UAAU;yBACb,CAAC;oBACN,CAAC,CAAC,CAAC;oBACH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;wBAC3B,OAAO;4BACH,YAAY;4BACZ,SAAS;4BACT,KAAK;yBACR,CAAC;qBACL;oBAED,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAChF,MAAM,gBAAgB,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC/F,OAAO;wBACH,YAAY;wBACZ,SAAS;wBACT,KAAK;qBACR,CAAC;gBACN,CAAC,CAAA,CAAC,CAAC;gBACH,IAAI,CAAC,WAAW,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBAC/D,IAAI,CAAC,OAAO,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAClD,OAAO,YAAY,CAAC;aACvB;iBACI;gBACD,OAAO,EAAE,CAAC;aACb;QACL,CAAC;KAAA;IAEK,IAAI,CAAC,KAAsB,EAAE,aAA4B;;YAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC;YAC3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAEhF,wFAAwF;YACxF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,oBAAa,EAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9E,OAAO,EAAE,CAAC;aACb;YAED,MAAM,QAAQ,GAAG,IAAA,qDAA0B,EAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACnG,IAAI,QAAQ,KAAK,IAAI,EAAE;gBACnB,OAAO,EAAE,CAAC;aACb;YAED,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;gBACtE,OAAO,MAAM,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC5D,CAAC,CAAA,CAAC,CAAC;YAEH,2CAA2C;YAC3C,MAAM,cAAc,GAAoB,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAEhF,uCAAuC;YACvC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEjE,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;KAAA;IAEK,IAAI,CAAC,IAAmB,EAAE,KAAsB,EAAE,QAAgB;;YACpE,MAAM,SAAS,GAAgB,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,OAAO,GAAY,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACvE,MAAM,GAAG,GAAG,IAAA,+BAAW,EAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACrF,IAAI,CAAC,GAAG,EAAE;gBACN,OAAO;oBACH,MAAM,EAAE,EAAE;oBACV,QAAQ;iBACX,CAAC;aACL;YAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;gBACpE,OAAO,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;YAC3D,CAAC,CAAA,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/D,OAAO;gBACH,MAAM;gBACN,QAAQ,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;aAC9E,CAAC;QACN,CAAC;KAAA;IAEK,qBAAqB,CAAC,IAAmB;;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;YACnC,MAAM,gBAAgB,GAAG,IAAA,wBAAe,EAAC,IAAI,CAAC;iBACzC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;oBAC3E,OAAO,MAAM,aAAa,CAAC,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1E,CAAC,CAAA,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;gBACjE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;gBAC1B,OAAO,MAAM,CAAC;aACjB;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;KAAA;IAEK,8BAA8B,CAAC,aAA4B;;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;YACnC,MAAM,gBAAgB,GAAG,IAAA,wBAAe,EAAC,aAAa,CAAC;iBAClD,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;oBAC3E,OAAO,MAAM,aAAa,CAAC,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1E,CAAC,CAAA,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;gBACjE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;gBAC1B,OAAO,MAAM,CAAC;aACjB;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;KAAA;IAEK,0BAA0B,CAAC,aAA4B,EAAE,SAAsB;;YACjF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,MAAM,YAAY,GAAG,IAAA,oBAAW,EAAC,aAAa,CAAC;iBAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,oBAAa,EAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;iBACtD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACP,iBAAiB,EAAE,IAAA,oBAAa,EAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAE;gBAC7D,IAAI,EAAE,CAAC,CAAC,IAAI;aACf,CAAC,CAAC;iBACF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,IAAA,cAAO,EAAC,OAAO,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACxF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;oBACvE,OAAO,MAAM,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3E,CAAC,CAAA,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;gBACtB,OAAO,MAAM,CAAC;aACjB;YACD,OAAO,OAAO,CAAC;QACnB,CAAC;KAAA;IAEK,iBAAiB,CAAC,IAAmB,EAAE,SAAsB;;YAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,MAAM,YAAY,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC;iBACjC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACP,iBAAiB,EAAE,IAAA,oBAAa,EAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAE;gBAC7D,IAAI,EAAE,CAAC,CAAC,IAAI;aACf,CAAC,CAAC;iBACF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,IAAA,cAAO,EAAC,OAAO,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACxF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;oBACvE,OAAO,MAAM,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3E,CAAC,CAAA,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;gBACtB,OAAO,MAAM,CAAC;aACjB;YACD,OAAO,OAAO,CAAC;QACnB,CAAC;KAAA;IAEK,UAAU,CAAC,UAA2B;;YACxC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzB,OAAO,EAAE,CAAC;aACb;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;YAErE,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACvC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,cAAc,GAAG,IAAA,YAAO,EAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAC7C,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,GAAG,GACL,gCAAgC;gBAChC,QAAQ,IAAI,CAAC,MAAM,UAAU;gBAC7B,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,8BAA8B;gBACxE,2DAA2D,CAAC;YAChE,MAAM,MAAM,GAAiB,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;gBAChF,OAAO,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YACvD,CAAC,CAAA,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACnB,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CACpE,CACJ,CAAC;YACF,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAEK,IAAI,CAAC,UAA2B;;YAClC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzB,OAAO,EAAE,CAAC;aACb;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;YAErE,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACvC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,cAAc,GAAG,IAAA,YAAO,EAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAC7C,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,GAAG,GACL,2FAA2F;gBAC3F,iFAAiF;gBAC7E,QAAQ,IAAI,CAAC,MAAM,UAAU;gBAC7B,QAAQ,IAAI,CAAC,MAAM,eAAe;gBAClC,uCAAuC;gBACvC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,8BAA8B;gBACxE,2DAA2D;gBAC3D,QAAQ;gBACR,gFAAgF;gBAChF,QAAQ,IAAI,CAAC,MAAM,WAAW;gBAC9B,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,8BAA8B;gBACxE,6DAA6D;gBAC7D,QAAQ,IAAI,CAAC,MAAM,cAAc;gBACjC,8BAA8B;gBAC9B,QAAQ,IAAI,CAAC,MAAM,WAAW;gBAC9B,uCAAuC;gBACvC,QAAQ,IAAI,CAAC,MAAM,eAAe;gBAClC,8CAA8C;gBAClD,yDAAyD;gBACrD,QAAQ,IAAI,CAAC,MAAM,eAAe;gBAClC,QAAQ,IAAI,CAAC,MAAM,gBAAgB;gBACnC,+CAA+C;gBACnD,2BAA2B;gBAC3B,mCAAmC,CAAC;YACxC,MAAM,MAAM,GAAmB,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;gBAClF,OAAO,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YACvD,CAAC,CAAA,CAAC,CAAA;YACF,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CACtC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,kBAAW,EAAC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,EAChE,IAAA,uBAAgB,GAAE,CACrB,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAClC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAwD,CAAC,CAAC,IAAW,CAAC;gBACpG,MAAM,IAAI,GAAuB;oBAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,MAAM;oBACN,YAAY;oBACZ,SAAS,EAAE,CAAC,CAAC,YAAY;iBAC5B,CAAC;gBACF,MAAM,SAAS,GAAkB;oBAC7B,SAAS,EAAE,CAAC,CAAC,UAAU;oBACvB,SAAS,EAAE,CAAC,CAAC,SAAS;iBACzB,CAAC;gBACF,OAAO;oBACH,IAAI;oBACJ,SAAS;iBACZ,CAAA;YACL,CAAC,CAAC,CAAC;YACH,2CAA2C;YAC3C,MAAM,SAAS,GAAmB,OAAO,CAAC,MAAM,CAAC,CAAC,GAAmB,EAAE,MAAM,EAAE,EAAE;gBAC7E,oFAAoF;gBACpF,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;oBACpF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;iBAC1C;qBACI,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,KAAK,IAAI,EAAE;oBAC1C,GAAG,CAAC,IAAI,CAAC;wBACL,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,UAAU,EAAE,EAAE;qBACjB,CAAC,CAAC;iBACN;qBACI;oBACD,GAAG,CAAC,IAAI,CAAC;wBACL,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,UAAU,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;qBACjC,CAAC,CAAC;iBACN;gBACD,OAAO,GAAG,CAAC;YACf,CAAC,EAAE,EAAE,CAAC,CAAC;YACP,4FAA4F;YAC5F,OAAO,SAAS,CAAC;QACrB,CAAC;KAAA;IAEa,2BAA2B,CAAC,UAA2B;;YACjE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;YACnC,MAAM,YAAY,GAAG,UAAU;iBAC1B,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;iBAChC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBACpC,MAAM,CAAC,aAAQ,CAAC,CAAC;YACtB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;oBAC3E,OAAO,MAAM,aAAa,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtE,CAAC,CAAA,CAAC,CAAC;gBACH,MAAM,eAAe,GAAG,IAAA,qBAAc,EAAC,SAAS,EAAE,eAAe,CAAC,CAAC;gBACnE,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC;gBACnC,OAAO,eAAe,CAAC;aAC1B;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;KAAA;IAEK,KAAK,CAAC,eAAgC;;;YACxC,+DAA+D;YAC/D,wDAAwD;YACxD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAA2B,CAAC;YACjE,KAAK,MAAM,aAAa,IAAI,eAAe,EAAE;gBACzC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBACpD,MAAM,KAAK,GAAG,MAAA,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,mCAAI,EAAE,CAAC;gBACzD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1B,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC/C;YAED,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,MAAM,cAAc,IAAI,qBAAqB,CAAC,MAAM,EAAE,EAAE;gBACzD,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;gBACjC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC3B,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE;oBACxC,SAAS,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC;oBACrE,OAAO,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;iBAC7E;gBAED,MAAM,YAAY,GAAG,IAAA,sCAA0B,EAAC,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjG,IAAI,CAAC,YAAY,EAAE;oBACf,SAAS;iBACZ;gBAED,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;gBACzC,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;oBAChE,OAAO,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBACnD,CAAC,CAAA,CAAC,CAAC;gBACH,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;aACjC;YACD,OAAO,KAAK,CAAC;;KAChB;IAEK,gBAAgB,CAAC,SAAwB,EAAE,QAAyB;;YACtE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,CAAE,SAAS,EAAE,GAAG,QAAQ,CAAE,CAAC,CAAC;YACrF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;gBAC9E,OAAO,CAAC,CAAC;aACZ;YAED,MAAM,UAAU,GAAG;gBACf,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC7B,SAAS,CAAC,IAAI;gBACd,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,IAAI,EAAE;aACjE,CAAC;YAEF,MAAM,YAAY,GAAW,IAAA,+BAAmB,EAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAE/E,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;gBAChE,OAAO,MAAM,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC5D,CAAC,CAAA,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;QAChC,CAAC;KAAA;IAEK,YAAY,CAAC,IAAY;;YAC3B,MAAM,GAAG,GAAG,wBAAwB,IAAI,CAAC,MAAM,2BAA2B,CAAC;YAC3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;gBAClE,OAAO,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAA,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,OAAO,EAAE,CAAC;aACb;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnC,CAAC;KAAA;IAEK,YAAY,CAAC,IAAY,EAAE,QAAgB;;YAC7C,MAAM,GAAG,GAAG;0BACM,IAAI,CAAC,MAAM;;;SAG5B,CAAC;YACF,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;gBACnD,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YAClD,CAAC,CAAA,CAAC,CAAC;QACP,CAAC;KAAA;IAED,UAAU,CAAC,iBAAyB;QAChC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,UAAU,CAAC,iBAAyB,EAAE,OAAa;QAC/C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CACJ;AAxZD,sCAwZC;AAED,SAAe,gBAAgB,CAAC,YAA0B,EAAE,UAAsB;;QAC9E,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QACvC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrF,MAAM,IAAI,GAAmB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBAC9C,MAAM,IAAI,GAAkB;oBACxB,IAAI,EAAE,OAAO,CAAC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;oBACnC,MAAM,EAAE,OAAO,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;oBACnC,IAAI,EAAE,OAAO,CAAC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;oBACnC,SAAS,EAAE,OAAO,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC;iBAChD,CAAC;gBACF,uCACO,GAAG,KACN,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,IACrB;YACN,CAAC,EAAE,EAAkB,CAAC,CAAC;YACvB,OAAO,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAkB;YAC9B,SAAS,EAAE,IAAI;YACf,eAAe,EAAE,EAAE;SACtB,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,YAAY,EAAE;YAC3C,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACjE,UAAU,CAAC,eAAe,CAAC,IAAI,iBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI,IACb,cAAc,EACnB,CAAC;SACN;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;CAAA;AAED,SAAS,gBAAgB,CAAC,WAA4C;IAClE,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAC5B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KACvC;IACD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,0BAA0B,CAAC,YAAmC;IACnE,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAe,cAAc,CAAC,KAAmB,EAAE,SAAsB,EAAE,UAAsB,EAAE,MAAc;;QAC7G,MAAM,YAAY,GAAG,KAAK;aACrB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;aAC9E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACpC,MAAM,CAAC,aAAQ,CAAC,CAAC;QACtB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,OAAO,SAAS,CAAC;SACpB;QAED,8BAA8B;QAC9B,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,OAAO,IAAA,qBAAc,EAAC,eAAe,EAAE,SAAS,CAAC,CAAC;SACrD;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,eAAe,MAAM,2BAA2B,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAClF,gCAAgC,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAmB,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAC5F,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SAC3D;QACD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAA,kBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,EAC1D,IAAA,qBAAc,EAAC,eAAe,EAAE,SAAS,CAAC,CAC7C,CAAC;QACF,OAAO,YAAY,CAAC;IACxB,CAAC;CAAA;AAED,SAAe,aAAa,CAAC,aAAuB,EAAE,UAAsB,EAAE,MAAc;;QACxF,MAAM,SAAS,GAAG,kCAAkC,MAAM,gCAAgC,CAAC;QAC3F,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAmB,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QAClG,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAA,kBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,EAC1D,IAAA,uBAAgB,GAAE,CACrB,CAAC;QACF,OAAO,WAAW,CAAC;IACvB,CAAC;CAAA;AAED,SAAe,UAAU,CAAC,KAAmB,EAAE,SAAsB,EAAE,OAAgB,EAAE,UAAsB,EAAE,MAAc;;QAC3H,sBAAsB;QACtB,MAAM,KAAK,GAAG,IAAA,YAAO,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE;YAChC,MAAM,iBAAiB,GAAG,IAAA,0BAAmB,EAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/C,IAAI;gBACJ,iBAAiB;aACpB,CAAC,CAAC,CAAC;QACR,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAClD,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YACpB,CAAC,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB,CACjD,KAAK,KAAK,CAAC,CAAC;QAEb,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,yBAAyB;YACzB,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAA,cAAO,EAChD,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,OAAO,OAAO,CAAC;aAClB;YAED,mBAAmB;YACnB,MAAM,mBAAmB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC3D,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,eAAe,MAAM,6CAA6C;gBAChF,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,kDAAkD,CAAC;YACvD,MAAM,uBAAuB,GAAG,IAAA,YAAO,EAAC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC9D,IAAI,CAAC,IAAI;gBACT,IAAI,CAAC,iBAAiB;aACzB,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAe,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;YACjG,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,EAAE;gBAC1C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;aACtD;YACD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAA,cAAO,EAAC,GAAG,EAAE,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,EAC5E,OAAO,CACV,CAAC;YACF,OAAO,UAAU,CAAC;SACrB;aACI;YACD,OAAO,OAAO,CAAC;SAClB;IACL,CAAC;CAAA;AAED,SAAe,SAAS,CAAC,KAAqD,EAAE,OAAgB,EAAE,UAAsB,EAAE,MAAc;;QACpI,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACzC,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,IAAA,YAAO,EAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,iBAAiB;SACzB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,4DAA4D;YAC1E,SAAS,MAAM,OAAO;YACtB,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,sCAAsC;YACjF,kFAAkF,CAAC;QACvF,MAAM,EAAE,IAAI,EAAE,GAAe,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CACvB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAA,cAAO,EAAC,GAAG,EAAE,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,EAC5E,OAAO,CACV,CAAC;QACF,OAAO,OAAO,CAAC;IACnB,CAAC;CAAA;AAED,SAAe,iBAAiB,CAAC,KAAmB,EAAE,SAAsB,EAAE,UAAsB,EAAE,MAAc;;QAChH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,MAAM,cAAc,GAAoB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,GAAG,cAAc,CAAC,IAAI,CAAC;gBACvB,IAAI;aACP,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAChD,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,GAAG,GAAG,8CAA8C;gBACtD,SAAS,MAAM,OAAO;gBACtB,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,6BAA6B;gBACxE,gEAAgE,CAAC;YACrE,MAAM,EAAE,IAAI,EAAE,GAAe,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YACzE,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAC7B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAA,cAAO,EAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,EACnE,IAAA,mBAAY,GAAE,CACjB,CAAC;YACF,OAAO,aAAa,CAAC;SACxB;aACI;YACD,OAAO,IAAA,mBAAY,GAAE,CAAC;SACzB;IACL,CAAC;CAAA;AAED,SAAe,4BAA4B,CAAC,KAAmB,EAAE,SAAsB,EAAE,aAA+C,EAAE,UAAsB,EAAE,KAAc,EAAE,MAAc;;QAC5L,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACpB,OAAO,IAAA,mBAAY,GAAE,CAAC;SACzB;QAED,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAE5E,MAAM,EAAE,IAAI,EAAE,GAAe,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;SACtD;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAA,cAAO,EAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,EACnE,aAAa,CAChB,CAAC;QACF,OAAO,QAAQ,CAAC;IACpB,CAAC;CAAA;AAED,SAAS,cAAc,CAAC,KAAmB,EAAE,KAAc,EAAE,SAAsB,EAAE,MAAc;IAC/F,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3G,MAAM,cAAc,GAAG,IAAA,YAAO,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAA,0BAAmB,EAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;YAC1F,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,YAAY,EAAE,IAAA,8BAAqB,EAAC,CAAC,CAAC,YAAY,CAAC;SACtD,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAG,IAAA,YAAO,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAA,6BAAe,EAAC,IAAI,CAAC,CAAC,CAAC;IAClE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;QACxB,OAAO,+BAA+B,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;KACpH;SACI;QACD,OAAO;YACH,GAAG,EAAE,eAAe,MAAM,0CAA0C;gBAChE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrB,yCAAyC;YAC7C,UAAU,EAAE,cAAc;SAC7B,CAAC;KACL;AACL,CAAC;AAED,SAAS,+BAA+B,CAAC,KAAmB,EAAE,cAA0F,EAAE,WAAyB,EAAE,SAAsB,EAAE,KAAc,EAAE,UAAoB,EAAE,MAAc;IAC7P,IAAI,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC;IAC5C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,YAAY,CAAC,CAAC;IACtP,MAAM,cAAc,GAAG,IAAA,YAAO,EAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;QAC9C,MAAM,sBAAsB,GAAG,IAAA,0BAAmB,EAAC,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;QAChF,MAAM,wBAAwB,GAAG,IAAA,0BAAmB,EAAC,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACpF,OAAO;YACH,CAAC,CAAC,cAAc;YAChB,sBAAsB;YACtB,CAAC,CAAC,gBAAgB;YAClB,wBAAwB;YACxB,IAAA,gBAAS,EAAC,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC;SACnD,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,eAAe,IAAI,cAAc,CAAC,MAAM,CAAC;IACzC,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,YAAY,CAAC,CAAC;IAC7M,MAAM,kBAAkB,GAAG,IAAA,YAAO,EAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,IAAI;QACX,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,IAAI;QACf,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;KACjC,CAAC,CAAC;IAEH,MAAM,GAAG,GACb;;mBAEmB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;mBAKrB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;mBAKrB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;;;kBAI1B,MAAM;;;;;;kBAMN,MAAM;;;;;;;;;;;;;;;eAeT,MAAM;;;;;;;;;;;;;;;;;;;eAmBN,MAAM;;;;;;kBAMH,MAAM;;;;;;;eAOT,MAAM;;;;;oBAKD,CAAC;IACjB,MAAM,UAAU,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,kBAAkB,CAAC,CAAC;IACjF,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACxB,MAAM,aAAa,GAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1E,MAAM,kBAAkB,GAAoB,qBAAqB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACxF,OAAO,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CACtC;YACI,IAAI,EAAE,aAAa;YACnB,QAAQ;SACX,CACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,qBAAqB,CAAC,aAA4B,EAAE,KAAmB;IAC5E,OAAO,KAAK;SACP,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC;SAC3E,OAAO,CAAC,IAAI,CAAC,EAAE;QACZ,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBAC7B,OAAO,YAAY,CAAC;aACvB;iBACI;gBACD,OAAO,CAAC,YAAY,CAAC,CAAC;aACzB;QACL,CAAC,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;QACnH,OAAO,CAAC,GAAG,qBAAqB,EAAE,GAAG,kBAAkB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACX,CAAC;AAED,SAAe,eAAe,CAAC,SAAyB,EAAE,UAAsB,EAAE,MAAc;;QAC5F,8BAA8B;QAC9B,MAAM,UAAU,GAAG,IAAA,YAAO,EAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aACzE,MAAM,CAAC,aAAQ,CAAC,CAAC;QACtB,MAAM,SAAS,GAAG,yCAAyC,MAAM,uCAAuC,CAAC;QACzG,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAoB,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAChG,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CACpC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAA,kBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,aAAa,CAAC,EACjE,IAAA,wBAAiB,GAAE,CACtB,CAAC;QACF,MAAM,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC,OAAO,YAAY,CAAC;SACvB;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,eAAe,MAAM,kCAAkC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACzF,uCAAuC,CAAC;QAC5C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAoB,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAClG,IAAI,OAAO,CAAC,MAAM,KAAK,mBAAmB,CAAC,MAAM,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC5D;QACD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAA,kBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,aAAa,CAAC,EACjE,YAAY,CACf,CAAC;QACF,OAAO,eAAe,CAAC;IAC3B,CAAC;CAAA;AAED,SAAe,gBAAgB,CAAC,SAAyB,EAAE,QAAiB,EAAE,SAAsB,EAAE,SAAuB,EAAE,UAAsB,EAAE,MAAc;;QACjK,MAAM,gBAAgB,GAAG,IAAA,YAAO,EAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1F,MAAM,EAAE,IAAA,gBAAS,EAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAA,0BAAmB,EAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnG,WAAW,EAAE,IAAA,qBAAc,EAAC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;YAC3D,SAAS,EAAE,SAAS,CAAC,SAAS;SACjC,CAAC,CAAC,CAAC,CAAC;QACL,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClD,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvE,MAAM,mBAAmB,GAAG,IAAA,YAAO,EAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CACtD,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAE5C,MAAM,GAAG,GAAG,eAAe,MAAM;;;4BAGb,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;mCACnB,CAAC;YAC5B,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;SACpD;IACL,CAAC;CAAA;AAED,SAAS,cAAc,CAAC,IAAgB;IACpC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CACtE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAC3D,CAAC;IACF,OAAO,UAAU,CAAC;AACtB,CAAC"}
|
|
@@ -5,3 +5,13 @@ export declare function purgeSqlFromSpecification(specification: Specification,
|
|
|
5
5
|
sql: string;
|
|
6
6
|
parameters: (string | number)[];
|
|
7
7
|
} | null;
|
|
8
|
+
/**
|
|
9
|
+
* Generate one statement that purges under every given purge condition at once.
|
|
10
|
+
* The conditions must share a given type. Every trigger of every condition,
|
|
11
|
+
* and every ancestor of those triggers, is spared. Running the conditions one
|
|
12
|
+
* statement at a time would let one condition delete another's triggers.
|
|
13
|
+
*/
|
|
14
|
+
export declare function purgeSqlFromSpecifications(specifications: Specification[], factTypes: FactTypeMap, roleMap: RoleMap, schema: string): {
|
|
15
|
+
sql: string;
|
|
16
|
+
parameters: (string | number)[];
|
|
17
|
+
} | null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.purgeSqlFromSpecification = exports.purgeDescendantsSql = void 0;
|
|
3
|
+
exports.purgeSqlFromSpecifications = exports.purgeSqlFromSpecification = exports.purgeDescendantsSql = void 0;
|
|
4
4
|
const query_description_1 = require("./query-description");
|
|
5
5
|
function purgeDescendantsSql(triggerCount, schema) {
|
|
6
6
|
let whereClause = " WHERE (t.fact_type_id = $3 AND t.hash = $4)\n";
|
|
@@ -41,6 +41,26 @@ function purgeDescendantsSql(triggerCount, schema) {
|
|
|
41
41
|
}
|
|
42
42
|
exports.purgeDescendantsSql = purgeDescendantsSql;
|
|
43
43
|
function purgeSqlFromSpecification(specification, factTypes, roleMap, schema) {
|
|
44
|
+
return purgeSqlFromSpecifications([specification], factTypes, roleMap, schema);
|
|
45
|
+
}
|
|
46
|
+
exports.purgeSqlFromSpecification = purgeSqlFromSpecification;
|
|
47
|
+
/**
|
|
48
|
+
* Generate one statement that purges under every given purge condition at once.
|
|
49
|
+
* The conditions must share a given type. Every trigger of every condition,
|
|
50
|
+
* and every ancestor of those triggers, is spared. Running the conditions one
|
|
51
|
+
* statement at a time would let one condition delete another's triggers.
|
|
52
|
+
*/
|
|
53
|
+
function purgeSqlFromSpecifications(specifications, factTypes, roleMap, schema) {
|
|
54
|
+
const queryDescriptions = specifications
|
|
55
|
+
.map(specification => purgeQueryDescription(specification, factTypes, roleMap))
|
|
56
|
+
.filter((queryDescription) => queryDescription !== null);
|
|
57
|
+
if (queryDescriptions.length === 0) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return generatePurgeSqlQuery(queryDescriptions, schema);
|
|
61
|
+
}
|
|
62
|
+
exports.purgeSqlFromSpecifications = purgeSqlFromSpecifications;
|
|
63
|
+
function purgeQueryDescription(specification, factTypes, roleMap) {
|
|
44
64
|
const queryDescriptionBuilder = new query_description_1.QueryDescriptionBuilder(factTypes, roleMap);
|
|
45
65
|
let queryDescription = query_description_1.QueryDescription.unsatisfiable;
|
|
46
66
|
let knownFacts = {};
|
|
@@ -63,54 +83,47 @@ function purgeSqlFromSpecification(specification, factTypes, roleMap, schema) {
|
|
|
63
83
|
if (!queryDescription.isSatisfiable()) {
|
|
64
84
|
return null;
|
|
65
85
|
}
|
|
66
|
-
const query = generatePurgeSqlQuery(queryDescription, schema);
|
|
67
|
-
return query;
|
|
68
|
-
}
|
|
69
|
-
exports.purgeSqlFromSpecification = purgeSqlFromSpecification;
|
|
70
|
-
function generatePurgeSqlQuery(queryDescription, schema) {
|
|
71
86
|
if (queryDescription.existentialConditions.length > 0) {
|
|
72
87
|
throw new Error("Purge conditions should not have existential conditions");
|
|
73
88
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
.
|
|
88
|
-
.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
`
|
|
94
|
-
`
|
|
95
|
-
`
|
|
96
|
-
` )\n`)
|
|
97
|
-
.join("");
|
|
98
|
-
const sql = `WITH candidates AS (\n` +
|
|
99
|
-
` SELECT\n` +
|
|
100
|
-
` f${firstFactIndex}.fact_id as purge_root,\n` +
|
|
101
|
-
` ${columns}\n` +
|
|
102
|
-
` FROM ${schema}.fact f${firstFactIndex}\n${joins.join("")}` +
|
|
103
|
-
` WHERE ${inputWhereClauses}\n` +
|
|
89
|
+
return queryDescription;
|
|
90
|
+
}
|
|
91
|
+
function generatePurgeSqlQuery(queryDescriptions, schema) {
|
|
92
|
+
const parameters = [];
|
|
93
|
+
const candidateCtes = [];
|
|
94
|
+
const rootSelects = [];
|
|
95
|
+
const triggerSelects = [];
|
|
96
|
+
queryDescriptions.forEach((queryDescription, conditionIndex) => {
|
|
97
|
+
const name = `candidates${conditionIndex + 1}`;
|
|
98
|
+
const offset = parameters.length;
|
|
99
|
+
candidateCtes.push(`${name} AS (\n${generateCandidates(queryDescription, offset, schema)})`);
|
|
100
|
+
// Remove parameter 2, which is the hash of the first fact
|
|
101
|
+
parameters.push(queryDescription.parameters[0], ...queryDescription.parameters.slice(2));
|
|
102
|
+
rootSelects.push(` SELECT purge_root FROM ${name}\n`);
|
|
103
|
+
queryDescription.outputs.forEach((label, index) => {
|
|
104
|
+
triggerSelects.push(` SELECT trigger${index + 1} AS fact_id FROM ${name}\n`);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
const sql = `WITH ${candidateCtes.join(", ")}, roots AS (\n` +
|
|
108
|
+
rootSelects.join(` UNION\n`) +
|
|
109
|
+
`), triggers AS (\n` +
|
|
110
|
+
triggerSelects.join(` UNION\n`) +
|
|
104
111
|
`), targets AS (\n` +
|
|
105
112
|
` SELECT a.fact_id\n` +
|
|
106
113
|
` FROM ${schema}.ancestor a\n` +
|
|
107
|
-
` JOIN
|
|
114
|
+
` JOIN roots r ON r.purge_root = a.ancestor_fact_id\n` +
|
|
108
115
|
` WHERE NOT EXISTS (\n` +
|
|
109
116
|
` SELECT 1\n` +
|
|
110
|
-
` FROM
|
|
111
|
-
` WHERE
|
|
117
|
+
` FROM triggers t\n` +
|
|
118
|
+
` WHERE a.fact_id = t.fact_id\n` +
|
|
119
|
+
` )\n` +
|
|
120
|
+
` AND NOT EXISTS (\n` +
|
|
121
|
+
` SELECT 1\n` +
|
|
122
|
+
` FROM triggers t\n` +
|
|
123
|
+
` JOIN ${schema}.ancestor a2\n` +
|
|
124
|
+
` ON a2.fact_id = t.fact_id\n` +
|
|
125
|
+
` WHERE a.fact_id = a2.ancestor_fact_id\n` +
|
|
112
126
|
` )\n` +
|
|
113
|
-
triggerAncestorClauses +
|
|
114
127
|
`), facts AS (\n` +
|
|
115
128
|
` DELETE\n` +
|
|
116
129
|
` FROM ${schema}.fact f\n` +
|
|
@@ -118,17 +131,31 @@ function generatePurgeSqlQuery(queryDescription, schema) {
|
|
|
118
131
|
` RETURNING f.fact_id\n` +
|
|
119
132
|
`)\n` +
|
|
120
133
|
`SELECT fact_id FROM facts\n`;
|
|
121
|
-
// Remove parameter 1, which is the hash of the first fact
|
|
122
|
-
const parameters = [
|
|
123
|
-
queryDescription.parameters[0],
|
|
124
|
-
...queryDescription.parameters.slice(2)
|
|
125
|
-
];
|
|
126
134
|
return {
|
|
127
135
|
sql,
|
|
128
|
-
parameters
|
|
136
|
+
parameters
|
|
129
137
|
};
|
|
130
138
|
}
|
|
131
|
-
function
|
|
139
|
+
function generateCandidates(queryDescription, offset, schema) {
|
|
140
|
+
const columns = queryDescription.outputs
|
|
141
|
+
.map((label, index) => `f${label.factIndex}.fact_id as trigger${index + 1}`)
|
|
142
|
+
.join(",\n ");
|
|
143
|
+
const firstEdge = queryDescription.edges[0];
|
|
144
|
+
const predecessorFact = queryDescription.inputs.find(i => i.factIndex === firstEdge.predecessorFactIndex);
|
|
145
|
+
const successorFact = queryDescription.inputs.find(i => i.factIndex === firstEdge.successorFactIndex);
|
|
146
|
+
const firstFactIndex = predecessorFact ? predecessorFact.factIndex : successorFact.factIndex;
|
|
147
|
+
const writtenFactIndexes = new Set().add(firstFactIndex);
|
|
148
|
+
const joins = generateJoins(queryDescription.edges, writtenFactIndexes, offset, schema);
|
|
149
|
+
const inputWhereClauses = queryDescription.inputs
|
|
150
|
+
.map(input => `f${input.factIndex}.fact_type_id = $${input.factTypeParameter + offset}`)
|
|
151
|
+
.join(" AND ");
|
|
152
|
+
return (` SELECT\n` +
|
|
153
|
+
` f${firstFactIndex}.fact_id as purge_root,\n` +
|
|
154
|
+
` ${columns}\n` +
|
|
155
|
+
` FROM ${schema}.fact f${firstFactIndex}\n${joins.join("")}` +
|
|
156
|
+
` WHERE ${inputWhereClauses}\n`);
|
|
157
|
+
}
|
|
158
|
+
function generateJoins(edges, writtenFactIndexes, offset, schema) {
|
|
132
159
|
const joins = [];
|
|
133
160
|
edges.forEach(edge => {
|
|
134
161
|
if (writtenFactIndexes.has(edge.predecessorFactIndex)) {
|
|
@@ -136,12 +163,12 @@ function generateJoins(edges, writtenFactIndexes, schema) {
|
|
|
136
163
|
joins.push(` JOIN ${schema}.edge e${edge.edgeIndex}\n` +
|
|
137
164
|
` ON e${edge.edgeIndex}.predecessor_fact_id = f${edge.predecessorFactIndex}.fact_id\n` +
|
|
138
165
|
` AND e${edge.edgeIndex}.successor_fact_id = f${edge.successorFactIndex}.fact_id\n` +
|
|
139
|
-
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1}\n`);
|
|
166
|
+
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1 + offset}\n`);
|
|
140
167
|
}
|
|
141
168
|
else {
|
|
142
169
|
joins.push(` JOIN ${schema}.edge e${edge.edgeIndex}\n` +
|
|
143
170
|
` ON e${edge.edgeIndex}.predecessor_fact_id = f${edge.predecessorFactIndex}.fact_id\n` +
|
|
144
|
-
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1}\n`);
|
|
171
|
+
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1 + offset}\n`);
|
|
145
172
|
joins.push(` JOIN ${schema}.fact f${edge.successorFactIndex}\n` +
|
|
146
173
|
` ON f${edge.successorFactIndex}.fact_id = e${edge.edgeIndex}.successor_fact_id\n`);
|
|
147
174
|
writtenFactIndexes.add(edge.successorFactIndex);
|
|
@@ -150,7 +177,7 @@ function generateJoins(edges, writtenFactIndexes, schema) {
|
|
|
150
177
|
else if (writtenFactIndexes.has(edge.successorFactIndex)) {
|
|
151
178
|
joins.push(` JOIN ${schema}.edge e${edge.edgeIndex}\n` +
|
|
152
179
|
` ON e${edge.edgeIndex}.successor_fact_id = f${edge.successorFactIndex}.fact_id\n` +
|
|
153
|
-
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1}\n`);
|
|
180
|
+
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1 + offset}\n`);
|
|
154
181
|
joins.push(` JOIN ${schema}.fact f${edge.predecessorFactIndex}\n` +
|
|
155
182
|
` ON f${edge.predecessorFactIndex}.fact_id = e${edge.edgeIndex}.predecessor_fact_id\n`);
|
|
156
183
|
writtenFactIndexes.add(edge.predecessorFactIndex);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purge-sql.js","sourceRoot":"","sources":["../../src/postgres/purge-sql.ts"],"names":[],"mappings":";;;AAEA,2DAA8G;AAE9G,SAAgB,mBAAmB,CAAC,YAAoB,EAAE,MAAc;IACpE,IAAI,WAAW,GAAG,mDAAmD,CAAC;IACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;QACnC,WAAW,IAAI,iCAAiC,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;KAC7F;IACD,MAAM,GAAG,GACL,wBAAwB;QACxB,yBAAyB;QACzB,YAAY,MAAM,YAAY;QAC9B,kCAAkC;QAClC,4BAA4B;QAC5B,oBAAoB;QACpB,wBAAwB;QACxB,YAAY,MAAM,WAAW;QAC7B,WAAW;QACX,kCAAkC;QAClC,wBAAwB;QACxB,uBAAuB;QACvB,aAAa;QACb,iCAAiC;QACjC,YAAY,MAAM,eAAe;QACjC,uBAAuB;QACvB,oCAAoC;QACpC,mBAAmB;QACnB,wBAAwB;QACxB,YAAY,MAAM,eAAe;QACjC,0BAA0B;QAC1B,8CAA8C;QAC9C,qEAAqE;QACrE,iBAAiB;QACjB,cAAc;QACd,YAAY,MAAM,WAAW;QAC7B,mDAAmD;QACnD,2BAA2B;QAC3B,KAAK;QACL,6BAA6B,CAAC;IAClC,OAAO,GAAG,CAAC;AACf,CAAC;AArCD,kDAqCC;AAED,SAAgB,yBAAyB,CAAC,aAA4B,EAAE,SAAsB,EAAE,OAAgB,EAAE,MAAc;IAE5H,MAAM,uBAAuB,GAAG,IAAI,2CAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEhF,IAAI,gBAAgB,GAAG,oCAAgB,CAAC,aAAa,CAAC;IACtD,IAAI,UAAU,GAAgB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,KAAK,GAAoB,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAErG,uBAAuB;IACvB,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,uBAAuB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAE7I,gCAAgC;IAChC,KAAK,MAAM,SAAS,IAAI,aAAa,CAAC,KAAK,EAAE;QACzC,IAAI,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzD,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE;gBAC1C,MAAM,EAAE,KAAK,EAAE,+BAA+B,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC1I,MAAM,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,GAAG,uBAAuB,CAAC,QAAQ,CAAC,+BAA+B,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;gBAE1L,IAAI,2BAA2B,CAAC,aAAa,EAAE,EAAE;oBAC7C,gBAAgB,GAAG,2BAA2B,CAAC;iBAClD;aACJ;SACJ;KACJ;IAED,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE;QACnC,OAAO,IAAI,CAAC;KACf;IAED,
|
|
1
|
+
{"version":3,"file":"purge-sql.js","sourceRoot":"","sources":["../../src/postgres/purge-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"express": "^4.21.2",
|
|
15
15
|
"jest": "^29.7.0",
|
|
16
16
|
"jest-compact-reporter": "^1.2.9",
|
|
17
|
-
"jinaga": "^6.
|
|
17
|
+
"jinaga": "^6.15.0",
|
|
18
18
|
"node-forge": "^1.3.0",
|
|
19
19
|
"pg": "^8.13.1"
|
|
20
20
|
},
|
|
@@ -3195,9 +3195,9 @@
|
|
|
3195
3195
|
}
|
|
3196
3196
|
},
|
|
3197
3197
|
"node_modules/jinaga": {
|
|
3198
|
-
"version": "6.
|
|
3199
|
-
"resolved": "https://registry.npmjs.org/jinaga/-/jinaga-6.
|
|
3200
|
-
"integrity": "sha512-
|
|
3198
|
+
"version": "6.15.0",
|
|
3199
|
+
"resolved": "https://registry.npmjs.org/jinaga/-/jinaga-6.15.0.tgz",
|
|
3200
|
+
"integrity": "sha512-JUcAPJYtdDfHoeddoICUlTr28q8uSQj1AsAC7VAj1khleuCMKInXfQTtnEZpqm0VUApj40rPSR7TOpcMekQp6w==",
|
|
3201
3201
|
"license": "MIT",
|
|
3202
3202
|
"dependencies": {
|
|
3203
3203
|
"@stablelib/base64": "^1.0.1",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const { randomUUID } = require('crypto');
|
|
1
2
|
const { Pool } = require('pg');
|
|
2
3
|
const { PostgresKeystore } = require('jinaga-server');
|
|
3
4
|
|
|
@@ -13,14 +14,15 @@ describe('PostgresKeystore concurrency race', () => {
|
|
|
13
14
|
await pool.end();
|
|
14
15
|
});
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
// Each test uses a fresh identity, so no row exists yet and the
|
|
18
|
+
// select-then-insert path starts clean. The app role cannot delete
|
|
19
|
+
// from the user table, so the test cannot clear rows itself.
|
|
20
|
+
function uniqueIdentity(prefix) {
|
|
21
|
+
return { provider: 'test-provider', id: `${prefix}-${randomUUID()}` };
|
|
22
|
+
}
|
|
21
23
|
|
|
22
24
|
it('should not fail when two concurrent requests create the same user key pair', async () => {
|
|
23
|
-
const userIdentity =
|
|
25
|
+
const userIdentity = uniqueIdentity('race-user-1');
|
|
24
26
|
|
|
25
27
|
// Two separate keystore instances model two concurrent requests that
|
|
26
28
|
// each build a fresh runtime (empty in-process cache), as described in
|
|
@@ -48,7 +50,7 @@ describe('PostgresKeystore concurrency race', () => {
|
|
|
48
50
|
});
|
|
49
51
|
|
|
50
52
|
it('should tolerate many concurrent creations of the same identity', async () => {
|
|
51
|
-
const userIdentity =
|
|
53
|
+
const userIdentity = uniqueIdentity('race-user-2');
|
|
52
54
|
|
|
53
55
|
// A larger fan-out of fresh runtimes all racing on the same identity.
|
|
54
56
|
const keystores = Array.from({ length: 8 }, () => new PostgresKeystore(pool, 'public'));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const { JinagaServer } = require("./jinaga-server");
|
|
2
|
-
const { createModel, Item, Order, OrderCancelled, OrderCancelledReason, Product, Store } = require("./orderModel");
|
|
2
|
+
const { createModel, Item, Order, OrderCancelled, OrderCancelledReason, OrderShipped, Product, Store } = require("./orderModel");
|
|
3
3
|
|
|
4
4
|
const host = "db";
|
|
5
5
|
// const host = "localhost";
|
|
@@ -78,6 +78,57 @@ describe("After-the-fact purge", () => {
|
|
|
78
78
|
const cancels = await jPurge.query(cancelOfOrder, order);
|
|
79
79
|
expect(cancels).toEqual([orderCancelled]);
|
|
80
80
|
});
|
|
81
|
+
|
|
82
|
+
describe("with two conditions on one root type", () => {
|
|
83
|
+
let jPurgeBoth;
|
|
84
|
+
let closePurgeBoth;
|
|
85
|
+
|
|
86
|
+
beforeEach(() => {
|
|
87
|
+
({ j: jPurgeBoth, close: closePurgeBoth } = JinagaServer.create({
|
|
88
|
+
pgKeystore: connectionString,
|
|
89
|
+
pgStore: connectionString,
|
|
90
|
+
purgeConditions: p => p
|
|
91
|
+
.whenExists(model.given(Order).match((order, facts) => facts.ofType(OrderCancelled)
|
|
92
|
+
.join(orderCancelled => orderCancelled.order, order)
|
|
93
|
+
))
|
|
94
|
+
.whenExists(model.given(Order).match((order, facts) => facts.ofType(OrderShipped)
|
|
95
|
+
.join(orderShipped => orderShipped.order, order)
|
|
96
|
+
))
|
|
97
|
+
}));
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
afterEach(async () => {
|
|
101
|
+
await closePurgeBoth();
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it("Should keep the triggers of both conditions", async () => {
|
|
105
|
+
const store = await jInit.fact(new Store("storeId"));
|
|
106
|
+
const order = await jInit.fact(new Order(store, new Date()));
|
|
107
|
+
await jInit.fact(new Item(order, new Product(store, "product1"), 1));
|
|
108
|
+
await jInit.fact(new Item(order, new Product(store, "product2"), 1));
|
|
109
|
+
const orderCancelled = await jInit.fact(new OrderCancelled(order, new Date()));
|
|
110
|
+
const orderShipped = await jInit.fact(new OrderShipped(order, new Date()));
|
|
111
|
+
|
|
112
|
+
const cancelOfOrder = model.given(Order).match(order =>
|
|
113
|
+
order.successors(OrderCancelled, cancelled => cancelled.order)
|
|
114
|
+
);
|
|
115
|
+
const shipmentOfOrder = model.given(Order).match(order =>
|
|
116
|
+
order.successors(OrderShipped, shipped => shipped.order)
|
|
117
|
+
);
|
|
118
|
+
const itemsInOrder = model.given(Order).match(order =>
|
|
119
|
+
order.successors(Item, item => item.order)
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
await jPurgeBoth.purge();
|
|
123
|
+
|
|
124
|
+
const cancels = await jPurgeBoth.query(cancelOfOrder, order);
|
|
125
|
+
expect(cancels).toEqual([orderCancelled]);
|
|
126
|
+
const shipments = await jPurgeBoth.query(shipmentOfOrder, order);
|
|
127
|
+
expect(shipments).toEqual([orderShipped]);
|
|
128
|
+
const items = await jPurgeBoth.query(itemsInOrder, order);
|
|
129
|
+
expect(items).toEqual([]);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
81
132
|
});
|
|
82
133
|
|
|
83
134
|
describe("Real-time purge", () => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jinaga-server",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.1",
|
|
4
4
|
"description": "Data management for web and mobile applications.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"csv-stringify": "^6.6.0",
|
|
51
51
|
"express": "^4.21.2",
|
|
52
|
-
"jinaga": "^6.
|
|
52
|
+
"jinaga": "^6.15.0",
|
|
53
53
|
"pg": "^8.13.1"
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
} from "./maps";
|
|
45
45
|
import { ResultSetFact, ResultSetRow, ResultSetTree, resultSqlFromSpecification, SqlQueryTree } from "./specification-result-sql";
|
|
46
46
|
import { sqlFromFeed } from "./specification-sql";
|
|
47
|
-
import { purgeDescendantsSql,
|
|
47
|
+
import { purgeDescendantsSql, purgeSqlFromSpecifications } from "./purge-sql";
|
|
48
48
|
|
|
49
49
|
interface PostgresFactRecord extends FactRecord {
|
|
50
50
|
timestamp: Date; // Maps to date_learned column
|
|
@@ -451,12 +451,26 @@ export class PostgresStore implements Storage {
|
|
|
451
451
|
}
|
|
452
452
|
|
|
453
453
|
async purge(purgeConditions: Specification[]): Promise<number> {
|
|
454
|
-
|
|
454
|
+
// Purge all conditions on one root type in a single statement,
|
|
455
|
+
// so that no condition deletes the triggers of another.
|
|
456
|
+
const conditionsByGivenType = new Map<string, Specification[]>();
|
|
455
457
|
for (const specification of purgeConditions) {
|
|
456
|
-
const
|
|
457
|
-
const
|
|
458
|
+
const givenType = specification.given[0].label.type;
|
|
459
|
+
const group = conditionsByGivenType.get(givenType) ?? [];
|
|
460
|
+
group.push(specification);
|
|
461
|
+
conditionsByGivenType.set(givenType, group);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
let count = 0;
|
|
465
|
+
for (const specifications of conditionsByGivenType.values()) {
|
|
466
|
+
let factTypes = this.factTypeMap;
|
|
467
|
+
let roleMap = this.roleMap;
|
|
468
|
+
for (const specification of specifications) {
|
|
469
|
+
factTypes = await this.loadFactTypesFromSpecification(specification);
|
|
470
|
+
roleMap = await this.loadRolesFromSpecification(specification, factTypes);
|
|
471
|
+
}
|
|
458
472
|
|
|
459
|
-
const purgeCommand =
|
|
473
|
+
const purgeCommand = purgeSqlFromSpecifications(specifications, factTypes, roleMap, this.schema);
|
|
460
474
|
if (!purgeCommand) {
|
|
461
475
|
continue;
|
|
462
476
|
}
|
|
@@ -43,6 +43,29 @@ export function purgeDescendantsSql(triggerCount: number, schema: string): strin
|
|
|
43
43
|
|
|
44
44
|
export function purgeSqlFromSpecification(specification: Specification, factTypes: FactTypeMap, roleMap: RoleMap, schema: string):
|
|
45
45
|
{ sql: string, parameters: (string | number)[] } | null {
|
|
46
|
+
return purgeSqlFromSpecifications([specification], factTypes, roleMap, schema);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Generate one statement that purges under every given purge condition at once.
|
|
51
|
+
* The conditions must share a given type. Every trigger of every condition,
|
|
52
|
+
* and every ancestor of those triggers, is spared. Running the conditions one
|
|
53
|
+
* statement at a time would let one condition delete another's triggers.
|
|
54
|
+
*/
|
|
55
|
+
export function purgeSqlFromSpecifications(specifications: Specification[], factTypes: FactTypeMap, roleMap: RoleMap, schema: string):
|
|
56
|
+
{ sql: string, parameters: (string | number)[] } | null {
|
|
57
|
+
const queryDescriptions = specifications
|
|
58
|
+
.map(specification => purgeQueryDescription(specification, factTypes, roleMap))
|
|
59
|
+
.filter((queryDescription): queryDescription is QueryDescription => queryDescription !== null);
|
|
60
|
+
|
|
61
|
+
if (queryDescriptions.length === 0) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return generatePurgeSqlQuery(queryDescriptions, schema);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function purgeQueryDescription(specification: Specification, factTypes: FactTypeMap, roleMap: RoleMap): QueryDescription | null {
|
|
46
69
|
const queryDescriptionBuilder = new QueryDescriptionBuilder(factTypes, roleMap);
|
|
47
70
|
|
|
48
71
|
let queryDescription = QueryDescription.unsatisfiable;
|
|
@@ -71,61 +94,56 @@ export function purgeSqlFromSpecification(specification: Specification, factType
|
|
|
71
94
|
return null;
|
|
72
95
|
}
|
|
73
96
|
|
|
74
|
-
const query = generatePurgeSqlQuery(queryDescription, schema);
|
|
75
|
-
return query;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
function generatePurgeSqlQuery(queryDescription: QueryDescription, schema: string):
|
|
80
|
-
{ sql: string, parameters: (string | number)[] } {
|
|
81
97
|
if (queryDescription.existentialConditions.length > 0) {
|
|
82
98
|
throw new Error("Purge conditions should not have existential conditions");
|
|
83
99
|
}
|
|
84
100
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
`
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
)
|
|
110
|
-
.join("");
|
|
101
|
+
return queryDescription;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function generatePurgeSqlQuery(queryDescriptions: QueryDescription[], schema: string):
|
|
105
|
+
{ sql: string, parameters: (string | number)[] } {
|
|
106
|
+
const parameters: (string | number)[] = [];
|
|
107
|
+
const candidateCtes: string[] = [];
|
|
108
|
+
const rootSelects: string[] = [];
|
|
109
|
+
const triggerSelects: string[] = [];
|
|
110
|
+
|
|
111
|
+
queryDescriptions.forEach((queryDescription, conditionIndex) => {
|
|
112
|
+
const name = `candidates${conditionIndex + 1}`;
|
|
113
|
+
const offset = parameters.length;
|
|
114
|
+
candidateCtes.push(`${name} AS (\n${generateCandidates(queryDescription, offset, schema)})`);
|
|
115
|
+
// Remove parameter 2, which is the hash of the first fact
|
|
116
|
+
parameters.push(
|
|
117
|
+
queryDescription.parameters[0],
|
|
118
|
+
...queryDescription.parameters.slice(2)
|
|
119
|
+
);
|
|
120
|
+
rootSelects.push(` SELECT purge_root FROM ${name}\n`);
|
|
121
|
+
queryDescription.outputs.forEach((label, index) => {
|
|
122
|
+
triggerSelects.push(` SELECT trigger${index + 1} AS fact_id FROM ${name}\n`);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
111
125
|
|
|
112
126
|
const sql =
|
|
113
|
-
`WITH
|
|
114
|
-
`
|
|
115
|
-
`
|
|
116
|
-
`
|
|
117
|
-
` FROM ${schema}.fact f${firstFactIndex}\n${joins.join("")}` +
|
|
118
|
-
` WHERE ${inputWhereClauses}\n` +
|
|
127
|
+
`WITH ${candidateCtes.join(", ")}, roots AS (\n` +
|
|
128
|
+
rootSelects.join(` UNION\n`) +
|
|
129
|
+
`), triggers AS (\n` +
|
|
130
|
+
triggerSelects.join(` UNION\n`) +
|
|
119
131
|
`), targets AS (\n` +
|
|
120
132
|
` SELECT a.fact_id\n` +
|
|
121
133
|
` FROM ${schema}.ancestor a\n` +
|
|
122
|
-
` JOIN
|
|
134
|
+
` JOIN roots r ON r.purge_root = a.ancestor_fact_id\n` +
|
|
123
135
|
` WHERE NOT EXISTS (\n` +
|
|
124
136
|
` SELECT 1\n` +
|
|
125
|
-
` FROM
|
|
126
|
-
` WHERE
|
|
137
|
+
` FROM triggers t\n` +
|
|
138
|
+
` WHERE a.fact_id = t.fact_id\n` +
|
|
139
|
+
` )\n` +
|
|
140
|
+
` AND NOT EXISTS (\n` +
|
|
141
|
+
` SELECT 1\n` +
|
|
142
|
+
` FROM triggers t\n` +
|
|
143
|
+
` JOIN ${schema}.ancestor a2\n` +
|
|
144
|
+
` ON a2.fact_id = t.fact_id\n` +
|
|
145
|
+
` WHERE a.fact_id = a2.ancestor_fact_id\n` +
|
|
127
146
|
` )\n` +
|
|
128
|
-
triggerAncestorClauses +
|
|
129
147
|
`), facts AS (\n` +
|
|
130
148
|
` DELETE\n` +
|
|
131
149
|
` FROM ${schema}.fact f\n` +
|
|
@@ -133,21 +151,37 @@ function generatePurgeSqlQuery(queryDescription: QueryDescription, schema: strin
|
|
|
133
151
|
` RETURNING f.fact_id\n` +
|
|
134
152
|
`)\n` +
|
|
135
153
|
`SELECT fact_id FROM facts\n`;
|
|
136
|
-
|
|
137
|
-
// Remove parameter 1, which is the hash of the first fact
|
|
138
|
-
const parameters = [
|
|
139
|
-
queryDescription.parameters[0],
|
|
140
|
-
...queryDescription.parameters.slice(2)
|
|
141
|
-
];
|
|
142
|
-
|
|
143
154
|
|
|
144
155
|
return {
|
|
145
156
|
sql,
|
|
146
|
-
parameters
|
|
157
|
+
parameters
|
|
147
158
|
};
|
|
148
159
|
}
|
|
149
160
|
|
|
150
|
-
function
|
|
161
|
+
function generateCandidates(queryDescription: QueryDescription, offset: number, schema: string): string {
|
|
162
|
+
const columns = queryDescription.outputs
|
|
163
|
+
.map((label, index) => `f${label.factIndex}.fact_id as trigger${index + 1}`)
|
|
164
|
+
.join(",\n ");
|
|
165
|
+
const firstEdge = queryDescription.edges[0];
|
|
166
|
+
const predecessorFact = queryDescription.inputs.find(i => i.factIndex === firstEdge.predecessorFactIndex);
|
|
167
|
+
const successorFact = queryDescription.inputs.find(i => i.factIndex === firstEdge.successorFactIndex);
|
|
168
|
+
const firstFactIndex = predecessorFact ? predecessorFact.factIndex : successorFact!.factIndex;
|
|
169
|
+
const writtenFactIndexes = new Set<number>().add(firstFactIndex);
|
|
170
|
+
const joins: string[] = generateJoins(queryDescription.edges, writtenFactIndexes, offset, schema);
|
|
171
|
+
const inputWhereClauses = queryDescription.inputs
|
|
172
|
+
.map(input => `f${input.factIndex}.fact_type_id = $${input.factTypeParameter + offset}`)
|
|
173
|
+
.join(" AND ");
|
|
174
|
+
|
|
175
|
+
return (
|
|
176
|
+
` SELECT\n` +
|
|
177
|
+
` f${firstFactIndex}.fact_id as purge_root,\n` +
|
|
178
|
+
` ${columns}\n` +
|
|
179
|
+
` FROM ${schema}.fact f${firstFactIndex}\n${joins.join("")}` +
|
|
180
|
+
` WHERE ${inputWhereClauses}\n`
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
function generateJoins(edges: EdgeDescription[], writtenFactIndexes: Set<number>, offset: number, schema: string) {
|
|
151
185
|
const joins: string[] = [];
|
|
152
186
|
edges.forEach(edge => {
|
|
153
187
|
if (writtenFactIndexes.has(edge.predecessorFactIndex)) {
|
|
@@ -156,14 +190,14 @@ function generateJoins(edges: EdgeDescription[], writtenFactIndexes: Set<number>
|
|
|
156
190
|
` JOIN ${schema}.edge e${edge.edgeIndex}\n` +
|
|
157
191
|
` ON e${edge.edgeIndex}.predecessor_fact_id = f${edge.predecessorFactIndex}.fact_id\n` +
|
|
158
192
|
` AND e${edge.edgeIndex}.successor_fact_id = f${edge.successorFactIndex}.fact_id\n` +
|
|
159
|
-
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1}\n`
|
|
193
|
+
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1 + offset}\n`
|
|
160
194
|
);
|
|
161
195
|
}
|
|
162
196
|
else {
|
|
163
197
|
joins.push(
|
|
164
198
|
` JOIN ${schema}.edge e${edge.edgeIndex}\n` +
|
|
165
199
|
` ON e${edge.edgeIndex}.predecessor_fact_id = f${edge.predecessorFactIndex}.fact_id\n` +
|
|
166
|
-
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1}\n`
|
|
200
|
+
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1 + offset}\n`
|
|
167
201
|
);
|
|
168
202
|
joins.push(
|
|
169
203
|
` JOIN ${schema}.fact f${edge.successorFactIndex}\n` +
|
|
@@ -176,7 +210,7 @@ function generateJoins(edges: EdgeDescription[], writtenFactIndexes: Set<number>
|
|
|
176
210
|
joins.push(
|
|
177
211
|
` JOIN ${schema}.edge e${edge.edgeIndex}\n` +
|
|
178
212
|
` ON e${edge.edgeIndex}.successor_fact_id = f${edge.successorFactIndex}.fact_id\n` +
|
|
179
|
-
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1}\n`
|
|
213
|
+
` AND e${edge.edgeIndex}.role_id = $${edge.roleParameter - 1 + offset}\n`
|
|
180
214
|
);
|
|
181
215
|
joins.push(
|
|
182
216
|
` JOIN ${schema}.fact f${edge.predecessorFactIndex}\n` +
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Specification } from "jinaga";
|
|
2
2
|
import { ensureGetFactTypeId, FactTypeMap, getRoleId } from "../../src/postgres/maps";
|
|
3
|
-
import { purgeSqlFromSpecification } from "../../src/postgres/purge-sql";
|
|
3
|
+
import { purgeSqlFromSpecification, purgeSqlFromSpecifications } from "../../src/postgres/purge-sql";
|
|
4
4
|
import { model, Site, SiteDeleted, SitePurged } from "../models/blog";
|
|
5
5
|
|
|
6
6
|
describe("Purge SQL", () => {
|
|
@@ -21,7 +21,7 @@ describe("Purge SQL", () => {
|
|
|
21
21
|
const { sql, parameters } = whenGeneratePurgeSql(specification, factTypes, roleMap, schema);
|
|
22
22
|
|
|
23
23
|
const expected =
|
|
24
|
-
`WITH
|
|
24
|
+
`WITH candidates1 AS (
|
|
25
25
|
SELECT
|
|
26
26
|
f1.fact_id as purge_root,
|
|
27
27
|
f2.fact_id as trigger1
|
|
@@ -32,20 +32,24 @@ describe("Purge SQL", () => {
|
|
|
32
32
|
JOIN public.fact f2
|
|
33
33
|
ON f2.fact_id = e1.successor_fact_id
|
|
34
34
|
WHERE f1.fact_type_id = $1
|
|
35
|
+
), roots AS (
|
|
36
|
+
SELECT purge_root FROM candidates1
|
|
37
|
+
), triggers AS (
|
|
38
|
+
SELECT trigger1 AS fact_id FROM candidates1
|
|
35
39
|
), targets AS (
|
|
36
40
|
SELECT a.fact_id
|
|
37
41
|
FROM public.ancestor a
|
|
38
|
-
JOIN
|
|
42
|
+
JOIN roots r ON r.purge_root = a.ancestor_fact_id
|
|
39
43
|
WHERE NOT EXISTS (
|
|
40
44
|
SELECT 1
|
|
41
|
-
FROM
|
|
42
|
-
WHERE a.fact_id =
|
|
45
|
+
FROM triggers t
|
|
46
|
+
WHERE a.fact_id = t.fact_id
|
|
43
47
|
)
|
|
44
48
|
AND NOT EXISTS (
|
|
45
49
|
SELECT 1
|
|
46
|
-
FROM
|
|
50
|
+
FROM triggers t
|
|
47
51
|
JOIN public.ancestor a2
|
|
48
|
-
ON a2.fact_id =
|
|
52
|
+
ON a2.fact_id = t.fact_id
|
|
49
53
|
WHERE a.fact_id = a2.ancestor_fact_id
|
|
50
54
|
)
|
|
51
55
|
), facts AS (
|
|
@@ -83,7 +87,7 @@ SELECT fact_id FROM facts
|
|
|
83
87
|
const { sql, parameters } = whenGeneratePurgeSql(specification, factTypes, roleMap, schema);
|
|
84
88
|
|
|
85
89
|
const expected =
|
|
86
|
-
`WITH
|
|
90
|
+
`WITH candidates1 AS (
|
|
87
91
|
SELECT
|
|
88
92
|
f1.fact_id as purge_root,
|
|
89
93
|
f3.fact_id as trigger1
|
|
@@ -99,20 +103,24 @@ SELECT fact_id FROM facts
|
|
|
99
103
|
JOIN public.fact f3
|
|
100
104
|
ON f3.fact_id = e2.successor_fact_id
|
|
101
105
|
WHERE f1.fact_type_id = $1
|
|
106
|
+
), roots AS (
|
|
107
|
+
SELECT purge_root FROM candidates1
|
|
108
|
+
), triggers AS (
|
|
109
|
+
SELECT trigger1 AS fact_id FROM candidates1
|
|
102
110
|
), targets AS (
|
|
103
111
|
SELECT a.fact_id
|
|
104
112
|
FROM public.ancestor a
|
|
105
|
-
JOIN
|
|
113
|
+
JOIN roots r ON r.purge_root = a.ancestor_fact_id
|
|
106
114
|
WHERE NOT EXISTS (
|
|
107
115
|
SELECT 1
|
|
108
|
-
FROM
|
|
109
|
-
WHERE a.fact_id =
|
|
116
|
+
FROM triggers t
|
|
117
|
+
WHERE a.fact_id = t.fact_id
|
|
110
118
|
)
|
|
111
119
|
AND NOT EXISTS (
|
|
112
120
|
SELECT 1
|
|
113
|
-
FROM
|
|
121
|
+
FROM triggers t
|
|
114
122
|
JOIN public.ancestor a2
|
|
115
|
-
ON a2.fact_id =
|
|
123
|
+
ON a2.fact_id = t.fact_id
|
|
116
124
|
WHERE a.fact_id = a2.ancestor_fact_id
|
|
117
125
|
)
|
|
118
126
|
), facts AS (
|
|
@@ -154,7 +162,7 @@ SELECT fact_id FROM facts
|
|
|
154
162
|
const { sql, parameters } = whenGeneratePurgeSql(specification, factTypes, roleMap, schema);
|
|
155
163
|
|
|
156
164
|
const expected =
|
|
157
|
-
`WITH
|
|
165
|
+
`WITH candidates1 AS (
|
|
158
166
|
SELECT
|
|
159
167
|
f1.fact_id as purge_root,
|
|
160
168
|
f2.fact_id as trigger1,
|
|
@@ -171,28 +179,119 @@ SELECT fact_id FROM facts
|
|
|
171
179
|
JOIN public.fact f3
|
|
172
180
|
ON f3.fact_id = e2.successor_fact_id
|
|
173
181
|
WHERE f1.fact_type_id = $1
|
|
182
|
+
), roots AS (
|
|
183
|
+
SELECT purge_root FROM candidates1
|
|
184
|
+
), triggers AS (
|
|
185
|
+
SELECT trigger1 AS fact_id FROM candidates1
|
|
186
|
+
UNION
|
|
187
|
+
SELECT trigger2 AS fact_id FROM candidates1
|
|
174
188
|
), targets AS (
|
|
175
189
|
SELECT a.fact_id
|
|
176
190
|
FROM public.ancestor a
|
|
177
|
-
JOIN
|
|
191
|
+
JOIN roots r ON r.purge_root = a.ancestor_fact_id
|
|
178
192
|
WHERE NOT EXISTS (
|
|
179
193
|
SELECT 1
|
|
180
|
-
FROM
|
|
181
|
-
WHERE a.fact_id =
|
|
182
|
-
OR a.fact_id = c2.trigger2
|
|
194
|
+
FROM triggers t
|
|
195
|
+
WHERE a.fact_id = t.fact_id
|
|
183
196
|
)
|
|
184
197
|
AND NOT EXISTS (
|
|
185
198
|
SELECT 1
|
|
186
|
-
FROM
|
|
199
|
+
FROM triggers t
|
|
187
200
|
JOIN public.ancestor a2
|
|
188
|
-
ON a2.fact_id =
|
|
201
|
+
ON a2.fact_id = t.fact_id
|
|
189
202
|
WHERE a.fact_id = a2.ancestor_fact_id
|
|
190
203
|
)
|
|
204
|
+
), facts AS (
|
|
205
|
+
DELETE
|
|
206
|
+
FROM public.fact f
|
|
207
|
+
USING targets t WHERE t.fact_id = f.fact_id
|
|
208
|
+
RETURNING f.fact_id
|
|
209
|
+
)
|
|
210
|
+
SELECT fact_id FROM facts
|
|
211
|
+
`;
|
|
212
|
+
|
|
213
|
+
expect(sql).toBe(expected);
|
|
214
|
+
expect(parameters).toEqual([
|
|
215
|
+
ensureGetFactTypeId(factTypes, Site.Type),
|
|
216
|
+
getRoleId(roleMap, ensureGetFactTypeId(factTypes, SiteDeleted.Type), 'site'),
|
|
217
|
+
getRoleId(roleMap, ensureGetFactTypeId(factTypes, SitePurged.Type), 'deleted')
|
|
218
|
+
]);
|
|
219
|
+
});
|
|
220
|
+
it("should spare the triggers of every condition on one given type", () => {
|
|
221
|
+
const deletedSpecification = model.given(Site).match((site, facts) =>
|
|
222
|
+
facts.ofType(SiteDeleted)
|
|
223
|
+
.join(deleted => deleted.site, site)
|
|
224
|
+
).specification;
|
|
225
|
+
const purgedSpecification = model.given(Site).match((site, facts) =>
|
|
226
|
+
facts.ofType(SitePurged)
|
|
227
|
+
.join(purged => purged.deleted.site, site)
|
|
228
|
+
).specification;
|
|
229
|
+
const factTypes = buildFactTypeMap(
|
|
230
|
+
Site.Type,
|
|
231
|
+
SiteDeleted.Type,
|
|
232
|
+
SitePurged.Type
|
|
233
|
+
);
|
|
234
|
+
const roleMap = buildRoleMap(factTypes,
|
|
235
|
+
[Site.Type, ['creator']],
|
|
236
|
+
[SiteDeleted.Type, ['site']],
|
|
237
|
+
[SitePurged.Type, ['deleted']]
|
|
238
|
+
);
|
|
239
|
+
const purgeCommand = purgeSqlFromSpecifications([deletedSpecification, purgedSpecification], factTypes, roleMap, 'public');
|
|
240
|
+
if (purgeCommand === null) {
|
|
241
|
+
throw new Error("The specifications were not satisfiable.");
|
|
242
|
+
}
|
|
243
|
+
const { sql, parameters } = purgeCommand;
|
|
244
|
+
|
|
245
|
+
const expected =
|
|
246
|
+
`WITH candidates1 AS (
|
|
247
|
+
SELECT
|
|
248
|
+
f1.fact_id as purge_root,
|
|
249
|
+
f2.fact_id as trigger1
|
|
250
|
+
FROM public.fact f1
|
|
251
|
+
JOIN public.edge e1
|
|
252
|
+
ON e1.predecessor_fact_id = f1.fact_id
|
|
253
|
+
AND e1.role_id = $2
|
|
254
|
+
JOIN public.fact f2
|
|
255
|
+
ON f2.fact_id = e1.successor_fact_id
|
|
256
|
+
WHERE f1.fact_type_id = $1
|
|
257
|
+
), candidates2 AS (
|
|
258
|
+
SELECT
|
|
259
|
+
f1.fact_id as purge_root,
|
|
260
|
+
f3.fact_id as trigger1
|
|
261
|
+
FROM public.fact f1
|
|
262
|
+
JOIN public.edge e1
|
|
263
|
+
ON e1.predecessor_fact_id = f1.fact_id
|
|
264
|
+
AND e1.role_id = $4
|
|
265
|
+
JOIN public.fact f2
|
|
266
|
+
ON f2.fact_id = e1.successor_fact_id
|
|
267
|
+
JOIN public.edge e2
|
|
268
|
+
ON e2.predecessor_fact_id = f2.fact_id
|
|
269
|
+
AND e2.role_id = $5
|
|
270
|
+
JOIN public.fact f3
|
|
271
|
+
ON f3.fact_id = e2.successor_fact_id
|
|
272
|
+
WHERE f1.fact_type_id = $3
|
|
273
|
+
), roots AS (
|
|
274
|
+
SELECT purge_root FROM candidates1
|
|
275
|
+
UNION
|
|
276
|
+
SELECT purge_root FROM candidates2
|
|
277
|
+
), triggers AS (
|
|
278
|
+
SELECT trigger1 AS fact_id FROM candidates1
|
|
279
|
+
UNION
|
|
280
|
+
SELECT trigger1 AS fact_id FROM candidates2
|
|
281
|
+
), targets AS (
|
|
282
|
+
SELECT a.fact_id
|
|
283
|
+
FROM public.ancestor a
|
|
284
|
+
JOIN roots r ON r.purge_root = a.ancestor_fact_id
|
|
285
|
+
WHERE NOT EXISTS (
|
|
286
|
+
SELECT 1
|
|
287
|
+
FROM triggers t
|
|
288
|
+
WHERE a.fact_id = t.fact_id
|
|
289
|
+
)
|
|
191
290
|
AND NOT EXISTS (
|
|
192
291
|
SELECT 1
|
|
193
|
-
FROM
|
|
292
|
+
FROM triggers t
|
|
194
293
|
JOIN public.ancestor a2
|
|
195
|
-
ON a2.fact_id =
|
|
294
|
+
ON a2.fact_id = t.fact_id
|
|
196
295
|
WHERE a.fact_id = a2.ancestor_fact_id
|
|
197
296
|
)
|
|
198
297
|
), facts AS (
|
|
@@ -206,6 +305,8 @@ SELECT fact_id FROM facts
|
|
|
206
305
|
|
|
207
306
|
expect(sql).toBe(expected);
|
|
208
307
|
expect(parameters).toEqual([
|
|
308
|
+
ensureGetFactTypeId(factTypes, Site.Type),
|
|
309
|
+
getRoleId(roleMap, ensureGetFactTypeId(factTypes, SiteDeleted.Type), 'site'),
|
|
209
310
|
ensureGetFactTypeId(factTypes, Site.Type),
|
|
210
311
|
getRoleId(roleMap, ensureGetFactTypeId(factTypes, SiteDeleted.Type), 'site'),
|
|
211
312
|
getRoleId(roleMap, ensureGetFactTypeId(factTypes, SitePurged.Type), 'deleted')
|