@webda/postgres 4.0.0-beta.5 → 4.0.0-beta.7
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/README.md +5 -6
- package/lib/pgpool.d.ts +6 -0
- package/lib/pgpool.d.ts.map +1 -1
- package/lib/pgpool.js +9 -2
- package/lib/pgpool.js.map +1 -1
- package/lib/postgrespubsub.service.d.ts +3 -0
- package/lib/postgrespubsub.service.d.ts.map +1 -1
- package/lib/postgrespubsub.service.js +2 -2
- package/lib/postgrespubsub.service.js.map +1 -1
- package/lib/postgresqueue.service.d.ts +3 -0
- package/lib/postgresqueue.service.d.ts.map +1 -1
- package/lib/postgresqueue.service.js +2 -2
- package/lib/postgresqueue.service.js.map +1 -1
- package/lib/postgresstore.service.d.ts +18 -0
- package/lib/postgresstore.service.d.ts.map +1 -1
- package/lib/postgresstore.service.js +36 -3
- package/lib/postgresstore.service.js.map +1 -1
- package/lib/sqlstore.d.ts +127 -11
- package/lib/sqlstore.d.ts.map +1 -1
- package/lib/sqlstore.js +379 -31
- package/lib/sqlstore.js.map +1 -1
- package/package.json +6 -6
- package/webda.module.json +31 -198
package/lib/sqlstore.js
CHANGED
|
@@ -12,36 +12,75 @@ export class SQLStoreParameters extends StoreParameters {
|
|
|
12
12
|
return this;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Quote a string as a SQL literal: single quotes are doubled so a value can never close the literal. Backslashes
|
|
17
|
+
* stay literal: with `standard_conforming_strings` (PostgreSQL default) `\\` is not an escape character in '...'
|
|
18
|
+
* strings — only LIKE gives it a meaning.
|
|
19
|
+
* @param value - the string
|
|
20
|
+
* @returns the SQL literal
|
|
21
|
+
*/
|
|
22
|
+
function sqlString(value) {
|
|
23
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Extends ComparisonExpression to emit SQL for JSONB comparisons
|
|
27
|
+
*
|
|
28
|
+
* With the JSON path of the attribute (`jsonAttribute`), comparisons follow the in-memory semantics:
|
|
29
|
+
* - a number or a boolean only matches a JSON number or boolean: a missing field, a null or another type never
|
|
30
|
+
* matches, and never raises a cast error;
|
|
31
|
+
* - `!=` matches a missing field, a null or another type (`IS DISTINCT FROM`);
|
|
32
|
+
* - strings compare the text of the value, so a number field equals its text (`n = '1'`), as the loose `==` does;
|
|
33
|
+
* - `CONTAINS` only matches an array holding the value.
|
|
34
|
+
*/
|
|
16
35
|
export class SQLComparisonExpression extends WebdaQL.ComparisonExpression {
|
|
17
36
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
37
|
+
* @param operator - the comparison operator
|
|
38
|
+
* @param attribute - the SQL text of the attribute (`data#>>'{a,b}'`)
|
|
39
|
+
* @param value - the value
|
|
40
|
+
* @param jsonAttribute - the SQL JSON of the attribute (`data#>'{a,b}'`), for typed comparisons
|
|
41
|
+
*/
|
|
42
|
+
constructor(operator, attribute, value, jsonAttribute) {
|
|
43
|
+
super(operator, attribute, value);
|
|
44
|
+
this.jsonAttribute = jsonAttribute;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
22
47
|
* @override
|
|
23
48
|
* @param value - the value to stringify
|
|
24
|
-
* @returns SQL-compatible
|
|
49
|
+
* @returns SQL-compatible literal
|
|
25
50
|
*/
|
|
26
51
|
toStringValue(value) {
|
|
27
52
|
if (typeof value === "string") {
|
|
28
|
-
return
|
|
53
|
+
return sqlString(value);
|
|
29
54
|
}
|
|
30
55
|
return super.toStringValue(value);
|
|
31
56
|
}
|
|
32
57
|
/**
|
|
33
58
|
* @override
|
|
34
|
-
* @returns SQL attribute expression
|
|
59
|
+
* @returns SQL attribute expression, typed when the value is a number or a boolean
|
|
35
60
|
*/
|
|
36
61
|
toStringAttribute() {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return `COALESCE(${this.attribute[0]}, 0) AS bigint`;
|
|
42
|
-
default:
|
|
43
|
-
return this.attribute[0];
|
|
62
|
+
const text = this.attribute.join(".");
|
|
63
|
+
if (this.jsonAttribute && (typeof this.value === "number" || typeof this.value === "boolean")) {
|
|
64
|
+
const type = typeof this.value;
|
|
65
|
+
return `(CASE WHEN jsonb_typeof(${this.jsonAttribute}) = '${type}' THEN (${text})::${type === "number" ? "numeric" : "boolean"} END)`;
|
|
44
66
|
}
|
|
67
|
+
return text;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @override
|
|
71
|
+
* @returns the SQL condition
|
|
72
|
+
*/
|
|
73
|
+
toString() {
|
|
74
|
+
if (WebdaQL.UNARY_COMPARISON_OPERATORS.includes(this.operator)) {
|
|
75
|
+
return `${this.attribute.join(".")} ${this.operator}`;
|
|
76
|
+
}
|
|
77
|
+
if (this.operator === "CONTAINS" && this.jsonAttribute) {
|
|
78
|
+
return `(CASE WHEN jsonb_typeof(${this.jsonAttribute}) = 'array' THEN ${this.jsonAttribute} END) @> ${sqlString(JSON.stringify([this.value]))}::jsonb`;
|
|
79
|
+
}
|
|
80
|
+
if (this.operator === "!=") {
|
|
81
|
+
return `${this.toStringAttribute()} IS DISTINCT FROM ${this.toStringValue(this.value)}`;
|
|
82
|
+
}
|
|
83
|
+
return super.toString();
|
|
45
84
|
}
|
|
46
85
|
}
|
|
47
86
|
/**
|
|
@@ -68,13 +107,44 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
68
107
|
* @param table - the table name
|
|
69
108
|
* @param separator - composite key separator
|
|
70
109
|
* @param prepare - awaited before every statement (e.g. to ensure the table exists)
|
|
110
|
+
* @param tableModel - identifier of the model the table was declared for: rows without `__type` (written before
|
|
111
|
+
* stamping) belong to it. Defaults to the topmost ancestor of `model` carrying metadata.
|
|
71
112
|
*/
|
|
72
|
-
constructor(model, pks, client, table, separator, prepare) {
|
|
113
|
+
constructor(model, pks, client, table, separator, prepare, tableModel) {
|
|
73
114
|
// Pass an empty Map — we do NOT use in-memory storage
|
|
74
115
|
super(model, pks, separator, new Map());
|
|
75
116
|
this.client = client;
|
|
76
117
|
this.table = table;
|
|
77
118
|
this.prepare = prepare;
|
|
119
|
+
this.tableModel = tableModel ?? PostgresRepository.rootIdentifier(model);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* @param model - a model class
|
|
123
|
+
* @returns the identifier of its topmost ancestor (itself included) carrying metadata
|
|
124
|
+
*/
|
|
125
|
+
static rootIdentifier(model) {
|
|
126
|
+
let root;
|
|
127
|
+
for (let clazz = model; clazz && clazz !== Function.prototype; clazz = Object.getPrototypeOf(clazz)) {
|
|
128
|
+
if (Object.prototype.hasOwnProperty.call(clazz, "Metadata") && clazz.Metadata?.Identifier) {
|
|
129
|
+
root = clazz.Metadata.Identifier;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return root;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Stamp the rows written before `__type` stamping with the table model: they keep belonging to it, and a later
|
|
136
|
+
* change of the table model cannot reassign them
|
|
137
|
+
*
|
|
138
|
+
* Idempotent; only the repository of the table model writes. Equivalent SQL:
|
|
139
|
+
* `UPDATE <table> SET data = data || jsonb_build_object('__type', '<table model>') WHERE data->>'__type' IS NULL`.
|
|
140
|
+
* @returns the number of rows stamped
|
|
141
|
+
*/
|
|
142
|
+
async backfillTypes() {
|
|
143
|
+
const own = this.model?.Metadata?.Identifier;
|
|
144
|
+
if (!own || own !== this.tableModel) {
|
|
145
|
+
return 0;
|
|
146
|
+
}
|
|
147
|
+
return (await this.execute(`UPDATE ${this.table} SET data = data || jsonb_build_object('__type', $1::text) WHERE data->>'__type' IS NULL`, [own])).rowCount;
|
|
78
148
|
}
|
|
79
149
|
/**
|
|
80
150
|
* The backing table name for this repository's model.
|
|
@@ -108,7 +178,74 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
108
178
|
* @returns the JSONB path expression
|
|
109
179
|
*/
|
|
110
180
|
mapExpressionAttribute(attribute) {
|
|
111
|
-
return `data#>>'{${
|
|
181
|
+
return `data#>>'{${this.checkPath(attribute)}}'`;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Map an expression attribute path array to its JSONB value (not its text)
|
|
185
|
+
* @param attribute - the attribute path
|
|
186
|
+
* @returns the JSONB path expression
|
|
187
|
+
*/
|
|
188
|
+
mapJsonAttribute(attribute) {
|
|
189
|
+
return `data#>'{${this.checkPath(attribute)}}'`;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Check the segments of a path written inside a SQL literal: letters, digits and `_`, like WebdaQL identifiers
|
|
193
|
+
* @param attribute - the attribute path
|
|
194
|
+
* @returns the segments, comma separated
|
|
195
|
+
* @throws Error for any other character
|
|
196
|
+
*/
|
|
197
|
+
checkPath(attribute) {
|
|
198
|
+
if (attribute.some(segment => !/^[A-Za-z0-9_]+$/.test(segment))) {
|
|
199
|
+
throw new Error(`Invalid attribute path: ${JSON.stringify(attribute)}`);
|
|
200
|
+
}
|
|
201
|
+
return attribute.join(",");
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* SQL condition restricting rows to this model and its subclasses, as `__type` stamps them; rows without a stamp
|
|
205
|
+
* (written before stamping) belong to every model of the table
|
|
206
|
+
* @returns the condition, undefined for a model without metadata
|
|
207
|
+
*/
|
|
208
|
+
getClassCondition() {
|
|
209
|
+
const ids = this.buildClassFilterIdentifiers();
|
|
210
|
+
if (!ids) {
|
|
211
|
+
return undefined;
|
|
212
|
+
}
|
|
213
|
+
const typed = `data->>'__type' IN (${ids.map(sqlString).join(", ")})`;
|
|
214
|
+
// Unstamped rows belong to the table model: its repository and its ancestors' see them, a subclass never does
|
|
215
|
+
return this.tableModel && ids.includes(this.tableModel) ? `(${typed} OR data->>'__type' IS NULL)` : `(${typed})`;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* The type an object written by the application declares: the `__type` its row was read with (non-enumerable,
|
|
219
|
+
* set by {@link fromJSON}), else the identifier of its class. Plain data declares none, whatever its keys.
|
|
220
|
+
* @param item - the object
|
|
221
|
+
* @returns the model identifier, undefined for plain data
|
|
222
|
+
*/
|
|
223
|
+
declaredType(item) {
|
|
224
|
+
if (!item || typeof item !== "object") {
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
const own = Object.getOwnPropertyDescriptor(item, "__type");
|
|
228
|
+
if (own && !own.enumerable && typeof own.value === "string") {
|
|
229
|
+
return own.value;
|
|
230
|
+
}
|
|
231
|
+
const clazz = Object.getPrototypeOf(item)?.constructor;
|
|
232
|
+
return clazz && clazz !== Object ? clazz.Metadata?.Identifier : undefined;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* The JSON stored for an object: its fields, and its declared type in `__type` (see {@link declaredType})
|
|
236
|
+
* @param item - the object
|
|
237
|
+
* @param fallbackType - the type to stamp when the object declares none
|
|
238
|
+
* @returns the JSON text
|
|
239
|
+
*/
|
|
240
|
+
toStoredJSON(item, fallbackType) {
|
|
241
|
+
const data = JSON.parse(JSON.stringify(item));
|
|
242
|
+
// An enumerable `__type` key of plain data is never trusted
|
|
243
|
+
delete data.__type;
|
|
244
|
+
const type = this.declaredType(item) ?? fallbackType;
|
|
245
|
+
if (type) {
|
|
246
|
+
data.__type = type;
|
|
247
|
+
}
|
|
248
|
+
return JSON.stringify(data);
|
|
112
249
|
}
|
|
113
250
|
/**
|
|
114
251
|
* Build a SQL WHERE sub-expression from a write-condition.
|
|
@@ -136,10 +273,11 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
136
273
|
}
|
|
137
274
|
/**
|
|
138
275
|
* Deserialize a raw JSON object from the database into a model instance.
|
|
139
|
-
* @param
|
|
276
|
+
* @param stored - the raw JSON object from the JSONB column; its `__type` stamp becomes a non-enumerable property
|
|
140
277
|
* @returns the model instance
|
|
141
278
|
*/
|
|
142
|
-
fromJSON(
|
|
279
|
+
fromJSON(stored) {
|
|
280
|
+
const { __type, ...data } = stored ?? {};
|
|
143
281
|
const instance = new this.model({});
|
|
144
282
|
if (typeof instance.load === "function") {
|
|
145
283
|
instance.load(data);
|
|
@@ -147,6 +285,14 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
147
285
|
else {
|
|
148
286
|
Object.assign(instance, data);
|
|
149
287
|
}
|
|
288
|
+
if (__type !== undefined) {
|
|
289
|
+
Object.defineProperty(instance, "__type", {
|
|
290
|
+
value: __type,
|
|
291
|
+
enumerable: false,
|
|
292
|
+
configurable: true,
|
|
293
|
+
writable: true
|
|
294
|
+
});
|
|
295
|
+
}
|
|
150
296
|
return instance;
|
|
151
297
|
}
|
|
152
298
|
/** @override */
|
|
@@ -165,7 +311,10 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
165
311
|
const item = this.buildItem(data);
|
|
166
312
|
const key = this.getPrimaryKey(item).toString();
|
|
167
313
|
try {
|
|
168
|
-
await this.execute(`INSERT INTO ${this.table}(uuid,data) VALUES($1, $2)`, [
|
|
314
|
+
await this.execute(`INSERT INTO ${this.table}(uuid,data) VALUES($1, $2)`, [
|
|
315
|
+
key,
|
|
316
|
+
this.toStoredJSON(item, this.model.Metadata?.Identifier)
|
|
317
|
+
]);
|
|
169
318
|
}
|
|
170
319
|
catch (err) {
|
|
171
320
|
// unique_violation on the primary key: the object exists, never overwrite it
|
|
@@ -179,8 +328,11 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
179
328
|
/** @override */
|
|
180
329
|
async update(data, conditionField, condition) {
|
|
181
330
|
const key = this.getPrimaryKey(data).toString();
|
|
182
|
-
const args = [
|
|
183
|
-
|
|
331
|
+
const args = [this.toStoredJSON(data), key];
|
|
332
|
+
// Plain data keeps the stored type: a write through a parent repository never re-types a subclass row
|
|
333
|
+
let q = this.declaredType(data)
|
|
334
|
+
? `UPDATE ${this.table} SET data=$1 WHERE uuid=$2`
|
|
335
|
+
: `UPDATE ${this.table} SET data = CASE WHEN data ? '__type' THEN $1::jsonb || jsonb_build_object('__type', data->'__type') ELSE $1::jsonb END WHERE uuid=$2`;
|
|
184
336
|
if (conditionField) {
|
|
185
337
|
q += this.getQueryCondition(condition, conditionField, args);
|
|
186
338
|
}
|
|
@@ -266,13 +418,14 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
266
418
|
const key = this.getPrimaryKey(primaryKey).toString();
|
|
267
419
|
const attr = String(collection);
|
|
268
420
|
const updateDate = new Date();
|
|
269
|
-
|
|
421
|
+
// The item is bound as a parameter: inlining it would break (and inject) on any quote, e.g. a file named l'été.png
|
|
422
|
+
const args = [key, JSON.stringify(item)];
|
|
270
423
|
let q = `UPDATE ${this.table} SET data = jsonb_set(jsonb_set(data::jsonb, array['${attr}'],`;
|
|
271
424
|
if (index === undefined) {
|
|
272
|
-
q += `COALESCE((data->'${attr}')::jsonb, '[]'::jsonb) ||
|
|
425
|
+
q += `COALESCE((data->'${attr}')::jsonb, '[]'::jsonb) || jsonb_build_array($2::jsonb))::jsonb`;
|
|
273
426
|
}
|
|
274
427
|
else {
|
|
275
|
-
q += `jsonb_set(COALESCE((data->'${attr}')::jsonb, '[]'::jsonb), '{${index}}',
|
|
428
|
+
q += `jsonb_set(COALESCE((data->'${attr}')::jsonb, '[]'::jsonb), '{${index}}', $2::jsonb)::jsonb)`;
|
|
276
429
|
}
|
|
277
430
|
q += `, '{_lastUpdate}', '"${updateDate.toISOString()}"'::jsonb) WHERE uuid=$1`;
|
|
278
431
|
if (itemWriteCondition !== undefined) {
|
|
@@ -335,21 +488,26 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
335
488
|
else if (expression instanceof WebdaQL.ComparisonExpression) {
|
|
336
489
|
if (expression.operator === "IN") {
|
|
337
490
|
const attr = this.mapExpressionAttribute(expression.attribute);
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
if (expression.operator === "CONTAINS") {
|
|
341
|
-
return new SQLComparisonExpression("?", "(" + this.mapExpressionAttribute(expression.attribute) + ")::jsonb", expression.value);
|
|
491
|
+
const json = this.mapJsonAttribute(expression.attribute);
|
|
492
|
+
return new WebdaQL.OrExpression(expression.value.map(v => new SQLComparisonExpression("=", attr, v, json)));
|
|
342
493
|
}
|
|
343
494
|
// IS NULL / IS NOT NULL map natively: `data#>>'{a}'` is NULL for a missing key and a JSON null
|
|
344
|
-
return new SQLComparisonExpression(expression.operator, this.mapExpressionAttribute(expression.attribute), expression.value);
|
|
495
|
+
return new SQLComparisonExpression(expression.operator, this.mapExpressionAttribute(expression.attribute), expression.value, this.mapJsonAttribute(expression.attribute));
|
|
345
496
|
}
|
|
346
497
|
return expression;
|
|
347
498
|
}
|
|
348
499
|
/** @override — use SQL WHERE clause instead of in-memory scan */
|
|
349
500
|
async query(queryStr) {
|
|
350
501
|
const WebdaQLMod = await import("@webda/ql");
|
|
351
|
-
|
|
502
|
+
// A query object built or changed by code goes back through the grammar before any SQL is written
|
|
503
|
+
const parsed = typeof queryStr === "string" ? WebdaQLMod.parse(queryStr) : WebdaQLMod.normalizeQuery(queryStr);
|
|
504
|
+
// DELETE / UPDATE go to deleteMany / updateMany; a field list is not a projection here
|
|
505
|
+
WebdaQLMod.assertFilterQuery(parsed);
|
|
352
506
|
let sql = this.duplicateExpression(parsed.filter).toString();
|
|
507
|
+
const classCondition = this.getClassCondition();
|
|
508
|
+
if (classCondition) {
|
|
509
|
+
sql = `(${sql}) AND ${classCondition}`;
|
|
510
|
+
}
|
|
353
511
|
const offset = parseInt(parsed.continuationToken || "0", 10);
|
|
354
512
|
if (parsed.orderBy && parsed.orderBy.length) {
|
|
355
513
|
sql +=
|
|
@@ -370,10 +528,200 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
370
528
|
continuationToken: limit <= results.length ? (offset + limit).toString() : undefined
|
|
371
529
|
};
|
|
372
530
|
}
|
|
531
|
+
/**
|
|
532
|
+
* JSONB expression of a dotted path, JSON null folded into SQL NULL
|
|
533
|
+
* @param path - validated dotted path
|
|
534
|
+
* @returns the SQL expression
|
|
535
|
+
*/
|
|
536
|
+
jsonPath(path) {
|
|
537
|
+
return `NULLIF(data #> '{${this.checkPath(path.split("."))}}', 'null'::jsonb)`;
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Translate an aggregation to SQL
|
|
541
|
+
*
|
|
542
|
+
* The query is validated again here and paths are checked once more, so they are safe to interpolate.
|
|
543
|
+
* Columns get positional names (`gN` per group path, `mN` / `nN` / `sN` per metric index), mapped back to
|
|
544
|
+
* the aliases by decode: alias length or shared prefixes never meet PostgreSQL's 63-byte identifier limit.
|
|
545
|
+
* MIN / MAX select a numeric and a text candidate, merged by decode.
|
|
546
|
+
* @param query - the aggregation
|
|
547
|
+
* @param where - extra WHERE condition (class condition), optional
|
|
548
|
+
* @returns the statement and the row decoder
|
|
549
|
+
*/
|
|
550
|
+
buildAggregationSQL(query, where) {
|
|
551
|
+
WebdaQL.validateAggregation(query);
|
|
552
|
+
const metrics = Object.entries(query.metrics);
|
|
553
|
+
const columns = [];
|
|
554
|
+
const groupColumns = [];
|
|
555
|
+
// Sort keys of each groupBy path / metric alias: type rank, then number, then text in code unit order, then jsonb
|
|
556
|
+
const sortKeys = {};
|
|
557
|
+
const num = (x) => `CASE WHEN jsonb_typeof(${x}) = 'number' THEN (${x})::numeric END`;
|
|
558
|
+
const str = (x) => `(CASE WHEN jsonb_typeof(${x}) = 'string' THEN ${x} #>> '{}' END) COLLATE "C"`;
|
|
559
|
+
query.groupBy.forEach((path, i) => {
|
|
560
|
+
const x = this.jsonPath(path);
|
|
561
|
+
columns.push(`${x} AS "g${i}"`);
|
|
562
|
+
groupColumns.push(String(i + 1));
|
|
563
|
+
sortKeys[path] = [
|
|
564
|
+
`CASE WHEN ${x} IS NULL THEN NULL WHEN jsonb_typeof(${x}) = 'number' THEN 1 WHEN jsonb_typeof(${x}) = 'string' THEN 2 ELSE 3 END`,
|
|
565
|
+
num(x),
|
|
566
|
+
str(x),
|
|
567
|
+
x
|
|
568
|
+
];
|
|
569
|
+
});
|
|
570
|
+
metrics.forEach(([alias, metric], i) => {
|
|
571
|
+
const x = metric.field ? this.jsonPath(metric.field) : "";
|
|
572
|
+
switch (metric.fn) {
|
|
573
|
+
case "COUNT":
|
|
574
|
+
columns.push(`${metric.field ? `COUNT(${x})` : "COUNT(*)"} AS "m${i}"`);
|
|
575
|
+
break;
|
|
576
|
+
case "COUNT_DISTINCT":
|
|
577
|
+
columns.push(`COUNT(DISTINCT ${x}) AS "m${i}"`);
|
|
578
|
+
break;
|
|
579
|
+
case "SUM":
|
|
580
|
+
columns.push(`COALESCE(SUM(${num(x)}), 0) AS "m${i}"`);
|
|
581
|
+
break;
|
|
582
|
+
case "AVG":
|
|
583
|
+
columns.push(`AVG(${num(x)}) AS "m${i}"`);
|
|
584
|
+
break;
|
|
585
|
+
case "MIN":
|
|
586
|
+
case "MAX": {
|
|
587
|
+
const n = `${metric.fn}(${num(x)})`;
|
|
588
|
+
const t = `${metric.fn}(${str(x)})`;
|
|
589
|
+
columns.push(`${n} AS "n${i}"`, `${t} AS "s${i}"`);
|
|
590
|
+
// The rank follows the type of the decoded value (number 1 < string 2), not the preference:
|
|
591
|
+
// MIN prefers a number, MAX prefers a string. The other candidate only matters when it is the result.
|
|
592
|
+
sortKeys[alias] =
|
|
593
|
+
metric.fn === "MIN"
|
|
594
|
+
? [
|
|
595
|
+
`CASE WHEN ${n} IS NOT NULL THEN 1 WHEN ${t} IS NOT NULL THEN 2 END`,
|
|
596
|
+
n,
|
|
597
|
+
`CASE WHEN ${n} IS NULL THEN ${t} END`
|
|
598
|
+
]
|
|
599
|
+
: [
|
|
600
|
+
`CASE WHEN ${t} IS NOT NULL THEN 2 WHEN ${n} IS NOT NULL THEN 1 END`,
|
|
601
|
+
`CASE WHEN ${t} IS NULL THEN ${n} END`,
|
|
602
|
+
t
|
|
603
|
+
];
|
|
604
|
+
break;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
sortKeys[alias] ?? (sortKeys[alias] = [`"m${i}"`]);
|
|
608
|
+
});
|
|
609
|
+
const filter = this.duplicateExpression(query.filter).toString();
|
|
610
|
+
let sql = `SELECT ${columns.join(", ")} FROM ${this.table} WHERE ${where ? `${where} AND (${filter})` : filter}`;
|
|
611
|
+
if (groupColumns.length) {
|
|
612
|
+
sql += ` GROUP BY ${groupColumns.join(", ")}`;
|
|
613
|
+
}
|
|
614
|
+
const order = (keys, direction) => keys.map(key => `${key} ${direction} NULLS ${direction === "ASC" ? "FIRST" : "LAST"}`);
|
|
615
|
+
const orders = (query.orderBy ?? []).flatMap(o => order(sortKeys[o.key], o.direction));
|
|
616
|
+
if (!orders.length) {
|
|
617
|
+
orders.push(...query.groupBy.flatMap(path => order(sortKeys[path], "ASC")));
|
|
618
|
+
}
|
|
619
|
+
if (orders.length) {
|
|
620
|
+
sql += ` ORDER BY ${orders.join(", ")}`;
|
|
621
|
+
}
|
|
622
|
+
const limit = query.limit ?? (query.groupBy.length ? this.aggregationOptions.maxGroups + 1 : undefined);
|
|
623
|
+
if (limit) {
|
|
624
|
+
sql += ` LIMIT ${limit}`;
|
|
625
|
+
}
|
|
626
|
+
const decode = (row) => {
|
|
627
|
+
const out = {};
|
|
628
|
+
query.groupBy.forEach((path, i) => (out[path] = row[`g${i}`] ?? null));
|
|
629
|
+
metrics.forEach(([alias, metric], i) => {
|
|
630
|
+
if (metric.fn === "MIN" || metric.fn === "MAX") {
|
|
631
|
+
const raw = row[`n${i}`];
|
|
632
|
+
const n = raw === null || raw === undefined ? null : Number(raw);
|
|
633
|
+
const t = row[`s${i}`] ?? null;
|
|
634
|
+
out[alias] = metric.fn === "MIN" ? (n ?? t) : (t ?? n);
|
|
635
|
+
}
|
|
636
|
+
else {
|
|
637
|
+
const v = row[`m${i}`];
|
|
638
|
+
out[alias] = v === null || v === undefined ? null : Number(v);
|
|
639
|
+
}
|
|
640
|
+
});
|
|
641
|
+
return out;
|
|
642
|
+
};
|
|
643
|
+
return { sql, decode };
|
|
644
|
+
}
|
|
645
|
+
/** @override GROUP BY over the data jsonb column */
|
|
646
|
+
async executeAggregation(query) {
|
|
647
|
+
const { sql, decode } = this.buildAggregationSQL(query, this.getClassCondition());
|
|
648
|
+
const res = await this.execute(sql);
|
|
649
|
+
if (query.limit === undefined && res.rows.length > this.aggregationOptions.maxGroups) {
|
|
650
|
+
const { AggregationError } = await import("@webda/ql");
|
|
651
|
+
throw new AggregationError("AGGREGATION_TOO_MANY_GROUPS", `Aggregation exceeds ${this.aggregationOptions.maxGroups} groups`);
|
|
652
|
+
}
|
|
653
|
+
return { rows: res.rows.map(decode), native: true };
|
|
654
|
+
}
|
|
655
|
+
/**
|
|
656
|
+
* SQL condition selecting the rows a statement targets: its WHERE, restricted to the first LIMIT rows when the
|
|
657
|
+
* statement has a LIMIT (PostgreSQL DELETE and UPDATE have none)
|
|
658
|
+
* @param statement - the parsed statement
|
|
659
|
+
* @returns the condition
|
|
660
|
+
*/
|
|
661
|
+
getStatementCondition(statement) {
|
|
662
|
+
let where = `(${this.duplicateExpression(statement.filter).toString()})`;
|
|
663
|
+
const classCondition = this.getClassCondition();
|
|
664
|
+
if (classCondition) {
|
|
665
|
+
where += ` AND ${classCondition}`;
|
|
666
|
+
}
|
|
667
|
+
if (statement.limit === undefined) {
|
|
668
|
+
return where;
|
|
669
|
+
}
|
|
670
|
+
if (!Number.isSafeInteger(statement.limit) || statement.limit < 0) {
|
|
671
|
+
throw new Error(`Invalid LIMIT: ${statement.limit}`);
|
|
672
|
+
}
|
|
673
|
+
// The WHERE is kept on the outer statement: a row that stopped matching since the sub-select is left alone
|
|
674
|
+
return `${where} AND uuid IN (SELECT uuid FROM ${this.table} WHERE ${where} LIMIT ${statement.limit})`;
|
|
675
|
+
}
|
|
676
|
+
/**
|
|
677
|
+
* Delete in bulk with one `DELETE ... WHERE`: no per-object event (see `Repository.deleteMany`)
|
|
678
|
+
* @override
|
|
679
|
+
*/
|
|
680
|
+
async deleteMany(statement, params) {
|
|
681
|
+
const parsed = await this.parseStatement("DELETE", statement, params);
|
|
682
|
+
return (await this.execute(`DELETE FROM ${this.table} WHERE ${this.getStatementCondition(parsed)}`, [])).rowCount;
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* Update in bulk with one `UPDATE ... SET data = jsonb_set(...) WHERE`: no per-object event (see
|
|
686
|
+
* `Repository.updateMany`)
|
|
687
|
+
*
|
|
688
|
+
* SET paths and values are bound parameters (the statement went through the grammar, see `parseStatement`); the
|
|
689
|
+
* parents of a dotted target are created when missing, an existing array parent is indexed.
|
|
690
|
+
* @override
|
|
691
|
+
*/
|
|
692
|
+
async updateMany(statement, params) {
|
|
693
|
+
const parsed = await this.parseStatement("UPDATE", statement, params);
|
|
694
|
+
const values = [];
|
|
695
|
+
// One step per jsonb_set, each reading the previous one (d0 is the row data): the SQL stays linear in size
|
|
696
|
+
const steps = [];
|
|
697
|
+
const ensured = new Set();
|
|
698
|
+
for (const { field, value } of parsed.assignments) {
|
|
699
|
+
const segments = field.split(".");
|
|
700
|
+
// Make every parent of a dotted target an object, keeping an existing object or array (a numeric segment
|
|
701
|
+
// then indexes the array)
|
|
702
|
+
for (let i = 1; i < segments.length; i++) {
|
|
703
|
+
const parent = segments.slice(0, i);
|
|
704
|
+
if (ensured.has(parent.join(".")))
|
|
705
|
+
continue;
|
|
706
|
+
ensured.add(parent.join("."));
|
|
707
|
+
values.push(parent);
|
|
708
|
+
const d = `d${steps.length}`;
|
|
709
|
+
const path = `$${values.length}::text[]`;
|
|
710
|
+
steps.push(`jsonb_set(${d}, ${path}, CASE WHEN jsonb_typeof(${d} #> ${path}) IN ('object', 'array') THEN ${d} #> ${path} ELSE '{}'::jsonb END, true)`);
|
|
711
|
+
}
|
|
712
|
+
values.push(segments, JSON.stringify(value));
|
|
713
|
+
steps.push(`jsonb_set(d${steps.length}, $${values.length - 1}::text[], $${values.length}::jsonb, true)`);
|
|
714
|
+
}
|
|
715
|
+
const data = `(SELECT d${steps.length} FROM (SELECT ${this.table}.data AS d0) s0${steps
|
|
716
|
+
.map((step, i) => ` CROSS JOIN LATERAL (SELECT ${step} AS d${i + 1}) s${i + 1}`)
|
|
717
|
+
.join("")})`;
|
|
718
|
+
return (await this.execute(`UPDATE ${this.table} SET data = ${data} WHERE ${this.getStatementCondition(parsed)}`, values)).rowCount;
|
|
719
|
+
}
|
|
373
720
|
/** @override — iterate via paginated SQL queries */
|
|
374
721
|
async *iterate(queryStr) {
|
|
375
722
|
const WebdaQLMod = await import("@webda/ql");
|
|
376
723
|
const parsed = WebdaQLMod.parse(queryStr);
|
|
724
|
+
WebdaQLMod.assertFilterQuery(parsed);
|
|
377
725
|
if (!parsed.limit) {
|
|
378
726
|
parsed.limit = 100;
|
|
379
727
|
}
|
package/lib/sqlstore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlstore.js","sourceRoot":"","sources":["../src/sqlstore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sqlstore.js","sourceRoot":"","sources":["../src/sqlstore.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webda/postgres",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.7",
|
|
4
4
|
"description": "Implements Postgres on webda",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"postgres",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"typings": "lib/index.d.ts",
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"pg": "^8.20.0",
|
|
19
|
-
"@webda/core": "4.0.0-beta.
|
|
20
|
-
"@webda/ql": "4.0.0-beta.
|
|
21
|
-
"@webda/utils": "4.0.0-beta.
|
|
19
|
+
"@webda/core": "4.0.0-beta.7",
|
|
20
|
+
"@webda/ql": "4.0.0-beta.6",
|
|
21
|
+
"@webda/utils": "4.0.0-beta.7",
|
|
22
22
|
"@webda/workout": "4.0.0-beta.5"
|
|
23
23
|
},
|
|
24
24
|
"files": [
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"typescript": "7.1.0-dev.20260929.1",
|
|
44
44
|
"vite": "^6.0.0",
|
|
45
45
|
"vitest": "^4.1.2",
|
|
46
|
-
"@webda/compiler": "^4.0.0-beta.
|
|
47
|
-
"@webda/test": "4.0.0-beta.
|
|
46
|
+
"@webda/compiler": "^4.0.0-beta.7",
|
|
47
|
+
"@webda/test": "4.0.0-beta.6"
|
|
48
48
|
},
|
|
49
49
|
"type": "module",
|
|
50
50
|
"engines": {
|