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.
@@ -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
- let count = 0;
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 factTypes = yield this.loadFactTypesFromSpecification(specification);
346
- const roleMap = yield this.loadRolesFromSpecification(specification, factTypes);
347
- const purgeCommand = (0, purge_sql_1.purgeSqlFromSpecification)(specification, factTypes, roleMap, this.schema);
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
- const columns = queryDescription.outputs
75
- .map((label, index) => `f${label.factIndex}.fact_id as trigger${index + 1}`)
76
- .join(",\n ");
77
- const firstEdge = queryDescription.edges[0];
78
- const predecessorFact = queryDescription.inputs.find(i => i.factIndex === firstEdge.predecessorFactIndex);
79
- const successorFact = queryDescription.inputs.find(i => i.factIndex === firstEdge.successorFactIndex);
80
- const firstFactIndex = predecessorFact ? predecessorFact.factIndex : successorFact.factIndex;
81
- const writtenFactIndexes = new Set().add(firstFactIndex);
82
- const joins = generateJoins(queryDescription.edges, writtenFactIndexes, schema);
83
- const inputWhereClauses = queryDescription.inputs
84
- .map(input => `f${input.factIndex}.fact_type_id = $${input.factTypeParameter}`)
85
- .join(" AND ");
86
- const triggerWhereClauses = queryDescription.outputs
87
- .map((label, index) => `a.fact_id = c2.trigger${index + 1}`)
88
- .join("\n OR ");
89
- const triggerAncestorClauses = queryDescription.outputs
90
- .map((label, index) => ` AND NOT EXISTS (\n` +
91
- ` SELECT 1\n` +
92
- ` FROM candidates c2\n` +
93
- ` JOIN ${schema}.ancestor a2\n` +
94
- ` ON a2.fact_id = c2.trigger${index + 1}\n` +
95
- ` WHERE a.fact_id = a2.ancestor_fact_id\n` +
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 candidates c ON c.purge_root = a.ancestor_fact_id\n` +
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 candidates c2\n` +
111
- ` WHERE ${triggerWhereClauses}\n` +
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: parameters
136
+ parameters
129
137
  };
130
138
  }
131
- function generateJoins(edges, writtenFactIndexes, schema) {
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":"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"}
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.14.0",
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.14.0",
3199
- "resolved": "https://registry.npmjs.org/jinaga/-/jinaga-6.14.0.tgz",
3200
- "integrity": "sha512-5Ip8MZfIazv+pDDdRDmj/zWQE1wuMtEi3BCHH+vRHCZfO4nC3VDUQrqkM5VOdkQxjRisokmiSLs5ZOtHXAc5qQ==",
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",
@@ -19,7 +19,7 @@
19
19
  "express": "^4.21.2",
20
20
  "jest": "^29.7.0",
21
21
  "jest-compact-reporter": "^1.2.9",
22
- "jinaga": "^6.14.0",
22
+ "jinaga": "^6.15.0",
23
23
  "node-forge": "^1.3.0",
24
24
  "pg": "^8.13.1"
25
25
  },
@@ -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
- beforeEach(async () => {
17
- // Ensure no row exists yet for the test identities so the
18
- // select-then-insert path is exercised from a clean state.
19
- await pool.query(`DELETE FROM public."user" WHERE provider = $1`, ['test-provider']);
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 = { provider: 'test-provider', id: 'race-user-1' };
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 = { provider: 'test-provider', id: 'race-user-2' };
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.0",
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.14.0",
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, purgeSqlFromSpecification } from "./purge-sql";
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
- let count = 0;
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 factTypes = await this.loadFactTypesFromSpecification(specification);
457
- const roleMap = await this.loadRolesFromSpecification(specification, factTypes);
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 = purgeSqlFromSpecification(specification, factTypes, roleMap, this.schema);
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
- const columns = queryDescription.outputs
86
- .map((label, index) => `f${label.factIndex}.fact_id as trigger${index + 1}`)
87
- .join(",\n ");
88
- const firstEdge = queryDescription.edges[0];
89
- const predecessorFact = queryDescription.inputs.find(i => i.factIndex === firstEdge.predecessorFactIndex);
90
- const successorFact = queryDescription.inputs.find(i => i.factIndex === firstEdge.successorFactIndex);
91
- const firstFactIndex = predecessorFact ? predecessorFact.factIndex : successorFact!.factIndex;
92
- const writtenFactIndexes = new Set<number>().add(firstFactIndex);
93
- const joins: string[] = generateJoins(queryDescription.edges, writtenFactIndexes, schema);
94
- const inputWhereClauses = queryDescription.inputs
95
- .map(input => `f${input.factIndex}.fact_type_id = $${input.factTypeParameter}`)
96
- .join(" AND ");
97
- const triggerWhereClauses = queryDescription.outputs
98
- .map((label, index) => `a.fact_id = c2.trigger${index + 1}`)
99
- .join("\n OR ");
100
- const triggerAncestorClauses = queryDescription.outputs
101
- .map((label, index) =>
102
- ` AND NOT EXISTS (\n` +
103
- ` SELECT 1\n` +
104
- ` FROM candidates c2\n` +
105
- ` JOIN ${schema}.ancestor a2\n` +
106
- ` ON a2.fact_id = c2.trigger${index + 1}\n` +
107
- ` WHERE a.fact_id = a2.ancestor_fact_id\n` +
108
- ` )\n`
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 candidates AS (\n` +
114
- ` SELECT\n` +
115
- ` f${firstFactIndex}.fact_id as purge_root,\n` +
116
- ` ${columns}\n` +
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 candidates c ON c.purge_root = a.ancestor_fact_id\n` +
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 candidates c2\n` +
126
- ` WHERE ${triggerWhereClauses}\n` +
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: parameters
157
+ parameters
147
158
  };
148
159
  }
149
160
 
150
- function generateJoins(edges: EdgeDescription[], writtenFactIndexes: Set<number>, schema: string) {
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 candidates AS (
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 candidates c ON c.purge_root = a.ancestor_fact_id
42
+ JOIN roots r ON r.purge_root = a.ancestor_fact_id
39
43
  WHERE NOT EXISTS (
40
44
  SELECT 1
41
- FROM candidates c2
42
- WHERE a.fact_id = c2.trigger1
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 candidates c2
50
+ FROM triggers t
47
51
  JOIN public.ancestor a2
48
- ON a2.fact_id = c2.trigger1
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 candidates AS (
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 candidates c ON c.purge_root = a.ancestor_fact_id
113
+ JOIN roots r ON r.purge_root = a.ancestor_fact_id
106
114
  WHERE NOT EXISTS (
107
115
  SELECT 1
108
- FROM candidates c2
109
- WHERE a.fact_id = c2.trigger1
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 candidates c2
121
+ FROM triggers t
114
122
  JOIN public.ancestor a2
115
- ON a2.fact_id = c2.trigger1
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 candidates AS (
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 candidates c ON c.purge_root = a.ancestor_fact_id
191
+ JOIN roots r ON r.purge_root = a.ancestor_fact_id
178
192
  WHERE NOT EXISTS (
179
193
  SELECT 1
180
- FROM candidates c2
181
- WHERE a.fact_id = c2.trigger1
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 candidates c2
199
+ FROM triggers t
187
200
  JOIN public.ancestor a2
188
- ON a2.fact_id = c2.trigger1
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 candidates c2
292
+ FROM triggers t
194
293
  JOIN public.ancestor a2
195
- ON a2.fact_id = c2.trigger2
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')