jinaga-server 3.2.0 → 3.3.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.d.ts +2 -1
- package/dist/postgres/postgres-store.js +23 -2
- package/dist/postgres/postgres-store.js.map +1 -1
- package/dist/postgres/purge-sql.d.ts +1 -0
- package/dist/postgres/purge-sql.js +51 -3
- package/dist/postgres/purge-sql.js.map +1 -1
- package/integration-test/jinaga-test/Dockerfile +3 -1
- package/integration-test/jinaga-test/orderModel.js +104 -0
- package/integration-test/jinaga-test/package-lock.json +20 -16
- package/integration-test/jinaga-test/package.json +3 -3
- package/integration-test/jinaga-test/purge.test.js +224 -0
- package/integration-test/postgres/1-setup.sql +8 -3
- package/integration-test/postgres/2-grant.sh +4 -4
- package/integration-test/postgres/Dockerfile +1 -1
- package/package.json +5 -4
- package/replicator/package-lock.json +16 -12
- package/replicator/package.json +2 -2
- package/setup.sh +4 -4
- package/setup.sql +59 -3
- package/src/postgres/postgres-store.ts +27 -4
- package/src/postgres/purge-sql.ts +53 -2
- package/test/postgres/purgeDescendantsSqlSpec.ts +41 -0
- package/test/postgres/purgeSqlSpec.ts +28 -0
|
@@ -18,7 +18,8 @@ export declare class PostgresStore implements Storage {
|
|
|
18
18
|
whichExist(references: FactReference[]): Promise<FactReference[]>;
|
|
19
19
|
load(references: FactReference[]): Promise<FactEnvelope[]>;
|
|
20
20
|
private loadFactTypesFromReferences;
|
|
21
|
-
purge(purgeConditions: Specification[]): Promise<
|
|
21
|
+
purge(purgeConditions: Specification[]): Promise<number>;
|
|
22
|
+
purgeDescendants(purgeRoot: FactReference, triggers: FactReference[]): Promise<number>;
|
|
22
23
|
loadBookmark(feed: string): Promise<string>;
|
|
23
24
|
saveBookmark(feed: string, bookmark: string): Promise<void>;
|
|
24
25
|
getMruDate(specificationHash: string): Promise<Date | null>;
|
|
@@ -329,6 +329,7 @@ class PostgresStore {
|
|
|
329
329
|
}
|
|
330
330
|
purge(purgeConditions) {
|
|
331
331
|
return __awaiter(this, void 0, void 0, function* () {
|
|
332
|
+
let count = 0;
|
|
332
333
|
for (const specification of purgeConditions) {
|
|
333
334
|
const factTypes = yield this.loadFactTypesFromSpecification(specification);
|
|
334
335
|
const roleMap = yield this.loadRolesFromSpecification(specification, factTypes);
|
|
@@ -337,10 +338,30 @@ class PostgresStore {
|
|
|
337
338
|
continue;
|
|
338
339
|
}
|
|
339
340
|
const { sql, parameters } = purgeCommand;
|
|
340
|
-
yield this.connectionFactory.with((connection) => __awaiter(this, void 0, void 0, function* () {
|
|
341
|
-
yield connection.query(sql, parameters);
|
|
341
|
+
var result = yield this.connectionFactory.with((connection) => __awaiter(this, void 0, void 0, function* () {
|
|
342
|
+
return yield connection.query(sql, parameters);
|
|
342
343
|
}));
|
|
344
|
+
count += result.rowCount;
|
|
343
345
|
}
|
|
346
|
+
return count;
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
purgeDescendants(purgeRoot, triggers) {
|
|
350
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
351
|
+
const factTypes = yield this.loadFactTypesFromReferences([purgeRoot, ...triggers]);
|
|
352
|
+
if (!factTypes.has(purgeRoot.type) || triggers.some(t => !factTypes.has(t.type))) {
|
|
353
|
+
return 0;
|
|
354
|
+
}
|
|
355
|
+
const parameters = [
|
|
356
|
+
factTypes.get(purgeRoot.type),
|
|
357
|
+
purgeRoot.hash,
|
|
358
|
+
...triggers.map(t => [factTypes.get(t.type), t.hash]).flat()
|
|
359
|
+
];
|
|
360
|
+
const purgeCommand = (0, purge_sql_1.purgeDescendantsSql)(triggers.length, this.schema);
|
|
361
|
+
var result = yield this.connectionFactory.with((connection) => __awaiter(this, void 0, void 0, function* () {
|
|
362
|
+
return yield connection.query(purgeCommand, parameters);
|
|
363
|
+
}));
|
|
364
|
+
return result.rowCount;
|
|
344
365
|
});
|
|
345
366
|
}
|
|
346
367
|
loadBookmark(feed) {
|
|
@@ -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":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Specification } from "jinaga";
|
|
2
2
|
import { FactTypeMap, RoleMap } from "./maps";
|
|
3
|
+
export declare function purgeDescendantsSql(triggerCount: number, schema: string): string;
|
|
3
4
|
export declare function purgeSqlFromSpecification(specification: Specification, factTypes: FactTypeMap, roleMap: RoleMap, schema: string): {
|
|
4
5
|
sql: string;
|
|
5
6
|
parameters: (string | number)[];
|
|
@@ -1,7 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.purgeSqlFromSpecification = void 0;
|
|
3
|
+
exports.purgeSqlFromSpecification = exports.purgeDescendantsSql = void 0;
|
|
4
4
|
const query_description_1 = require("./query-description");
|
|
5
|
+
function purgeDescendantsSql(triggerCount, schema) {
|
|
6
|
+
let whereClause = " WHERE (t.fact_type_id = $3 AND t.hash = $4)\n";
|
|
7
|
+
for (let i = 1; i < triggerCount; i++) {
|
|
8
|
+
whereClause += ` OR (t.fact_type_id = $${i * 2 + 3} AND t.hash = $${i * 2 + 4})\n`;
|
|
9
|
+
}
|
|
10
|
+
const sql = `WITH purge_root AS (\n` +
|
|
11
|
+
` SELECT pr.fact_id\n` +
|
|
12
|
+
` FROM ${schema}.fact pr\n` +
|
|
13
|
+
` WHERE pr.fact_type_id = $1\n` +
|
|
14
|
+
` AND pr.hash = $2\n` +
|
|
15
|
+
`), triggers AS (\n` +
|
|
16
|
+
` SELECT t.fact_id\n` +
|
|
17
|
+
` FROM ${schema}.fact t\n` +
|
|
18
|
+
whereClause +
|
|
19
|
+
`), triggers_and_ancestors AS (\n` +
|
|
20
|
+
` SELECT t.fact_id\n` +
|
|
21
|
+
` FROM triggers t\n` +
|
|
22
|
+
` UNION\n` +
|
|
23
|
+
` SELECT a.ancestor_fact_id\n` +
|
|
24
|
+
` FROM ${schema}.ancestor a\n` +
|
|
25
|
+
` JOIN triggers t\n` +
|
|
26
|
+
` ON a.fact_id = t.fact_id\n` +
|
|
27
|
+
`), targets AS (\n` +
|
|
28
|
+
` SELECT a.fact_id\n` +
|
|
29
|
+
` FROM ${schema}.ancestor a\n` +
|
|
30
|
+
` JOIN purge_root pr\n` +
|
|
31
|
+
` ON a.ancestor_fact_id = pr.fact_id\n` +
|
|
32
|
+
` WHERE a.fact_id NOT IN (SELECT * FROM triggers_and_ancestors)\n` +
|
|
33
|
+
`), facts AS (\n` +
|
|
34
|
+
` DELETE\n` +
|
|
35
|
+
` FROM ${schema}.fact f\n` +
|
|
36
|
+
` USING targets t WHERE t.fact_id = f.fact_id\n` +
|
|
37
|
+
` RETURNING f.fact_id\n` +
|
|
38
|
+
`)\n` +
|
|
39
|
+
`SELECT fact_id FROM facts\n`;
|
|
40
|
+
return sql;
|
|
41
|
+
}
|
|
42
|
+
exports.purgeDescendantsSql = purgeDescendantsSql;
|
|
5
43
|
function purgeSqlFromSpecification(specification, factTypes, roleMap, schema) {
|
|
6
44
|
const queryDescriptionBuilder = new query_description_1.QueryDescriptionBuilder(factTypes, roleMap);
|
|
7
45
|
let queryDescription = query_description_1.QueryDescription.unsatisfiable;
|
|
@@ -35,6 +73,15 @@ function generatePurgeSqlQuery(queryDescription, schema) {
|
|
|
35
73
|
const triggerWhereClauses = queryDescription.outputs
|
|
36
74
|
.map((label, index) => `a.fact_id = c2.trigger${index + 1}`)
|
|
37
75
|
.join("\n OR ");
|
|
76
|
+
const triggerAncestorClauses = queryDescription.outputs
|
|
77
|
+
.map((label, index) => ` AND NOT EXISTS (\n` +
|
|
78
|
+
` SELECT 1\n` +
|
|
79
|
+
` FROM candidates c2\n` +
|
|
80
|
+
` JOIN ${schema}.ancestor a2\n` +
|
|
81
|
+
` ON a2.fact_id = c2.trigger${index + 1}\n` +
|
|
82
|
+
` WHERE a.fact_id = a2.ancestor_fact_id\n` +
|
|
83
|
+
` )\n`)
|
|
84
|
+
.join("");
|
|
38
85
|
const sql = `WITH candidates AS (\n` +
|
|
39
86
|
` SELECT\n` +
|
|
40
87
|
` f${firstFactIndex}.fact_id as purge_root,\n` +
|
|
@@ -43,16 +90,17 @@ function generatePurgeSqlQuery(queryDescription, schema) {
|
|
|
43
90
|
` WHERE ${inputWhereClauses}\n` +
|
|
44
91
|
`), targets AS (\n` +
|
|
45
92
|
` SELECT a.fact_id\n` +
|
|
46
|
-
` FROM
|
|
93
|
+
` FROM ${schema}.ancestor a\n` +
|
|
47
94
|
` JOIN candidates c ON c.purge_root = a.ancestor_fact_id\n` +
|
|
48
95
|
` WHERE NOT EXISTS (\n` +
|
|
49
96
|
` SELECT 1\n` +
|
|
50
97
|
` FROM candidates c2\n` +
|
|
51
98
|
` WHERE ${triggerWhereClauses}\n` +
|
|
52
99
|
` )\n` +
|
|
100
|
+
triggerAncestorClauses +
|
|
53
101
|
`), facts AS (\n` +
|
|
54
102
|
` DELETE\n` +
|
|
55
|
-
` FROM
|
|
103
|
+
` FROM ${schema}.fact f\n` +
|
|
56
104
|
` USING targets t WHERE t.fact_id = f.fact_id\n` +
|
|
57
105
|
` RETURNING f.fact_id\n` +
|
|
58
106
|
`)\n` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purge-sql.js","sourceRoot":"","sources":["../../src/postgres/purge-sql.ts"],"names":[],"mappings":";;;AAEA,2DAA8G;AAE9G,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;IAClC,MAAM,KAAK,GAAoB,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/F,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,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE;QACnC,OAAO,IAAI,CAAC;KACf;IAED,MAAM,KAAK,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACjB,CAAC;AAhBD,8DAgBC;AAGD,SAAS,qBAAqB,CAAC,gBAAkC,EAAE,MAAc;IAE7E,IAAI,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;QACnD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;KAC9E;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO;SACnC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,sBAAsB,KAAK,GAAG,CAAC,EAAE,CAAC;SAC3E,IAAI,CAAC,aAAa,CAAC,CAAC;IACzB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAC1G,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACtG,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,aAAc,CAAC,SAAS,CAAC;IAC9F,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACjE,MAAM,KAAK,GAAa,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC1F,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,MAAM;SAC5C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,oBAAoB,KAAK,CAAC,iBAAiB,EAAE,CAAC;SAC9E,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,OAAO;SAC/C,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,yBAAyB,KAAK,GAAG,CAAC,EAAE,CAAC;SAC3D,IAAI,CAAC,mBAAmB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"purge-sql.js","sourceRoot":"","sources":["../../src/postgres/purge-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
FROM node:22.
|
|
1
|
+
FROM node:22.12.0-alpine3.19
|
|
2
2
|
|
|
3
3
|
WORKDIR /root
|
|
4
4
|
|
|
@@ -9,5 +9,7 @@ RUN npm ci
|
|
|
9
9
|
COPY jinaga-server/ jinaga-server/
|
|
10
10
|
COPY jinaga.test.js .
|
|
11
11
|
COPY specification.test.js .
|
|
12
|
+
COPY purge.test.js .
|
|
13
|
+
COPY orderModel.js .
|
|
12
14
|
|
|
13
15
|
ENTRYPOINT [ "npm", "test" ]
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
const { buildModel } = require("jinaga");
|
|
2
|
+
|
|
3
|
+
function createModel() {
|
|
4
|
+
return buildModel(b => b
|
|
5
|
+
.type(Store)
|
|
6
|
+
.type(Order, x => x
|
|
7
|
+
.predecessor("store", Store)
|
|
8
|
+
)
|
|
9
|
+
.type(Item, x => x
|
|
10
|
+
.predecessor("order", Order)
|
|
11
|
+
.predecessor("product", Product)
|
|
12
|
+
)
|
|
13
|
+
.type(OrderCancelled, x => x
|
|
14
|
+
.predecessor("order", Order)
|
|
15
|
+
)
|
|
16
|
+
.type(OrderCancelledReason, x => x
|
|
17
|
+
.predecessor("orderCancelled", OrderCancelled)
|
|
18
|
+
)
|
|
19
|
+
.type(OrderShipped, x => x
|
|
20
|
+
.predecessor("order", Order)
|
|
21
|
+
)
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
class Store {
|
|
26
|
+
static Type = "Store";
|
|
27
|
+
type = Store.Type;
|
|
28
|
+
|
|
29
|
+
constructor(identifier) {
|
|
30
|
+
this.identifier = identifier;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
class Order {
|
|
35
|
+
static Type = "Order";
|
|
36
|
+
type = Order.Type;
|
|
37
|
+
|
|
38
|
+
constructor(store, createdAt) {
|
|
39
|
+
this.store = store;
|
|
40
|
+
this.createdAt = createdAt;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
class Product {
|
|
45
|
+
static Type = "Product";
|
|
46
|
+
type = Product.Type;
|
|
47
|
+
|
|
48
|
+
constructor(store, identifier) {
|
|
49
|
+
this.store = store;
|
|
50
|
+
this.identifier = identifier;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
class Item {
|
|
55
|
+
static Type = "Order.Item";
|
|
56
|
+
type = Item.Type;
|
|
57
|
+
|
|
58
|
+
constructor(order, product, quantity) {
|
|
59
|
+
this.order = order;
|
|
60
|
+
this.product = product;
|
|
61
|
+
this.quantity = quantity;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
class OrderCancelled {
|
|
66
|
+
static Type = "Order.Cancelled";
|
|
67
|
+
type = OrderCancelled.Type;
|
|
68
|
+
|
|
69
|
+
constructor(order, cancelledAt) {
|
|
70
|
+
this.order = order;
|
|
71
|
+
this.cancelledAt = cancelledAt;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
class OrderCancelledReason {
|
|
76
|
+
static Type = "Order.Cancelled.Reason";
|
|
77
|
+
type = OrderCancelledReason.Type;
|
|
78
|
+
|
|
79
|
+
constructor(orderCancelled, reason) {
|
|
80
|
+
this.orderCancelled = orderCancelled;
|
|
81
|
+
this.reason = reason;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
class OrderShipped {
|
|
86
|
+
static Type = "Order.Shipped";
|
|
87
|
+
type = OrderShipped.Type;
|
|
88
|
+
|
|
89
|
+
constructor(order, shippedAt) {
|
|
90
|
+
this.order = order;
|
|
91
|
+
this.shippedAt = shippedAt;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
module.exports = {
|
|
96
|
+
createModel,
|
|
97
|
+
Store,
|
|
98
|
+
Order,
|
|
99
|
+
Product,
|
|
100
|
+
Item,
|
|
101
|
+
OrderCancelled,
|
|
102
|
+
OrderCancelledReason,
|
|
103
|
+
OrderShipped
|
|
104
|
+
};
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@stablelib/base64": "^1.0.1",
|
|
13
|
-
"express": "^4.21.
|
|
13
|
+
"express": "^4.21.2",
|
|
14
14
|
"jest": "^29.7.0",
|
|
15
15
|
"jest-compact-reporter": "^1.2.9",
|
|
16
|
-
"jinaga": "^6.
|
|
16
|
+
"jinaga": "^6.5.0",
|
|
17
17
|
"node-forge": "^1.3.0",
|
|
18
|
-
"pg": "^8.13.
|
|
18
|
+
"pg": "^8.13.1"
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"node_modules/@ampproject/remapping": {
|
|
@@ -1862,9 +1862,9 @@
|
|
|
1862
1862
|
}
|
|
1863
1863
|
},
|
|
1864
1864
|
"node_modules/express": {
|
|
1865
|
-
"version": "4.21.
|
|
1866
|
-
"resolved": "https://registry.npmjs.org/express/-/express-4.21.
|
|
1867
|
-
"integrity": "sha512-
|
|
1865
|
+
"version": "4.21.2",
|
|
1866
|
+
"resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
|
|
1867
|
+
"integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
|
|
1868
1868
|
"license": "MIT",
|
|
1869
1869
|
"dependencies": {
|
|
1870
1870
|
"accepts": "~1.3.8",
|
|
@@ -1886,7 +1886,7 @@
|
|
|
1886
1886
|
"methods": "~1.1.2",
|
|
1887
1887
|
"on-finished": "2.4.1",
|
|
1888
1888
|
"parseurl": "~1.3.3",
|
|
1889
|
-
"path-to-regexp": "0.1.
|
|
1889
|
+
"path-to-regexp": "0.1.12",
|
|
1890
1890
|
"proxy-addr": "~2.0.7",
|
|
1891
1891
|
"qs": "6.13.0",
|
|
1892
1892
|
"range-parser": "~1.2.1",
|
|
@@ -1901,6 +1901,10 @@
|
|
|
1901
1901
|
},
|
|
1902
1902
|
"engines": {
|
|
1903
1903
|
"node": ">= 0.10.0"
|
|
1904
|
+
},
|
|
1905
|
+
"funding": {
|
|
1906
|
+
"type": "opencollective",
|
|
1907
|
+
"url": "https://opencollective.com/express"
|
|
1904
1908
|
}
|
|
1905
1909
|
},
|
|
1906
1910
|
"node_modules/fast-json-stable-stringify": {
|
|
@@ -2976,9 +2980,9 @@
|
|
|
2976
2980
|
}
|
|
2977
2981
|
},
|
|
2978
2982
|
"node_modules/jinaga": {
|
|
2979
|
-
"version": "6.
|
|
2980
|
-
"resolved": "https://registry.npmjs.org/jinaga/-/jinaga-6.
|
|
2981
|
-
"integrity": "sha512-
|
|
2983
|
+
"version": "6.5.0",
|
|
2984
|
+
"resolved": "https://registry.npmjs.org/jinaga/-/jinaga-6.5.0.tgz",
|
|
2985
|
+
"integrity": "sha512-IEzC2n/G+RbGDP8wy35oY430g5rgAJvtMExAht+QaCAtBHUX+IY/GsRg+6EvS7/3pDl3tFprIF3N+oBwdeYRPw==",
|
|
2982
2986
|
"dependencies": {
|
|
2983
2987
|
"@stablelib/base64": "^1.0.1",
|
|
2984
2988
|
"@stablelib/sha512": "^1.0.1",
|
|
@@ -3423,15 +3427,15 @@
|
|
|
3423
3427
|
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
|
|
3424
3428
|
},
|
|
3425
3429
|
"node_modules/path-to-regexp": {
|
|
3426
|
-
"version": "0.1.
|
|
3427
|
-
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.
|
|
3428
|
-
"integrity": "sha512-
|
|
3430
|
+
"version": "0.1.12",
|
|
3431
|
+
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
|
|
3432
|
+
"integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
|
|
3429
3433
|
"license": "MIT"
|
|
3430
3434
|
},
|
|
3431
3435
|
"node_modules/pg": {
|
|
3432
|
-
"version": "8.13.
|
|
3433
|
-
"resolved": "https://registry.npmjs.org/pg/-/pg-8.13.
|
|
3434
|
-
"integrity": "sha512-
|
|
3436
|
+
"version": "8.13.1",
|
|
3437
|
+
"resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz",
|
|
3438
|
+
"integrity": "sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==",
|
|
3435
3439
|
"license": "MIT",
|
|
3436
3440
|
"dependencies": {
|
|
3437
3441
|
"pg-connection-string": "^2.7.0",
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@stablelib/base64": "^1.0.1",
|
|
17
|
-
"express": "^4.21.
|
|
17
|
+
"express": "^4.21.2",
|
|
18
18
|
"jest": "^29.7.0",
|
|
19
19
|
"jest-compact-reporter": "^1.2.9",
|
|
20
|
-
"jinaga": "^6.
|
|
20
|
+
"jinaga": "^6.5.0",
|
|
21
21
|
"node-forge": "^1.3.0",
|
|
22
|
-
"pg": "^8.13.
|
|
22
|
+
"pg": "^8.13.1"
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
const { JinagaServer } = require("./jinaga-server");
|
|
2
|
+
const { createModel, Item, Order, OrderCancelled, OrderCancelledReason, Product, Store } = require("./orderModel");
|
|
3
|
+
|
|
4
|
+
const host = "db";
|
|
5
|
+
// const host = "localhost";
|
|
6
|
+
const connectionString = `postgresql://dev:devpw@${host}:5432/integrationtest`;
|
|
7
|
+
|
|
8
|
+
const model = createModel();
|
|
9
|
+
|
|
10
|
+
describe("After-the-fact purge", () => {
|
|
11
|
+
let jInit, jPurge;
|
|
12
|
+
let closeInit, closePurge;
|
|
13
|
+
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
({ j: jInit, close: closeInit } = JinagaServer.create({
|
|
16
|
+
pgKeystore: connectionString,
|
|
17
|
+
pgStore: connectionString
|
|
18
|
+
}));
|
|
19
|
+
|
|
20
|
+
({ j: jPurge, close: closePurge } = JinagaServer.create({
|
|
21
|
+
pgKeystore: connectionString,
|
|
22
|
+
pgStore: connectionString,
|
|
23
|
+
purgeConditions: p => p
|
|
24
|
+
.whenExists(model.given(Order).match((order, facts) => facts.ofType(OrderCancelled)
|
|
25
|
+
.join(orderCancelled => orderCancelled.order, order)
|
|
26
|
+
))
|
|
27
|
+
}));
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
afterEach(async () => {
|
|
31
|
+
await closeInit();
|
|
32
|
+
await closePurge();
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it("Should find descendants if purge condition is not met", async () => {
|
|
36
|
+
const store = await jInit.fact(new Store("storeId"));
|
|
37
|
+
const order = await jInit.fact(new Order(store, new Date()));
|
|
38
|
+
const item1 = await jInit.fact(new Item(order, new Product(store, "product1"), 1));
|
|
39
|
+
const item2 = await jInit.fact(new Item(order, new Product(store, "product2"), 1));
|
|
40
|
+
|
|
41
|
+
const itemsInOrder = model.given(Order).match(order =>
|
|
42
|
+
order.successors(Item, item => item.order)
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
await jPurge.purge();
|
|
46
|
+
const items = await jPurge.query(itemsInOrder, order);
|
|
47
|
+
expect(items).toEqual([item1, item2]);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("Should purge descendants when condition is met", async () => {
|
|
51
|
+
const store = await jInit.fact(new Store("storeId"));
|
|
52
|
+
const order = await jInit.fact(new Order(store, new Date()));
|
|
53
|
+
const item1 = await jInit.fact(new Item(order, new Product(store, "product1"), 1));
|
|
54
|
+
const item2 = await jInit.fact(new Item(order, new Product(store, "product2"), 1));
|
|
55
|
+
const orderCancelled = await jInit.fact(new OrderCancelled(order, new Date()));
|
|
56
|
+
|
|
57
|
+
const itemsInOrder = model.given(Order).match(order =>
|
|
58
|
+
order.successors(Item, item => item.order)
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
await jPurge.purge();
|
|
62
|
+
const items = await jPurge.query(itemsInOrder, order);
|
|
63
|
+
expect(items).toEqual([]);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it("Should not purge the trigger fact", async () => {
|
|
67
|
+
const store = await jInit.fact(new Store("storeId"));
|
|
68
|
+
const order = await jInit.fact(new Order(store, new Date()));
|
|
69
|
+
const item1 = await jInit.fact(new Item(order, new Product(store, "product1"), 1));
|
|
70
|
+
const item2 = await jInit.fact(new Item(order, new Product(store, "product2"), 1));
|
|
71
|
+
const orderCancelled = await jInit.fact(new OrderCancelled(order, new Date()));
|
|
72
|
+
|
|
73
|
+
const cancelOfOrder = model.given(Order).match(order =>
|
|
74
|
+
order.successors(OrderCancelled, cancelled => cancelled.order)
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
await jPurge.purge();
|
|
78
|
+
const cancels = await jPurge.query(cancelOfOrder, order);
|
|
79
|
+
expect(cancels).toEqual([orderCancelled]);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe("Real-time purge", () => {
|
|
84
|
+
let j;
|
|
85
|
+
let close;
|
|
86
|
+
|
|
87
|
+
beforeEach(() => {
|
|
88
|
+
({ j, close } = JinagaServer.create({
|
|
89
|
+
pgKeystore: connectionString,
|
|
90
|
+
pgStore: connectionString,
|
|
91
|
+
purgeConditions: p => p
|
|
92
|
+
.whenExists(model.given(Order).match((order, facts) => facts.ofType(OrderCancelled)
|
|
93
|
+
.join(orderCancelled => orderCancelled.order, order)
|
|
94
|
+
))
|
|
95
|
+
}));
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
afterEach(async () => {
|
|
99
|
+
await close();
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it("Should find descendants if purge condition is not met", async () => {
|
|
103
|
+
const store = await j.fact(new Store("storeId"));
|
|
104
|
+
const order = await j.fact(new Order(store, new Date()));
|
|
105
|
+
const item1 = await j.fact(new Item(order, new Product(store, "product1"), 1));
|
|
106
|
+
const item2 = await j.fact(new Item(order, new Product(store, "product2"), 1));
|
|
107
|
+
|
|
108
|
+
const itemsInOrder = model.given(Order).match(order =>
|
|
109
|
+
order.successors(Item, item => item.order)
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
const items = await j.query(itemsInOrder, order);
|
|
113
|
+
expect(items).toEqual([item1, item2]);
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it("Should purge descendants when condition is met", async () => {
|
|
117
|
+
const store = await j.fact(new Store("storeId"));
|
|
118
|
+
const order = await j.fact(new Order(store, new Date()));
|
|
119
|
+
const item1 = await j.fact(new Item(order, new Product(store, "product1"), 1));
|
|
120
|
+
const item2 = await j.fact(new Item(order, new Product(store, "product2"), 1));
|
|
121
|
+
const orderCancelled = await j.fact(new OrderCancelled(order, new Date()));
|
|
122
|
+
|
|
123
|
+
const itemsInOrder = model.given(Order).match(order =>
|
|
124
|
+
order.successors(Item, item => item.order)
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
const items = await j.query(itemsInOrder, order);
|
|
128
|
+
expect(items).toEqual([]);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it("Should not purge the trigger fact", async () => {
|
|
132
|
+
const store = await j.fact(new Store("storeId"));
|
|
133
|
+
const order = await j.fact(new Order(store, new Date()));
|
|
134
|
+
const item1 = await j.fact(new Item(order, new Product(store, "product1"), 1));
|
|
135
|
+
const item2 = await j.fact(new Item(order, new Product(store, "product2"), 1));
|
|
136
|
+
const orderCancelled = await j.fact(new OrderCancelled(order, new Date()));
|
|
137
|
+
|
|
138
|
+
const cancelOfOrder = model.given(Order).match(order =>
|
|
139
|
+
order.successors(OrderCancelled, cancelled => cancelled.order)
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
const cancels = await j.query(cancelOfOrder, order);
|
|
143
|
+
expect(cancels).toEqual([orderCancelled]);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
describe("After-the-fact purge with deep trigger", () => {
|
|
148
|
+
let jInit, jPurge;
|
|
149
|
+
let closeInit, closePurge;
|
|
150
|
+
|
|
151
|
+
beforeEach(() => {
|
|
152
|
+
({ j: jInit, close: closeInit } = JinagaServer.create({
|
|
153
|
+
pgKeystore: connectionString,
|
|
154
|
+
pgStore: connectionString
|
|
155
|
+
}));
|
|
156
|
+
|
|
157
|
+
({ j: jPurge, close: closePurge } = JinagaServer.create({
|
|
158
|
+
pgKeystore: connectionString,
|
|
159
|
+
pgStore: connectionString,
|
|
160
|
+
purgeConditions: p => p
|
|
161
|
+
.whenExists(model.given(Order).match((order, facts) => facts.ofType(OrderCancelledReason)
|
|
162
|
+
.join(orderCancelledReason => orderCancelledReason.orderCancelled.order, order)
|
|
163
|
+
))
|
|
164
|
+
}));
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
afterEach(async () => {
|
|
168
|
+
await closeInit();
|
|
169
|
+
await closePurge();
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
it("Should not purge ancestors of the trigger fact", async () => {
|
|
173
|
+
const store = await jInit.fact(new Store("storeId"));
|
|
174
|
+
const order = await jInit.fact(new Order(store, new Date()));
|
|
175
|
+
const item1 = await jInit.fact(new Item(order, new Product(store, "product1"), 1));
|
|
176
|
+
const item2 = await jInit.fact(new Item(order, new Product(store, "product2"), 1));
|
|
177
|
+
const orderCancelled = await jInit.fact(new OrderCancelled(order, new Date()));
|
|
178
|
+
const reason = await jInit.fact(new OrderCancelledReason(orderCancelled, "reason"));
|
|
179
|
+
|
|
180
|
+
const cancelOfOrder = model.given(Order).match(order =>
|
|
181
|
+
order.successors(OrderCancelled, cancelled => cancelled.order)
|
|
182
|
+
);
|
|
183
|
+
|
|
184
|
+
await jPurge.purge();
|
|
185
|
+
const cancels = await jPurge.query(cancelOfOrder, order);
|
|
186
|
+
expect(cancels).toEqual([orderCancelled]);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
describe("Real-time purge with deep trigger", () => {
|
|
191
|
+
let j;
|
|
192
|
+
let close;
|
|
193
|
+
|
|
194
|
+
beforeEach(() => {
|
|
195
|
+
({ j, close } = JinagaServer.create({
|
|
196
|
+
pgKeystore: connectionString,
|
|
197
|
+
pgStore: connectionString,
|
|
198
|
+
purgeConditions: p => p
|
|
199
|
+
.whenExists(model.given(Order).match((order, facts) => facts.ofType(OrderCancelledReason)
|
|
200
|
+
.join(orderCancelledReason => orderCancelledReason.orderCancelled.order, order)
|
|
201
|
+
))
|
|
202
|
+
}));
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
afterEach(async () => {
|
|
206
|
+
await close();
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
it("Should not purge ancestors of the trigger fact", async () => {
|
|
210
|
+
const store = await j.fact(new Store("storeId"));
|
|
211
|
+
const order = await j.fact(new Order(store, new Date()));
|
|
212
|
+
const item1 = await j.fact(new Item(order, new Product(store, "product1"), 1));
|
|
213
|
+
const item2 = await j.fact(new Item(order, new Product(store, "product2"), 1));
|
|
214
|
+
const orderCancelled = await j.fact(new OrderCancelled(order, new Date()));
|
|
215
|
+
const reason = await j.fact(new OrderCancelledReason(orderCancelled, "reason"));
|
|
216
|
+
|
|
217
|
+
const cancelOfOrder = model.given(Order).match(order =>
|
|
218
|
+
order.successors(OrderCancelled, cancelled => cancelled.order)
|
|
219
|
+
);
|
|
220
|
+
|
|
221
|
+
const cancels = await j.query(cancelOfOrder, order);
|
|
222
|
+
expect(cancels).toEqual([orderCancelled]);
|
|
223
|
+
});
|
|
224
|
+
});
|
|
@@ -106,11 +106,13 @@ IF (SELECT to_regclass('public.edge') IS NULL) THEN
|
|
|
106
106
|
successor_fact_id integer NOT NULL,
|
|
107
107
|
CONSTRAINT fk_successor_fact_id
|
|
108
108
|
FOREIGN KEY (successor_fact_id)
|
|
109
|
-
REFERENCES fact (fact_id)
|
|
109
|
+
REFERENCES fact (fact_id)
|
|
110
|
+
ON DELETE CASCADE,
|
|
110
111
|
predecessor_fact_id integer NOT NULL,
|
|
111
112
|
CONSTRAINT fk_predecessor_fact_id
|
|
112
113
|
FOREIGN KEY (predecessor_fact_id)
|
|
113
114
|
REFERENCES fact (fact_id)
|
|
115
|
+
ON DELETE CASCADE
|
|
114
116
|
);
|
|
115
117
|
|
|
116
118
|
|
|
@@ -135,11 +137,13 @@ IF (SELECT to_regclass('public.ancestor') IS NULL) THEN
|
|
|
135
137
|
fact_id integer NOT NULL,
|
|
136
138
|
CONSTRAINT fk_fact_id
|
|
137
139
|
FOREIGN KEY (fact_id)
|
|
138
|
-
REFERENCES fact (fact_id)
|
|
140
|
+
REFERENCES fact (fact_id)
|
|
141
|
+
ON DELETE CASCADE,
|
|
139
142
|
ancestor_fact_id integer NOT NULL,
|
|
140
143
|
CONSTRAINT fk_ancestor_fact_id
|
|
141
144
|
FOREIGN KEY (ancestor_fact_id)
|
|
142
145
|
REFERENCES fact (fact_id)
|
|
146
|
+
ON DELETE CASCADE
|
|
143
147
|
);
|
|
144
148
|
|
|
145
149
|
|
|
@@ -177,7 +181,8 @@ IF (SELECT to_regclass('public.signature') IS NULL) THEN
|
|
|
177
181
|
fact_id integer NOT NULL,
|
|
178
182
|
CONSTRAINT fk_fact_id
|
|
179
183
|
FOREIGN KEY (fact_id)
|
|
180
|
-
REFERENCES fact (fact_id)
|
|
184
|
+
REFERENCES fact (fact_id)
|
|
185
|
+
ON DELETE CASCADE,
|
|
181
186
|
public_key_id integer NOT NULL,
|
|
182
187
|
CONSTRAINT fk_public_key_id
|
|
183
188
|
FOREIGN KEY (public_key_id)
|
|
@@ -6,12 +6,12 @@ psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$APP_DATABASE" <<-
|
|
|
6
6
|
GRANT SELECT, USAGE ON SEQUENCE fact_type_fact_type_id_seq TO $APP_USERNAME;
|
|
7
7
|
GRANT SELECT,INSERT ON TABLE public.role TO $APP_USERNAME;
|
|
8
8
|
GRANT SELECT, USAGE ON SEQUENCE role_role_id_seq TO $APP_USERNAME;
|
|
9
|
-
GRANT SELECT,INSERT ON TABLE public.fact TO $APP_USERNAME;
|
|
9
|
+
GRANT SELECT,INSERT,DELETE ON TABLE public.fact TO $APP_USERNAME;
|
|
10
10
|
GRANT SELECT, USAGE ON SEQUENCE fact_fact_id_seq TO $APP_USERNAME;
|
|
11
|
-
GRANT SELECT,INSERT ON TABLE public.edge TO $APP_USERNAME;
|
|
12
|
-
GRANT SELECT,INSERT ON TABLE public.ancestor TO $APP_USERNAME;
|
|
11
|
+
GRANT SELECT,INSERT,DELETE ON TABLE public.edge TO $APP_USERNAME;
|
|
12
|
+
GRANT SELECT,INSERT,DELETE ON TABLE public.ancestor TO $APP_USERNAME;
|
|
13
13
|
GRANT SELECT,INSERT ON TABLE public.public_key TO $APP_USERNAME;
|
|
14
14
|
GRANT SELECT, USAGE ON SEQUENCE public_key_public_key_id_seq TO $APP_USERNAME;
|
|
15
|
-
GRANT SELECT,INSERT ON TABLE public.signature TO $APP_USERNAME;
|
|
15
|
+
GRANT SELECT,INSERT,DELETE ON TABLE public.signature TO $APP_USERNAME;
|
|
16
16
|
GRANT SELECT,INSERT ON TABLE public.user TO $APP_USERNAME;
|
|
17
17
|
EOSQL
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jinaga-server",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.1",
|
|
4
4
|
"description": "Data management for web and mobile applications.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"test": "tsc --noEmit --project tsconfig.test.json && jest",
|
|
11
11
|
"test:watch": "jest --watch",
|
|
12
12
|
"debug": "node ./dist/debug.js",
|
|
13
|
+
"prepack": "npm run clean && npm run build && npm run test",
|
|
13
14
|
"prepublishOnly": "npm run clean && npm run build && npm run test",
|
|
14
15
|
"integration": "npm run clean && npm run build && cd ./integration-test && ./run.sh",
|
|
15
16
|
"replicator": "npm run build && cd ./replicator && npm run build && npm run start && cd .."
|
|
@@ -46,8 +47,8 @@
|
|
|
46
47
|
"typescript": "^4.7.2"
|
|
47
48
|
},
|
|
48
49
|
"dependencies": {
|
|
49
|
-
"express": "^4.21.
|
|
50
|
-
"jinaga": "^6.
|
|
51
|
-
"pg": "^8.13.
|
|
50
|
+
"express": "^4.21.2",
|
|
51
|
+
"jinaga": "^6.5.4",
|
|
52
|
+
"pg": "^8.13.1"
|
|
52
53
|
}
|
|
53
54
|
}
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"version": "1.0.0",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"express": "^4.21.
|
|
13
|
-
"pg": "
|
|
12
|
+
"express": "^4.21.2",
|
|
13
|
+
"pg": "8.13.1"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"@types/express": "^4.17.13",
|
|
@@ -293,9 +293,9 @@
|
|
|
293
293
|
}
|
|
294
294
|
},
|
|
295
295
|
"node_modules/express": {
|
|
296
|
-
"version": "4.21.
|
|
297
|
-
"resolved": "https://registry.npmjs.org/express/-/express-4.21.
|
|
298
|
-
"integrity": "sha512-
|
|
296
|
+
"version": "4.21.2",
|
|
297
|
+
"resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
|
|
298
|
+
"integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
|
|
299
299
|
"license": "MIT",
|
|
300
300
|
"dependencies": {
|
|
301
301
|
"accepts": "~1.3.8",
|
|
@@ -317,7 +317,7 @@
|
|
|
317
317
|
"methods": "~1.1.2",
|
|
318
318
|
"on-finished": "2.4.1",
|
|
319
319
|
"parseurl": "~1.3.3",
|
|
320
|
-
"path-to-regexp": "0.1.
|
|
320
|
+
"path-to-regexp": "0.1.12",
|
|
321
321
|
"proxy-addr": "~2.0.7",
|
|
322
322
|
"qs": "6.13.0",
|
|
323
323
|
"range-parser": "~1.2.1",
|
|
@@ -332,6 +332,10 @@
|
|
|
332
332
|
},
|
|
333
333
|
"engines": {
|
|
334
334
|
"node": ">= 0.10.0"
|
|
335
|
+
},
|
|
336
|
+
"funding": {
|
|
337
|
+
"type": "opencollective",
|
|
338
|
+
"url": "https://opencollective.com/express"
|
|
335
339
|
}
|
|
336
340
|
},
|
|
337
341
|
"node_modules/finalhandler": {
|
|
@@ -604,15 +608,15 @@
|
|
|
604
608
|
}
|
|
605
609
|
},
|
|
606
610
|
"node_modules/path-to-regexp": {
|
|
607
|
-
"version": "0.1.
|
|
608
|
-
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.
|
|
609
|
-
"integrity": "sha512-
|
|
611
|
+
"version": "0.1.12",
|
|
612
|
+
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
|
|
613
|
+
"integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
|
|
610
614
|
"license": "MIT"
|
|
611
615
|
},
|
|
612
616
|
"node_modules/pg": {
|
|
613
|
-
"version": "8.13.
|
|
614
|
-
"resolved": "https://registry.npmjs.org/pg/-/pg-8.13.
|
|
615
|
-
"integrity": "sha512-
|
|
617
|
+
"version": "8.13.1",
|
|
618
|
+
"resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz",
|
|
619
|
+
"integrity": "sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==",
|
|
616
620
|
"license": "MIT",
|
|
617
621
|
"dependencies": {
|
|
618
622
|
"pg-connection-string": "^2.7.0",
|
package/replicator/package.json
CHANGED
package/setup.sh
CHANGED
|
@@ -23,12 +23,12 @@ psql -v ON_ERROR_STOP=1 $JINAGA_ADMIN_CONNECTION_STRING <<-EOSQL
|
|
|
23
23
|
GRANT SELECT, USAGE ON SEQUENCE fact_type_fact_type_id_seq TO $JINAGA_POSTGRES_APP_USER;
|
|
24
24
|
GRANT SELECT,INSERT ON TABLE public.role TO $JINAGA_POSTGRES_APP_USER;
|
|
25
25
|
GRANT SELECT, USAGE ON SEQUENCE role_role_id_seq TO $JINAGA_POSTGRES_APP_USER;
|
|
26
|
-
GRANT SELECT,INSERT ON TABLE public.fact TO $JINAGA_POSTGRES_APP_USER;
|
|
26
|
+
GRANT SELECT,INSERT,DELETE ON TABLE public.fact TO $JINAGA_POSTGRES_APP_USER;
|
|
27
27
|
GRANT SELECT, USAGE ON SEQUENCE fact_fact_id_seq TO $JINAGA_POSTGRES_APP_USER;
|
|
28
|
-
GRANT SELECT,INSERT ON TABLE public.edge TO $JINAGA_POSTGRES_APP_USER;
|
|
29
|
-
GRANT SELECT,INSERT ON TABLE public.ancestor TO $JINAGA_POSTGRES_APP_USER;
|
|
28
|
+
GRANT SELECT,INSERT,DELETE ON TABLE public.edge TO $JINAGA_POSTGRES_APP_USER;
|
|
29
|
+
GRANT SELECT,INSERT,DELETE ON TABLE public.ancestor TO $JINAGA_POSTGRES_APP_USER;
|
|
30
30
|
GRANT SELECT,INSERT ON TABLE public.public_key TO $JINAGA_POSTGRES_APP_USER;
|
|
31
31
|
GRANT SELECT, USAGE ON SEQUENCE public_key_public_key_id_seq TO $JINAGA_POSTGRES_APP_USER;
|
|
32
|
-
GRANT SELECT,INSERT ON TABLE public.signature TO $JINAGA_POSTGRES_APP_USER;
|
|
32
|
+
GRANT SELECT,INSERT,DELETE ON TABLE public.signature TO $JINAGA_POSTGRES_APP_USER;
|
|
33
33
|
GRANT SELECT,INSERT ON TABLE public.user TO $JINAGA_POSTGRES_APP_USER;
|
|
34
34
|
EOSQL
|
package/setup.sql
CHANGED
|
@@ -127,11 +127,13 @@ IF (SELECT to_regclass('public.edge') IS NULL) THEN
|
|
|
127
127
|
successor_fact_id integer NOT NULL,
|
|
128
128
|
CONSTRAINT fk_successor_fact_id
|
|
129
129
|
FOREIGN KEY (successor_fact_id)
|
|
130
|
-
REFERENCES fact (fact_id)
|
|
130
|
+
REFERENCES fact (fact_id)
|
|
131
|
+
ON DELETE CASCADE,
|
|
131
132
|
predecessor_fact_id integer NOT NULL,
|
|
132
133
|
CONSTRAINT fk_predecessor_fact_id
|
|
133
134
|
FOREIGN KEY (predecessor_fact_id)
|
|
134
135
|
REFERENCES fact (fact_id)
|
|
136
|
+
ON DELETE CASCADE
|
|
135
137
|
);
|
|
136
138
|
|
|
137
139
|
|
|
@@ -156,11 +158,13 @@ IF (SELECT to_regclass('public.ancestor') IS NULL) THEN
|
|
|
156
158
|
fact_id integer NOT NULL,
|
|
157
159
|
CONSTRAINT fk_fact_id
|
|
158
160
|
FOREIGN KEY (fact_id)
|
|
159
|
-
REFERENCES fact (fact_id)
|
|
161
|
+
REFERENCES fact (fact_id)
|
|
162
|
+
ON DELETE CASCADE,
|
|
160
163
|
ancestor_fact_id integer NOT NULL,
|
|
161
164
|
CONSTRAINT fk_ancestor_fact_id
|
|
162
165
|
FOREIGN KEY (ancestor_fact_id)
|
|
163
166
|
REFERENCES fact (fact_id)
|
|
167
|
+
ON DELETE CASCADE
|
|
164
168
|
);
|
|
165
169
|
|
|
166
170
|
|
|
@@ -198,7 +202,8 @@ IF (SELECT to_regclass('public.signature') IS NULL) THEN
|
|
|
198
202
|
fact_id integer NOT NULL,
|
|
199
203
|
CONSTRAINT fk_fact_id
|
|
200
204
|
FOREIGN KEY (fact_id)
|
|
201
|
-
REFERENCES fact (fact_id)
|
|
205
|
+
REFERENCES fact (fact_id)
|
|
206
|
+
ON DELETE CASCADE,
|
|
202
207
|
public_key_id integer NOT NULL,
|
|
203
208
|
CONSTRAINT fk_public_key_id
|
|
204
209
|
FOREIGN KEY (public_key_id)
|
|
@@ -264,6 +269,57 @@ IF (SELECT character_maximum_length
|
|
|
264
269
|
|
|
265
270
|
END IF;
|
|
266
271
|
|
|
272
|
+
--
|
|
273
|
+
-- If the foreign keys on the edge table are not set to cascade delete, then set them.
|
|
274
|
+
--
|
|
275
|
+
|
|
276
|
+
IF (SELECT confdeltype
|
|
277
|
+
FROM pg_constraint
|
|
278
|
+
WHERE conname = 'fk_predecessor_fact_id') != 'c' THEN
|
|
279
|
+
|
|
280
|
+
-- Configure cascade delete from fact to edge
|
|
281
|
+
ALTER TABLE public.edge
|
|
282
|
+
DROP CONSTRAINT fk_predecessor_fact_id;
|
|
283
|
+
ALTER TABLE public.edge
|
|
284
|
+
ADD CONSTRAINT fk_predecessor_fact_id
|
|
285
|
+
FOREIGN KEY (predecessor_fact_id)
|
|
286
|
+
REFERENCES public.fact (fact_id)
|
|
287
|
+
ON DELETE CASCADE;
|
|
288
|
+
ALTER TABLE public.edge
|
|
289
|
+
DROP CONSTRAINT fk_successor_fact_id;
|
|
290
|
+
ALTER TABLE public.edge
|
|
291
|
+
ADD CONSTRAINT fk_successor_fact_id
|
|
292
|
+
FOREIGN KEY (successor_fact_id)
|
|
293
|
+
REFERENCES public.fact (fact_id)
|
|
294
|
+
ON DELETE CASCADE;
|
|
295
|
+
|
|
296
|
+
-- Configure cascade delete from fact to signature
|
|
297
|
+
ALTER TABLE public.signature
|
|
298
|
+
DROP CONSTRAINT fk_fact_id;
|
|
299
|
+
ALTER TABLE public.signature
|
|
300
|
+
ADD CONSTRAINT fk_fact_id
|
|
301
|
+
FOREIGN KEY (fact_id)
|
|
302
|
+
REFERENCES public.fact (fact_id)
|
|
303
|
+
ON DELETE CASCADE;
|
|
304
|
+
|
|
305
|
+
-- Configure cascade delete from fact to ancestor
|
|
306
|
+
ALTER TABLE public.ancestor
|
|
307
|
+
DROP CONSTRAINT fk_fact_id;
|
|
308
|
+
ALTER TABLE public.ancestor
|
|
309
|
+
ADD CONSTRAINT fk_fact_id
|
|
310
|
+
FOREIGN KEY (fact_id)
|
|
311
|
+
REFERENCES public.fact (fact_id)
|
|
312
|
+
ON DELETE CASCADE;
|
|
313
|
+
ALTER TABLE public.ancestor
|
|
314
|
+
DROP CONSTRAINT fk_ancestor_fact_id;
|
|
315
|
+
ALTER TABLE public.ancestor
|
|
316
|
+
ADD CONSTRAINT fk_ancestor_fact_id
|
|
317
|
+
FOREIGN KEY (ancestor_fact_id)
|
|
318
|
+
REFERENCES public.fact (fact_id)
|
|
319
|
+
ON DELETE CASCADE;
|
|
320
|
+
|
|
321
|
+
END IF;
|
|
322
|
+
|
|
267
323
|
IF (SELECT to_regclass('legacy.fact') IS NOT NULL) THEN
|
|
268
324
|
|
|
269
325
|
INSERT INTO public."user"
|
|
@@ -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 { purgeSqlFromSpecification } from "./purge-sql";
|
|
47
|
+
import { purgeDescendantsSql, purgeSqlFromSpecification } from "./purge-sql";
|
|
48
48
|
|
|
49
49
|
interface FactTypeResult {
|
|
50
50
|
rows: {
|
|
@@ -434,7 +434,8 @@ export class PostgresStore implements Storage {
|
|
|
434
434
|
return factTypes;
|
|
435
435
|
}
|
|
436
436
|
|
|
437
|
-
async purge(purgeConditions: Specification[]): Promise<
|
|
437
|
+
async purge(purgeConditions: Specification[]): Promise<number> {
|
|
438
|
+
let count = 0;
|
|
438
439
|
for (const specification of purgeConditions) {
|
|
439
440
|
const factTypes = await this.loadFactTypesFromSpecification(specification);
|
|
440
441
|
const roleMap = await this.loadRolesFromSpecification(specification, factTypes);
|
|
@@ -445,10 +446,32 @@ export class PostgresStore implements Storage {
|
|
|
445
446
|
}
|
|
446
447
|
|
|
447
448
|
const { sql, parameters } = purgeCommand;
|
|
448
|
-
await this.connectionFactory.with(async (connection) => {
|
|
449
|
-
await connection.query(sql, parameters);
|
|
449
|
+
var result = await this.connectionFactory.with(async (connection) => {
|
|
450
|
+
return await connection.query(sql, parameters);
|
|
450
451
|
});
|
|
452
|
+
count += result.rowCount;
|
|
451
453
|
}
|
|
454
|
+
return count;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
async purgeDescendants(purgeRoot: FactReference, triggers: FactReference[]): Promise<number> {
|
|
458
|
+
const factTypes = await this.loadFactTypesFromReferences([ purgeRoot, ...triggers ]);
|
|
459
|
+
if (!factTypes.has(purgeRoot.type) || triggers.some(t => !factTypes.has(t.type))) {
|
|
460
|
+
return 0;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
const parameters = [
|
|
464
|
+
factTypes.get(purgeRoot.type),
|
|
465
|
+
purgeRoot.hash,
|
|
466
|
+
...triggers.map(t => [ factTypes.get(t.type), t.hash ]).flat()
|
|
467
|
+
];
|
|
468
|
+
|
|
469
|
+
const purgeCommand: string = purgeDescendantsSql(triggers.length, this.schema);
|
|
470
|
+
|
|
471
|
+
var result = await this.connectionFactory.with(async (connection) => {
|
|
472
|
+
return await connection.query(purgeCommand, parameters);
|
|
473
|
+
});
|
|
474
|
+
return result.rowCount;
|
|
452
475
|
}
|
|
453
476
|
|
|
454
477
|
loadBookmark(feed: string): Promise<string> {
|
|
@@ -2,6 +2,45 @@ import { FactReference, Specification } from "jinaga";
|
|
|
2
2
|
import { FactTypeMap, RoleMap } from "./maps";
|
|
3
3
|
import { EdgeDescription, FactByLabel, QueryDescription, QueryDescriptionBuilder } from "./query-description";
|
|
4
4
|
|
|
5
|
+
export function purgeDescendantsSql(triggerCount: number, schema: string): string {
|
|
6
|
+
let whereClause = " WHERE (t.fact_type_id = $3 AND t.hash = $4)\n";
|
|
7
|
+
for (let i = 1; i < triggerCount; i++) {
|
|
8
|
+
whereClause += ` OR (t.fact_type_id = $${i * 2 + 3} AND t.hash = $${i * 2 + 4})\n`;
|
|
9
|
+
}
|
|
10
|
+
const sql =
|
|
11
|
+
`WITH purge_root AS (\n` +
|
|
12
|
+
` SELECT pr.fact_id\n` +
|
|
13
|
+
` FROM ${schema}.fact pr\n` +
|
|
14
|
+
` WHERE pr.fact_type_id = $1\n` +
|
|
15
|
+
` AND pr.hash = $2\n` +
|
|
16
|
+
`), triggers AS (\n` +
|
|
17
|
+
` SELECT t.fact_id\n` +
|
|
18
|
+
` FROM ${schema}.fact t\n` +
|
|
19
|
+
whereClause +
|
|
20
|
+
`), triggers_and_ancestors AS (\n` +
|
|
21
|
+
` SELECT t.fact_id\n` +
|
|
22
|
+
` FROM triggers t\n` +
|
|
23
|
+
` UNION\n` +
|
|
24
|
+
` SELECT a.ancestor_fact_id\n` +
|
|
25
|
+
` FROM ${schema}.ancestor a\n` +
|
|
26
|
+
` JOIN triggers t\n` +
|
|
27
|
+
` ON a.fact_id = t.fact_id\n` +
|
|
28
|
+
`), targets AS (\n` +
|
|
29
|
+
` SELECT a.fact_id\n` +
|
|
30
|
+
` FROM ${schema}.ancestor a\n` +
|
|
31
|
+
` JOIN purge_root pr\n` +
|
|
32
|
+
` ON a.ancestor_fact_id = pr.fact_id\n` +
|
|
33
|
+
` WHERE a.fact_id NOT IN (SELECT * FROM triggers_and_ancestors)\n` +
|
|
34
|
+
`), facts AS (\n` +
|
|
35
|
+
` DELETE\n` +
|
|
36
|
+
` FROM ${schema}.fact f\n` +
|
|
37
|
+
` USING targets t WHERE t.fact_id = f.fact_id\n` +
|
|
38
|
+
` RETURNING f.fact_id\n` +
|
|
39
|
+
`)\n` +
|
|
40
|
+
`SELECT fact_id FROM facts\n`;
|
|
41
|
+
return sql;
|
|
42
|
+
}
|
|
43
|
+
|
|
5
44
|
export function purgeSqlFromSpecification(specification: Specification, factTypes: FactTypeMap, roleMap: RoleMap, schema: string):
|
|
6
45
|
{ sql: string, parameters: (string | number)[] } | null {
|
|
7
46
|
const queryDescriptionBuilder = new QueryDescriptionBuilder(factTypes, roleMap);
|
|
@@ -42,6 +81,17 @@ function generatePurgeSqlQuery(queryDescription: QueryDescription, schema: strin
|
|
|
42
81
|
const triggerWhereClauses = queryDescription.outputs
|
|
43
82
|
.map((label, index) => `a.fact_id = c2.trigger${index + 1}`)
|
|
44
83
|
.join("\n OR ");
|
|
84
|
+
const triggerAncestorClauses = queryDescription.outputs
|
|
85
|
+
.map((label, index) =>
|
|
86
|
+
` AND NOT EXISTS (\n` +
|
|
87
|
+
` SELECT 1\n` +
|
|
88
|
+
` FROM candidates c2\n` +
|
|
89
|
+
` JOIN ${schema}.ancestor a2\n` +
|
|
90
|
+
` ON a2.fact_id = c2.trigger${index + 1}\n` +
|
|
91
|
+
` WHERE a.fact_id = a2.ancestor_fact_id\n` +
|
|
92
|
+
` )\n`
|
|
93
|
+
)
|
|
94
|
+
.join("");
|
|
45
95
|
|
|
46
96
|
const sql =
|
|
47
97
|
`WITH candidates AS (\n` +
|
|
@@ -52,16 +102,17 @@ function generatePurgeSqlQuery(queryDescription: QueryDescription, schema: strin
|
|
|
52
102
|
` WHERE ${inputWhereClauses}\n` +
|
|
53
103
|
`), targets AS (\n` +
|
|
54
104
|
` SELECT a.fact_id\n` +
|
|
55
|
-
` FROM
|
|
105
|
+
` FROM ${schema}.ancestor a\n` +
|
|
56
106
|
` JOIN candidates c ON c.purge_root = a.ancestor_fact_id\n` +
|
|
57
107
|
` WHERE NOT EXISTS (\n` +
|
|
58
108
|
` SELECT 1\n` +
|
|
59
109
|
` FROM candidates c2\n` +
|
|
60
110
|
` WHERE ${triggerWhereClauses}\n` +
|
|
61
111
|
` )\n` +
|
|
112
|
+
triggerAncestorClauses +
|
|
62
113
|
`), facts AS (\n` +
|
|
63
114
|
` DELETE\n` +
|
|
64
|
-
` FROM
|
|
115
|
+
` FROM ${schema}.fact f\n` +
|
|
65
116
|
` USING targets t WHERE t.fact_id = f.fact_id\n` +
|
|
66
117
|
` RETURNING f.fact_id\n` +
|
|
67
118
|
`)\n` +
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { purgeDescendantsSql } from "../../src/postgres/purge-sql";
|
|
2
|
+
|
|
3
|
+
describe("Purge Descendants SQL", () => {
|
|
4
|
+
it("should handle single trigger", () => {
|
|
5
|
+
const sql = purgeDescendantsSql(1, 'public');
|
|
6
|
+
|
|
7
|
+
const expected =
|
|
8
|
+
`WITH purge_root AS (\n` +
|
|
9
|
+
` SELECT pr.fact_id\n` +
|
|
10
|
+
` FROM public.fact pr\n` +
|
|
11
|
+
` WHERE pr.fact_type_id = $1\n` +
|
|
12
|
+
` AND pr.hash = $2\n` +
|
|
13
|
+
`), triggers AS (\n` +
|
|
14
|
+
` SELECT t.fact_id\n` +
|
|
15
|
+
` FROM public.fact t\n` +
|
|
16
|
+
` WHERE (t.fact_type_id = $3 AND t.hash = $4)\n` +
|
|
17
|
+
`), triggers_and_ancestors AS (\n` +
|
|
18
|
+
` SELECT t.fact_id\n` +
|
|
19
|
+
` FROM triggers t\n` +
|
|
20
|
+
` UNION\n` +
|
|
21
|
+
` SELECT a.ancestor_fact_id\n` +
|
|
22
|
+
` FROM public.ancestor a\n` +
|
|
23
|
+
` JOIN triggers t\n` +
|
|
24
|
+
` ON a.fact_id = t.fact_id\n` +
|
|
25
|
+
`), targets AS (\n` +
|
|
26
|
+
` SELECT a.fact_id\n` +
|
|
27
|
+
` FROM public.ancestor a\n` +
|
|
28
|
+
` JOIN purge_root pr\n` +
|
|
29
|
+
` ON a.ancestor_fact_id = pr.fact_id\n` +
|
|
30
|
+
` WHERE a.fact_id NOT IN (SELECT * FROM triggers_and_ancestors)\n` +
|
|
31
|
+
`), facts AS (\n` +
|
|
32
|
+
` DELETE\n` +
|
|
33
|
+
` FROM public.fact f\n` +
|
|
34
|
+
` USING targets t WHERE t.fact_id = f.fact_id\n` +
|
|
35
|
+
` RETURNING f.fact_id\n` +
|
|
36
|
+
`)\n` +
|
|
37
|
+
`SELECT fact_id FROM facts\n`;
|
|
38
|
+
|
|
39
|
+
expect(sql).toBe(expected);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
@@ -41,6 +41,13 @@ describe("Purge SQL", () => {
|
|
|
41
41
|
FROM candidates c2
|
|
42
42
|
WHERE a.fact_id = c2.trigger1
|
|
43
43
|
)
|
|
44
|
+
AND NOT EXISTS (
|
|
45
|
+
SELECT 1
|
|
46
|
+
FROM candidates c2
|
|
47
|
+
JOIN public.ancestor a2
|
|
48
|
+
ON a2.fact_id = c2.trigger1
|
|
49
|
+
WHERE a.fact_id = a2.ancestor_fact_id
|
|
50
|
+
)
|
|
44
51
|
), facts AS (
|
|
45
52
|
DELETE
|
|
46
53
|
FROM public.fact f
|
|
@@ -101,6 +108,13 @@ SELECT fact_id FROM facts
|
|
|
101
108
|
FROM candidates c2
|
|
102
109
|
WHERE a.fact_id = c2.trigger1
|
|
103
110
|
)
|
|
111
|
+
AND NOT EXISTS (
|
|
112
|
+
SELECT 1
|
|
113
|
+
FROM candidates c2
|
|
114
|
+
JOIN public.ancestor a2
|
|
115
|
+
ON a2.fact_id = c2.trigger1
|
|
116
|
+
WHERE a.fact_id = a2.ancestor_fact_id
|
|
117
|
+
)
|
|
104
118
|
), facts AS (
|
|
105
119
|
DELETE
|
|
106
120
|
FROM public.fact f
|
|
@@ -167,6 +181,20 @@ SELECT fact_id FROM facts
|
|
|
167
181
|
WHERE a.fact_id = c2.trigger1
|
|
168
182
|
OR a.fact_id = c2.trigger2
|
|
169
183
|
)
|
|
184
|
+
AND NOT EXISTS (
|
|
185
|
+
SELECT 1
|
|
186
|
+
FROM candidates c2
|
|
187
|
+
JOIN public.ancestor a2
|
|
188
|
+
ON a2.fact_id = c2.trigger1
|
|
189
|
+
WHERE a.fact_id = a2.ancestor_fact_id
|
|
190
|
+
)
|
|
191
|
+
AND NOT EXISTS (
|
|
192
|
+
SELECT 1
|
|
193
|
+
FROM candidates c2
|
|
194
|
+
JOIN public.ancestor a2
|
|
195
|
+
ON a2.fact_id = c2.trigger2
|
|
196
|
+
WHERE a.fact_id = a2.ancestor_fact_id
|
|
197
|
+
)
|
|
170
198
|
), facts AS (
|
|
171
199
|
DELETE
|
|
172
200
|
FROM public.fact f
|