linkgress-orm 0.4.76 → 0.4.78

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.
Files changed (31) hide show
  1. package/dist/config/linkgress-config.d.ts +23 -0
  2. package/dist/config/linkgress-config.d.ts.map +1 -1
  3. package/dist/config/linkgress-config.js +29 -0
  4. package/dist/config/linkgress-config.js.map +1 -1
  5. package/dist/entity/db-context.d.ts +9 -0
  6. package/dist/entity/db-context.d.ts.map +1 -1
  7. package/dist/entity/db-context.js +76 -65
  8. package/dist/entity/db-context.js.map +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +6 -4
  12. package/dist/index.js.map +1 -1
  13. package/dist/query/collection-strategy.interface.d.ts +14 -0
  14. package/dist/query/collection-strategy.interface.d.ts.map +1 -1
  15. package/dist/query/conditions.d.ts +36 -0
  16. package/dist/query/conditions.d.ts.map +1 -1
  17. package/dist/query/conditions.js +78 -10
  18. package/dist/query/conditions.js.map +1 -1
  19. package/dist/query/lateral-sql-cache.d.ts +53 -0
  20. package/dist/query/lateral-sql-cache.d.ts.map +1 -0
  21. package/dist/query/lateral-sql-cache.js +63 -0
  22. package/dist/query/lateral-sql-cache.js.map +1 -0
  23. package/dist/query/query-builder.d.ts +18 -1
  24. package/dist/query/query-builder.d.ts.map +1 -1
  25. package/dist/query/query-builder.js +203 -59
  26. package/dist/query/query-builder.js.map +1 -1
  27. package/dist/query/strategies/lateral-collection-strategy.d.ts +28 -3
  28. package/dist/query/strategies/lateral-collection-strategy.d.ts.map +1 -1
  29. package/dist/query/strategies/lateral-collection-strategy.js +161 -180
  30. package/dist/query/strategies/lateral-collection-strategy.js.map +1 -1
  31. package/package.json +80 -80
@@ -1,5 +1,14 @@
1
1
  import { ICollectionStrategy, CollectionStrategyType, CollectionAggregationConfig, CollectionAggregationResult } from '../collection-strategy.interface';
2
2
  import { QueryContext } from '../query-builder';
3
+ /**
4
+ * The LateralSqlCache key of an aggregation: every input `LateralCollectionStrategy.render` and
5
+ * its helpers read, in order — the alias inputs (counter, relation, tables), the correlation
6
+ * columns, the clause TEXT (which already carries the `$n` placeholder numbering), the scalar
7
+ * flags and limits, both navigation-join lists with their alias-map resolution, and the
8
+ * projection. Parameter VALUES never enter the strategy and never enter the key. Built by plain
9
+ * concatenation (a rope V8 flattens once, on the lookup) — cheaper than an array join.
10
+ */
11
+ export declare const lateralShapeKey: (config: CollectionAggregationConfig, context: QueryContext) => string;
3
12
  /**
4
13
  * LATERAL JOIN-based collection strategy
5
14
  *
@@ -57,6 +66,8 @@ export declare class LateralCollectionStrategy implements ICollectionStrategy {
57
66
  */
58
67
  private buildParentCorrelation;
59
68
  buildAggregation(config: CollectionAggregationConfig, context: QueryContext): CollectionAggregationResult;
69
+ /** The uncached rendering behind {@link buildAggregation}. */
70
+ private render;
60
71
  /**
61
72
  * Check if we can use a correlated subquery instead of LATERAL
62
73
  * This is more efficient for simple cases without LIMIT/OFFSET/ORDER BY
@@ -69,10 +80,24 @@ export declare class LateralCollectionStrategy implements ICollectionStrategy {
69
80
  */
70
81
  private buildCorrelatedSubqueryAggregation;
71
82
  /**
72
- * Helper to collect nested CTE/LATERAL joins from selected fields
73
- * These are joins to CTEs or LATERAL subqueries created for nested collections
83
+ * Rewrites the collection marker alias (`"__collection_<table>__".`) to the lateral's inner
84
+ * alias. The regex pass runs only when the marker is present at all.
85
+ */
86
+ private rewriteMarker;
87
+ /**
88
+ * One select-list entry for a leaf field. A bare quoted column (`"col"`, no dot, no inner
89
+ * quote) is qualified with the inner alias; anything else has the marker rewritten and is
90
+ * aliased unless it already renders as exactly `"<alias>"`.
91
+ */
92
+ private renderLeafSelect;
93
+ /**
94
+ * Renders the selected fields in ONE recursive pass: returns the `json_build_object(...)` text
95
+ * of this level and appends the flattened inner select list and the nested lateral joins to
96
+ * `out` (same order as the three separate walks this replaces — depth first, own join before
97
+ * the nested ones). No intermediate arrays: the select list of a wide collection projection was
98
+ * three allocations per field and three joins per statement.
74
99
  */
75
- private collectNestedCteJoins;
100
+ private renderFields;
76
101
  /**
77
102
  * Build navigation JOINs SQL for multi-level navigation in collection queries
78
103
  */
@@ -1 +1 @@
1
- {"version":3,"file":"lateral-collection-strategy.d.ts","sourceRoot":"","sources":["../../../src/query/strategies/lateral-collection-strategy.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAG5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,OAAO,IAAI,sBAAsB;IAIjC,iBAAiB,IAAI,OAAO;IAK5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,sBAAsB;IAa9B,gBAAgB,CACd,MAAM,EAAE,2BAA2B,EACnC,OAAO,EAAE,YAAY,GACpB,2BAA2B;IAgE9B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAsBhC;;;;OAIG;IACH,OAAO,CAAC,kCAAkC;IA4H1C;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;;;;;;OAOG;IACH,OAAO,CAAC,6BAA6B;IAwDrC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmJ7B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAoHlC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwF7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAuE/B"}
1
+ {"version":3,"file":"lateral-collection-strategy.d.ts","sourceRoot":"","sources":["../../../src/query/strategies/lateral-collection-strategy.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAG5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA4ChD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,2BAA2B,EAAE,SAAS,YAAY,KAAG,MAc5F,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,OAAO,IAAI,sBAAsB;IAIjC,iBAAiB,IAAI,OAAO;IAK5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,sBAAsB;IAa9B,gBAAgB,CACd,MAAM,EAAE,2BAA2B,EACnC,OAAO,EAAE,YAAY,GACpB,2BAA2B;IAqC9B,8DAA8D;IAC9D,OAAO,CAAC,MAAM;IAmEd;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAsBhC;;;;OAIG;IACH,OAAO,CAAC,kCAAkC;IA4H1C;;;OAGG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;;;;;;OAOG;IACH,OAAO,CAAC,6BAA6B;IA0DrC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6D7B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IA+ClC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwF7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAuE/B"}
@@ -1,8 +1,61 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LateralCollectionStrategy = void 0;
3
+ exports.LateralCollectionStrategy = exports.lateralShapeKey = void 0;
4
4
  const query_utils_1 = require("../query-utils");
5
5
  const join_utils_1 = require("../join-utils");
6
+ const lateral_sql_cache_1 = require("../lateral-sql-cache");
7
+ /** Key-part separator: a control character no alias, column name or SQL text contains. */
8
+ const KEY_SEP = String.fromCharCode(1);
9
+ /** A column list as one key part; the one-column case (nearly every FK) needs no join allocation. */
10
+ const listKey = (list) => (list === undefined ? '' : list.length === 1 ? list[0] : list.join(','));
11
+ /** Appends what `buildNavigationJoinsWithAlias` reads from each join, including the alias-map resolution of its source. */
12
+ const appendNavigationJoinsKey = (key, joins, aliasMap) => {
13
+ if (!joins) {
14
+ return key + '-' + KEY_SEP;
15
+ }
16
+ key += joins.length + KEY_SEP;
17
+ for (const join of joins) {
18
+ key += join.alias + KEY_SEP + join.targetTable + KEY_SEP + (join.targetSchema ?? '') + KEY_SEP
19
+ + listKey(join.foreignKeys) + KEY_SEP + listKey(join.matches) + KEY_SEP + (join.isMandatory ? 'I' : 'L') + KEY_SEP
20
+ + join.sourceAlias + KEY_SEP + (aliasMap?.get(join.sourceAlias) ?? '') + KEY_SEP;
21
+ }
22
+ return key;
23
+ };
24
+ /** Appends the projection: aliases, expressions, nesting, and nested laterals by memo id (or by text when not memoised). */
25
+ const appendFieldsKey = (key, fields) => {
26
+ key += '[' + fields.length + KEY_SEP;
27
+ for (const field of fields) {
28
+ key += field.alias + KEY_SEP + (field.expression ?? '') + KEY_SEP + (field.isColumn === true ? 'c' : 'e') + KEY_SEP;
29
+ if (field.nestedCteJoin) {
30
+ key += field.nestedCteJoin.cteName + KEY_SEP + (field.nestedCteJoin.memoId ? '#' + field.nestedCteJoin.memoId : field.nestedCteJoin.joinClause) + KEY_SEP;
31
+ }
32
+ key = field.nested ? appendFieldsKey(key, field.nested) : key + '-' + KEY_SEP;
33
+ }
34
+ return key + ']' + KEY_SEP;
35
+ };
36
+ /**
37
+ * The LateralSqlCache key of an aggregation: every input `LateralCollectionStrategy.render` and
38
+ * its helpers read, in order — the alias inputs (counter, relation, tables), the correlation
39
+ * columns, the clause TEXT (which already carries the `$n` placeholder numbering), the scalar
40
+ * flags and limits, both navigation-join lists with their alias-map resolution, and the
41
+ * projection. Parameter VALUES never enter the strategy and never enter the key. Built by plain
42
+ * concatenation (a rope V8 flattens once, on the lookup) — cheaper than an array join.
43
+ */
44
+ const lateralShapeKey = (config, context) => {
45
+ const aliasMap = context.lateralTableAliasMap;
46
+ let key = config.counter + KEY_SEP + config.relationName + KEY_SEP + config.targetTable + KEY_SEP + config.foreignKey + KEY_SEP
47
+ + listKey(config.foreignKeys) + KEY_SEP + listKey(config.matches) + KEY_SEP + (config.foreignKeyTableAlias ?? '') + KEY_SEP
48
+ + config.sourceTable + KEY_SEP + (aliasMap?.get(config.sourceTable) ?? '') + KEY_SEP
49
+ + (config.whereClause ?? '') + KEY_SEP + (config.orderByClause ?? '') + KEY_SEP + (config.orderByClauseAlias ?? '') + KEY_SEP
50
+ + (config.limitValue ?? '') + KEY_SEP + (config.offsetValue ?? '') + KEY_SEP
51
+ + (config.isDistinct === true ? 'D' : '') + (config.isSingleResult === true ? 'S' : '') + (config.useJsonArrayAggregation === true ? 'J' : '') + KEY_SEP
52
+ + config.aggregationType + KEY_SEP + (config.aggregateField ?? '') + KEY_SEP + (config.aggregateExpression ?? '') + KEY_SEP
53
+ + (config.arrayField ?? '') + KEY_SEP + config.defaultValue + KEY_SEP;
54
+ key = appendNavigationJoinsKey(key, config.navigationJoins, aliasMap);
55
+ key = appendNavigationJoinsKey(key, config.selectorNavigationJoins, aliasMap);
56
+ return appendFieldsKey(key, config.selectedFields);
57
+ };
58
+ exports.lateralShapeKey = lateralShapeKey;
6
59
  /**
7
60
  * LATERAL JOIN-based collection strategy
8
61
  *
@@ -71,6 +124,38 @@ class LateralCollectionStrategy {
71
124
  return `"${fkTableAlias}"."${foreignKey}" = "${sourceAlias}"."id"`;
72
125
  }
73
126
  buildAggregation(config, context) {
127
+ // Memoised per shape (see LateralSqlCache): the rendering below reads nothing but the
128
+ // config and the enclosing alias map, and mutates neither, so a hit is a pure lookup.
129
+ if (!lateral_sql_cache_1.LateralSqlCache.isEnabled()) {
130
+ return this.render(config, context);
131
+ }
132
+ const key = (0, exports.lateralShapeKey)(config, context);
133
+ const hit = lateral_sql_cache_1.LateralSqlCache.get(key);
134
+ if (hit) {
135
+ return {
136
+ sql: hit.sql,
137
+ params: context.allParams,
138
+ tableName: hit.tableName,
139
+ joinClause: hit.joinClause,
140
+ selectExpression: hit.selectExpression,
141
+ isCTE: false,
142
+ memoId: hit.id,
143
+ };
144
+ }
145
+ const rendered = this.render(config, context);
146
+ const entry = lateral_sql_cache_1.LateralSqlCache.store(key, {
147
+ sql: rendered.sql,
148
+ joinClause: rendered.joinClause,
149
+ selectExpression: rendered.selectExpression,
150
+ tableName: rendered.tableName,
151
+ });
152
+ if (entry.id > 0) {
153
+ rendered.memoId = entry.id;
154
+ }
155
+ return rendered;
156
+ }
157
+ /** The uncached rendering behind {@link buildAggregation}. */
158
+ render(config, context) {
74
159
  const lateralAlias = `lateral_${config.counter}`;
75
160
  // Optimization: For simple aggregations without LIMIT/OFFSET/ORDER BY,
76
161
  // use a correlated subquery in SELECT instead of LATERAL JOIN.
@@ -264,20 +349,60 @@ WHERE ${whereSQL})`;
264
349
  };
265
350
  }
266
351
  /**
267
- * Helper to collect nested CTE/LATERAL joins from selected fields
268
- * These are joins to CTEs or LATERAL subqueries created for nested collections
352
+ * Rewrites the collection marker alias (`"__collection_<table>__".`) to the lateral's inner
353
+ * alias. The regex pass runs only when the marker is present at all.
269
354
  */
270
- collectNestedCteJoins(fields) {
271
- const joins = [];
355
+ rewriteMarker(expression, targetTable, innerTableAlias) {
356
+ if (!expression.includes('"__collection_')) {
357
+ return expression;
358
+ }
359
+ return expression.replace((0, query_utils_1.collectionMarkerPattern)(targetTable, true), '"' + innerTableAlias + '".');
360
+ }
361
+ /**
362
+ * One select-list entry for a leaf field. A bare quoted column (`"col"`, no dot, no inner
363
+ * quote) is qualified with the inner alias; anything else has the marker rewritten and is
364
+ * aliased unless it already renders as exactly `"<alias>"`.
365
+ */
366
+ renderLeafSelect(expression, fullAlias, targetTable, innerTableAlias) {
367
+ const length = expression.length;
368
+ const isSimpleColumn = length > 2
369
+ && expression.charCodeAt(0) === 34
370
+ && expression.charCodeAt(length - 1) === 34
371
+ && expression.indexOf('"', 1) === length - 1
372
+ && expression.indexOf('.') === -1;
373
+ if (isSimpleColumn) {
374
+ return '"' + innerTableAlias + '".' + expression + ' as "' + fullAlias + '"';
375
+ }
376
+ const rewritten = this.rewriteMarker(expression, targetTable, innerTableAlias);
377
+ return rewritten === '"' + fullAlias + '"' ? rewritten : rewritten + ' as "' + fullAlias + '"';
378
+ }
379
+ /**
380
+ * Renders the selected fields in ONE recursive pass: returns the `json_build_object(...)` text
381
+ * of this level and appends the flattened inner select list and the nested lateral joins to
382
+ * `out` (same order as the three separate walks this replaces — depth first, own join before
383
+ * the nested ones). No intermediate arrays: the select list of a wide collection projection was
384
+ * three allocations per field and three joins per statement.
385
+ */
386
+ renderFields(fields, prefix, targetTable, innerTableAlias, out) {
387
+ let json = '';
272
388
  for (const field of fields) {
389
+ const alias = field.alias;
390
+ const fullAlias = prefix ? prefix + '__' + alias : alias;
273
391
  if (field.nestedCteJoin) {
274
- joins.push(field.nestedCteJoin.joinClause);
392
+ out.joins += (out.joins ? '\n ' : '') + field.nestedCteJoin.joinClause;
275
393
  }
276
394
  if (field.nested) {
277
- joins.push(...this.collectNestedCteJoins(field.nested));
395
+ const nestedJson = this.renderFields(field.nested, fullAlias, targetTable, innerTableAlias, out);
396
+ json += (json ? ', ' : '') + "'" + alias + "', " + nestedJson;
397
+ }
398
+ else {
399
+ json += (json ? ', ' : '') + "'" + alias + "', \"" + fullAlias + '"';
400
+ if (field.expression) {
401
+ out.select += (out.select ? ', ' : '') + this.renderLeafSelect(field.expression, fullAlias, targetTable, innerTableAlias);
402
+ }
278
403
  }
279
404
  }
280
- return joins;
405
+ return 'json_build_object(' + json + ')';
281
406
  }
282
407
  /**
283
408
  * Build navigation JOINs SQL for multi-level navigation in collection queries
@@ -313,14 +438,15 @@ WHERE ${whereSQL})`;
313
438
  * @param targetTable - Optional: the original target table name (e.g., "posts") to map to innerTableAlias
314
439
  * @param context - Optional: QueryContext containing lateralTableAliasMap for nested lateral references
315
440
  */
316
- buildNavigationJoinsWithAlias(navigationJoins, innerTableAlias, targetTable, context) {
441
+ buildNavigationJoinsWithAlias(navigationJoins, innerTableAlias, targetTable, context, relationName) {
317
442
  if (!navigationJoins || navigationJoins.length === 0) {
318
443
  return '';
319
444
  }
320
- // Extract the relation name from innerTableAlias (e.g., "lateral_0_posts" -> "posts")
321
- // This is needed to know which source aliases should be remapped
322
- const parts = innerTableAlias.split('_');
323
- const relationName = parts.length >= 3 ? parts.slice(2).join('_') : innerTableAlias;
445
+ if (relationName === undefined) {
446
+ // `lateral_<n>_<relation>` the relation name is everything after the second `_`
447
+ const parts = innerTableAlias.split('_');
448
+ relationName = parts.length >= 3 ? parts.slice(2).join('_') : innerTableAlias;
449
+ }
324
450
  // Get the lateral table alias map from context (for nested lateral references)
325
451
  // This is used when a nested collection's selector navigation references a parent collection's table
326
452
  const lateralAliasMap = context?.lateralTableAliasMap;
@@ -363,101 +489,24 @@ WHERE ${whereSQL})`;
363
489
  */
364
490
  buildJsonbAggregation(config, lateralAlias, context) {
365
491
  const { selectedFields, targetTable, foreignKey, sourceTable, whereClause, orderByClause, limitValue, offsetValue, isDistinct, navigationJoins, relationName } = config;
366
- // Use a unique table alias to avoid conflicts with outer query tables
367
- // This is important when the collection targets the same table as the outer query
368
- // (e.g., post.user.posts where both outer and inner are "posts" table)
369
492
  const innerTableAlias = `${lateralAlias}_${relationName}`;
370
- // Helper to collect all leaf fields from a potentially nested structure
371
- const collectLeafFields = (fields, prefix = '') => {
372
- const result = [];
373
- for (const field of fields) {
374
- const fullAlias = prefix ? `${prefix}__${field.alias}` : field.alias;
375
- if (field.nested) {
376
- result.push(...collectLeafFields(field.nested, fullAlias));
377
- }
378
- else if (field.expression) {
379
- result.push({ alias: fullAlias, expression: field.expression });
380
- }
381
- }
382
- return result;
383
- };
384
- // Helper to build json_build_object expression (handles nested structures)
385
- const buildJsonbObject = (fields, prefix = '') => {
386
- const parts = [];
387
- for (const field of fields) {
388
- if (field.nested) {
389
- const nestedJsonb = buildJsonbObject(field.nested, prefix ? `${prefix}__${field.alias}` : field.alias);
390
- parts.push(`'${field.alias}', ${nestedJsonb}`);
391
- }
392
- else {
393
- const fullAlias = prefix ? `${prefix}__${field.alias}` : field.alias;
394
- parts.push(`'${field.alias}', "${fullAlias}"`);
395
- }
396
- }
397
- return `json_build_object(${parts.join(', ')})`;
398
- };
399
- // Collect all leaf fields for the SELECT clause
400
- const leafFields = collectLeafFields(selectedFields);
401
- // When there are navigation joins, we need to qualify unqualified field expressions
402
- // with the inner table alias to avoid ambiguous column references
403
- const hasNavigationJoins = navigationJoins && navigationJoins.length > 0;
404
- // Helper to rewrite expressions that reference the collection's table to use inner alias
405
- const rewriteTableReference = (expression) => {
406
- // Replace the special marker alias `"__collection_tableName__".` with `"innerTableAlias".`
407
- // This marker is set in CollectionQueryBuilder.createMockItem() to distinguish
408
- // collection references from outer table references when both target the same table
409
- if (!expression.includes('"__collection_')) {
410
- return expression; // nothing to rewrite — skip the regex pass entirely
411
- }
412
- const markerPattern = (0, query_utils_1.collectionMarkerPattern)(targetTable, true);
413
- return expression.replace(markerPattern, `"${innerTableAlias}".`);
414
- };
415
- // Build the subquery SELECT fields (no foreign key needed since we correlate with parent)
416
- const allSelectFields = leafFields.map(f => {
417
- // If expression is just a quoted column name (e.g., `"id"`), qualify it with inner table alias
418
- // But if it's already qualified (e.g., `"user"."username"`), rewrite if it references target table
419
- const isSimpleColumn = /^"[^".]+"$/.test(f.expression);
420
- if (isSimpleColumn) {
421
- // Unqualified column - qualify with inner table alias
422
- const columnName = f.expression.slice(1, -1); // Remove quotes
423
- return `"${innerTableAlias}"."${columnName}" as "${f.alias}"`;
424
- }
425
- // Already qualified - rewrite target table references
426
- const rewritten = rewriteTableReference(f.expression);
427
- if (rewritten !== `"${f.alias}"`) {
428
- return `${rewritten} as "${f.alias}"`;
429
- }
430
- return rewritten;
431
- });
432
- // Build the JSONB fields for json_build_object
433
- const jsonbObjectExpr = buildJsonbObject(selectedFields);
434
- // Build navigation JOINs for multi-level navigation
435
- // Pass innerTableAlias so navigation joins can reference it properly
436
- const navJoinsSQL = this.buildNavigationJoinsWithAlias(navigationJoins, innerTableAlias, targetTable, context);
437
- // Collect nested CTE/LATERAL joins (for collections within collections)
438
- const nestedCteJoins = this.collectNestedCteJoins(selectedFields);
439
- const nestedCteJoinsSQL = nestedCteJoins.length > 0 ? nestedCteJoins.join('\n ') : '';
440
- // For nested collections, the source table may be aliased in a parent LATERAL
441
- // Check the lateralTableAliasMap to get the correct alias
493
+ // Inner select list + json_build_object + nested lateral joins in one pass
494
+ const rendered = { select: '', joins: '' };
495
+ const jsonbObjectExpr = this.renderFields(selectedFields, '', targetTable, innerTableAlias, rendered);
496
+ const navJoinsSQL = this.buildNavigationJoinsWithAlias(navigationJoins, innerTableAlias, targetTable, context, relationName);
497
+ // Check if the source table has been aliased by a parent LATERAL (for nested collections)
442
498
  const effectiveSourceTable = context.lateralTableAliasMap?.get(sourceTable) || sourceTable;
443
- // Build WHERE clause - LATERAL correlates with parent via foreign key
444
- // The correlation is: innerAlias.foreignKey = source.id (plus any literal
445
- // predicates carried by `config.foreignKeys`/`matches`).
446
- // For selectMany, the FK is on the intermediate table (joined via navJoins)
499
+ // Build WHERE clause with correlation to parent
500
+ // For selectMany, the FK is on the intermediate table (joined via navJoins), not the target table
447
501
  const fkTableAlias = config.foreignKeyTableAlias || innerTableAlias;
448
502
  let whereSQL = `WHERE ${this.buildParentCorrelation(config, fkTableAlias, effectiveSourceTable, foreignKey)}`;
449
503
  if (whereClause) {
450
- // Rewrite the user's WHERE clause to use inner alias for the collection's table
451
- const rewrittenWhereClause = rewriteTableReference(whereClause);
452
- whereSQL += ` AND ${rewrittenWhereClause}`;
504
+ whereSQL += ` AND ${this.rewriteMarker(whereClause, targetTable, innerTableAlias)}`;
453
505
  }
454
- // Build ORDER BY clause - also rewrite table references
455
506
  let orderBySQL = '';
456
507
  if (orderByClause) {
457
- const rewrittenOrderBy = rewriteTableReference(orderByClause);
458
- orderBySQL = `ORDER BY ${rewrittenOrderBy}`;
508
+ orderBySQL = `ORDER BY ${this.rewriteMarker(orderByClause, targetTable, innerTableAlias)}`;
459
509
  }
460
- // Build LIMIT/OFFSET
461
510
  let limitOffsetClause = '';
462
511
  if (limitValue !== undefined) {
463
512
  limitOffsetClause = `LIMIT ${limitValue}`;
@@ -465,21 +514,18 @@ WHERE ${whereSQL})`;
465
514
  if (offsetValue !== undefined) {
466
515
  limitOffsetClause += ` OFFSET ${offsetValue}`;
467
516
  }
468
- // Build DISTINCT clause
469
517
  const distinctClause = isDistinct ? 'DISTINCT ' : '';
470
- // Note: We don't add ORDER BY inside json_agg because:
471
- // 1. The inner subquery already applies ORDER BY before LIMIT/OFFSET
472
- // 2. Column aliases in the subquery may differ from original column names
473
- // The order is preserved from the inner query's ORDER BY
518
+ // Build LATERAL subquery
519
+ // Structure: SELECT json_agg(json_build_object(...)) FROM (SELECT ... LIMIT/OFFSET) sub
474
520
  const lateralSQL = `
475
521
  SELECT json_agg(
476
522
  ${jsonbObjectExpr}
477
523
  ) as data
478
524
  FROM (
479
- SELECT ${distinctClause}${allSelectFields.join(', ')}
525
+ SELECT ${distinctClause}${rendered.select}
480
526
  FROM "${targetTable}" "${innerTableAlias}"
481
527
  ${navJoinsSQL}
482
- ${nestedCteJoinsSQL}
528
+ ${rendered.joins}
483
529
  ${whereSQL}
484
530
  ${orderBySQL}
485
531
  ${limitOffsetClause}
@@ -493,95 +539,30 @@ FROM (
493
539
  */
494
540
  buildSingleJsonAggregation(config, lateralAlias, context) {
495
541
  const { selectedFields, targetTable, foreignKey, sourceTable, whereClause, orderByClause, isDistinct, navigationJoins, relationName } = config;
496
- // Use a unique table alias to avoid conflicts with outer query tables
497
542
  const innerTableAlias = `${lateralAlias}_${relationName}`;
498
- // Helper to collect all leaf fields from a potentially nested structure
499
- const collectLeafFields = (fields, prefix = '') => {
500
- const result = [];
501
- for (const field of fields) {
502
- const fullAlias = prefix ? `${prefix}__${field.alias}` : field.alias;
503
- if (field.nested) {
504
- result.push(...collectLeafFields(field.nested, fullAlias));
505
- }
506
- else if (field.expression) {
507
- result.push({ alias: fullAlias, expression: field.expression });
508
- }
509
- }
510
- return result;
511
- };
512
- // Helper to build json_build_object expression (handles nested structures)
513
- const buildJsonbObject = (fields, prefix = '') => {
514
- const parts = [];
515
- for (const field of fields) {
516
- if (field.nested) {
517
- const nestedJsonb = buildJsonbObject(field.nested, prefix ? `${prefix}__${field.alias}` : field.alias);
518
- parts.push(`'${field.alias}', ${nestedJsonb}`);
519
- }
520
- else {
521
- const fullAlias = prefix ? `${prefix}__${field.alias}` : field.alias;
522
- parts.push(`'${field.alias}', "${fullAlias}"`);
523
- }
524
- }
525
- return `json_build_object(${parts.join(', ')})`;
526
- };
527
- // Collect all leaf fields for the SELECT clause
528
- const leafFields = collectLeafFields(selectedFields);
529
- // Helper to rewrite expressions that reference the collection's table to use inner alias
530
- const rewriteTableReference = (expression) => {
531
- // Replace the special marker alias `"__collection_tableName__".` with `"innerTableAlias".`
532
- if (!expression.includes('"__collection_')) {
533
- return expression; // nothing to rewrite — skip the regex pass entirely
534
- }
535
- const markerPattern = (0, query_utils_1.collectionMarkerPattern)(targetTable, true);
536
- return expression.replace(markerPattern, `"${innerTableAlias}".`);
537
- };
538
- // Build the subquery SELECT fields using inner table alias
539
- const allSelectFields = leafFields.map(f => {
540
- const isSimpleColumn = /^"[^".]+"$/.test(f.expression);
541
- if (isSimpleColumn) {
542
- const columnName = f.expression.slice(1, -1);
543
- return `"${innerTableAlias}"."${columnName}" as "${f.alias}"`;
544
- }
545
- const rewritten = rewriteTableReference(f.expression);
546
- if (rewritten !== `"${f.alias}"`) {
547
- return `${rewritten} as "${f.alias}"`;
548
- }
549
- return rewritten;
550
- });
551
- // Build the JSONB fields for json_build_object
552
- const jsonbObjectExpr = buildJsonbObject(selectedFields);
553
- // Build navigation JOINs for multi-level navigation
554
- const navJoinsSQL = this.buildNavigationJoinsWithAlias(navigationJoins, innerTableAlias, targetTable, context);
555
- // Collect nested CTE/LATERAL joins (for collections within collections)
556
- const nestedCteJoins = this.collectNestedCteJoins(selectedFields);
557
- const nestedCteJoinsSQL = nestedCteJoins.length > 0 ? nestedCteJoins.join('\n ') : '';
558
- // For nested collections, the source table may be aliased in a parent LATERAL
543
+ const rendered = { select: '', joins: '' };
544
+ const jsonbObjectExpr = this.renderFields(selectedFields, '', targetTable, innerTableAlias, rendered);
545
+ const navJoinsSQL = this.buildNavigationJoinsWithAlias(navigationJoins, innerTableAlias, targetTable, context, relationName);
559
546
  const effectiveSourceTable = context.lateralTableAliasMap?.get(sourceTable) || sourceTable;
560
- // Build WHERE clause - LATERAL correlates with parent via foreign key
561
- // For selectMany, the FK is on the intermediate table (joined via navJoins)
562
547
  const fkTableAlias2 = config.foreignKeyTableAlias || innerTableAlias;
563
548
  let whereSQL = `WHERE ${this.buildParentCorrelation(config, fkTableAlias2, effectiveSourceTable, foreignKey)}`;
564
549
  if (whereClause) {
565
- const rewrittenWhereClause = rewriteTableReference(whereClause);
566
- whereSQL += ` AND ${rewrittenWhereClause}`;
550
+ whereSQL += ` AND ${this.rewriteMarker(whereClause, targetTable, innerTableAlias)}`;
567
551
  }
568
- // Build ORDER BY clause
569
552
  let orderBySQL = '';
570
553
  if (orderByClause) {
571
- const rewrittenOrderBy = rewriteTableReference(orderByClause);
572
- orderBySQL = `ORDER BY ${rewrittenOrderBy}`;
554
+ orderBySQL = `ORDER BY ${this.rewriteMarker(orderByClause, targetTable, innerTableAlias)}`;
573
555
  }
574
- // Build DISTINCT clause
575
556
  const distinctClause = isDistinct ? 'DISTINCT ' : '';
576
- // For single result, use row_to_json on the first row
577
- // LIMIT 1 is applied inside the subquery
557
+ // Structure: SELECT json_build_object(...) FROM (SELECT ... LIMIT 1) sub
558
+ // Returns null if no rows (LEFT JOIN LATERAL handles this)
578
559
  const lateralSQL = `
579
560
  SELECT ${jsonbObjectExpr} as data
580
561
  FROM (
581
- SELECT ${distinctClause}${allSelectFields.join(', ')}
562
+ SELECT ${distinctClause}${rendered.select}
582
563
  FROM "${targetTable}" "${innerTableAlias}"
583
564
  ${navJoinsSQL}
584
- ${nestedCteJoinsSQL}
565
+ ${rendered.joins}
585
566
  ${whereSQL}
586
567
  ${orderBySQL}
587
568
  LIMIT 1
@@ -1 +1 @@
1
- {"version":3,"file":"lateral-collection-strategy.js","sourceRoot":"","sources":["../../../src/query/strategies/lateral-collection-strategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lateral-collection-strategy.js","sourceRoot":"","sources":["../../../src/query/strategies/lateral-collection-strategy.ts"],"names":[],"mappings":"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"}