linkgress-orm 0.0.2 → 0.1.0

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 (72) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +196 -196
  3. package/dist/entity/db-column.d.ts +38 -1
  4. package/dist/entity/db-column.d.ts.map +1 -1
  5. package/dist/entity/db-column.js.map +1 -1
  6. package/dist/entity/db-context.d.ts +429 -50
  7. package/dist/entity/db-context.d.ts.map +1 -1
  8. package/dist/entity/db-context.js +884 -203
  9. package/dist/entity/db-context.js.map +1 -1
  10. package/dist/entity/entity-base.d.ts +8 -0
  11. package/dist/entity/entity-base.d.ts.map +1 -1
  12. package/dist/entity/entity-base.js.map +1 -1
  13. package/dist/index.d.ts +3 -3
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +5 -2
  16. package/dist/index.js.map +1 -1
  17. package/dist/migration/db-schema-manager.js +77 -77
  18. package/dist/migration/enum-migrator.js +6 -6
  19. package/dist/query/collection-strategy.factory.d.ts.map +1 -1
  20. package/dist/query/collection-strategy.factory.js +7 -3
  21. package/dist/query/collection-strategy.factory.js.map +1 -1
  22. package/dist/query/collection-strategy.interface.d.ts +12 -6
  23. package/dist/query/collection-strategy.interface.d.ts.map +1 -1
  24. package/dist/query/conditions.d.ts +178 -24
  25. package/dist/query/conditions.d.ts.map +1 -1
  26. package/dist/query/conditions.js +165 -4
  27. package/dist/query/conditions.js.map +1 -1
  28. package/dist/query/cte-builder.d.ts +21 -5
  29. package/dist/query/cte-builder.d.ts.map +1 -1
  30. package/dist/query/cte-builder.js +31 -7
  31. package/dist/query/cte-builder.js.map +1 -1
  32. package/dist/query/grouped-query.d.ts +185 -8
  33. package/dist/query/grouped-query.d.ts.map +1 -1
  34. package/dist/query/grouped-query.js +516 -30
  35. package/dist/query/grouped-query.js.map +1 -1
  36. package/dist/query/join-builder.d.ts +5 -4
  37. package/dist/query/join-builder.d.ts.map +1 -1
  38. package/dist/query/join-builder.js +11 -33
  39. package/dist/query/join-builder.js.map +1 -1
  40. package/dist/query/query-builder.d.ts +89 -20
  41. package/dist/query/query-builder.d.ts.map +1 -1
  42. package/dist/query/query-builder.js +317 -168
  43. package/dist/query/query-builder.js.map +1 -1
  44. package/dist/query/query-utils.d.ts +45 -0
  45. package/dist/query/query-utils.d.ts.map +1 -0
  46. package/dist/query/query-utils.js +103 -0
  47. package/dist/query/query-utils.js.map +1 -0
  48. package/dist/query/sql-utils.d.ts +83 -0
  49. package/dist/query/sql-utils.d.ts.map +1 -0
  50. package/dist/query/sql-utils.js +218 -0
  51. package/dist/query/sql-utils.js.map +1 -0
  52. package/dist/query/strategies/cte-collection-strategy.d.ts +85 -0
  53. package/dist/query/strategies/cte-collection-strategy.d.ts.map +1 -0
  54. package/dist/query/strategies/cte-collection-strategy.js +338 -0
  55. package/dist/query/strategies/cte-collection-strategy.js.map +1 -0
  56. package/dist/query/strategies/lateral-collection-strategy.d.ts +59 -0
  57. package/dist/query/strategies/lateral-collection-strategy.d.ts.map +1 -0
  58. package/dist/query/strategies/lateral-collection-strategy.js +243 -0
  59. package/dist/query/strategies/lateral-collection-strategy.js.map +1 -0
  60. package/dist/query/strategies/temptable-collection-strategy.d.ts +21 -0
  61. package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -1
  62. package/dist/query/strategies/temptable-collection-strategy.js +216 -94
  63. package/dist/query/strategies/temptable-collection-strategy.js.map +1 -1
  64. package/dist/query/subquery.d.ts +24 -1
  65. package/dist/query/subquery.d.ts.map +1 -1
  66. package/dist/query/subquery.js +38 -2
  67. package/dist/query/subquery.js.map +1 -1
  68. package/package.json +1 -1
  69. package/dist/query/strategies/jsonb-collection-strategy.d.ts +0 -51
  70. package/dist/query/strategies/jsonb-collection-strategy.d.ts.map +0 -1
  71. package/dist/query/strategies/jsonb-collection-strategy.js +0 -210
  72. package/dist/query/strategies/jsonb-collection-strategy.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConditionBuilder = exports.SqlFragment = exports.BetweenComparison = exports.NotInComparison = exports.InComparison = exports.IsNotNullComparison = exports.IsNullComparison = exports.ILikeComparison = exports.LikeComparison = exports.LteComparison = exports.LtComparison = exports.GteComparison = exports.GtComparison = exports.NeComparison = exports.EqComparison = exports.RawSqlCondition = exports.LogicalCondition = exports.WhereComparisonBase = exports.WhereConditionBase = void 0;
3
+ exports.ConditionBuilder = exports.sql = exports.RawSql = exports.SqlFragment = exports.BetweenComparison = exports.NotInComparison = exports.InComparison = exports.IsNotNullComparison = exports.IsNullComparison = exports.ILikeComparison = exports.LikeComparison = exports.LteComparison = exports.LtComparison = exports.GteComparison = exports.GtComparison = exports.NeComparison = exports.EqComparison = exports.RawSqlCondition = exports.LogicalCondition = exports.WhereComparisonBase = exports.WhereConditionBase = void 0;
4
4
  exports.eq = eq;
5
5
  exports.ne = ne;
6
6
  exports.gt = gt;
@@ -17,11 +17,17 @@ exports.between = between;
17
17
  exports.and = and;
18
18
  exports.or = or;
19
19
  exports.not = not;
20
- exports.sql = sql;
21
20
  /**
22
21
  * Base class for all WHERE conditions with helper methods
23
22
  */
24
23
  class WhereConditionBase {
24
+ /**
25
+ * Get all field references used in this condition.
26
+ * Used to detect navigation property references that need JOINs.
27
+ */
28
+ getFieldRefs() {
29
+ return [];
30
+ }
25
31
  /**
26
32
  * Helper to check if a value is a FieldRef
27
33
  */
@@ -83,6 +89,19 @@ class WhereComparisonBase extends WhereConditionBase {
83
89
  this.field = field;
84
90
  this.value = value;
85
91
  }
92
+ /**
93
+ * Get all field references used in this comparison
94
+ */
95
+ getFieldRefs() {
96
+ const refs = [];
97
+ if (this.isFieldRef(this.field)) {
98
+ refs.push(this.field);
99
+ }
100
+ if (this.value !== undefined && this.isFieldRef(this.value)) {
101
+ refs.push(this.value);
102
+ }
103
+ return refs;
104
+ }
86
105
  /**
87
106
  * Build the comparison SQL
88
107
  * Can be overridden for custom behavior
@@ -110,6 +129,16 @@ class LogicalCondition extends WhereConditionBase {
110
129
  this.operator = operator;
111
130
  this.conditions = conditions;
112
131
  }
132
+ /**
133
+ * Get all field references from nested conditions
134
+ */
135
+ getFieldRefs() {
136
+ const refs = [];
137
+ for (const cond of this.conditions) {
138
+ refs.push(...cond.getFieldRefs());
139
+ }
140
+ return refs;
141
+ }
113
142
  buildSql(context) {
114
143
  if (this.conditions.length === 0) {
115
144
  return '1=1';
@@ -267,6 +296,19 @@ class BetweenComparison extends WhereComparisonBase {
267
296
  this.min = min;
268
297
  this.max = max;
269
298
  }
299
+ /**
300
+ * Get all field references including min and max
301
+ */
302
+ getFieldRefs() {
303
+ const refs = super.getFieldRefs();
304
+ if (this.isFieldRef(this.min)) {
305
+ refs.push(this.min);
306
+ }
307
+ if (this.isFieldRef(this.max)) {
308
+ refs.push(this.max);
309
+ }
310
+ return refs;
311
+ }
270
312
  buildSql(context) {
271
313
  const fieldName = this.getDbColumnName(this.field); // Returns already quoted name
272
314
  const minSide = this.getRightSide(this.min, context);
@@ -377,6 +419,27 @@ class SqlFragment extends WhereConditionBase {
377
419
  getAlias() {
378
420
  return this.alias;
379
421
  }
422
+ /**
423
+ * Get all field references from the fragment values
424
+ */
425
+ getFieldRefs() {
426
+ const refs = [];
427
+ for (const value of this.values) {
428
+ if (this.isFieldRef(value)) {
429
+ refs.push(value);
430
+ }
431
+ else if (value instanceof SqlFragment) {
432
+ refs.push(...value.getFieldRefs());
433
+ }
434
+ }
435
+ return refs;
436
+ }
437
+ /**
438
+ * Check if value is a RawSql instance
439
+ */
440
+ isRawSql(value) {
441
+ return value instanceof RawSql;
442
+ }
380
443
  /**
381
444
  * Build the SQL string with proper parameter placeholders
382
445
  */
@@ -386,8 +449,12 @@ class SqlFragment extends WhereConditionBase {
386
449
  sql += this.sqlParts[i];
387
450
  if (i < this.values.length) {
388
451
  const value = this.values[i];
452
+ // Check if value is a RawSql - insert directly without parameterization
453
+ if (this.isRawSql(value)) {
454
+ sql += value.value;
455
+ }
389
456
  // Check if value is a FieldRef
390
- if (this.isFieldRef(value)) {
457
+ else if (this.isFieldRef(value)) {
391
458
  // It's a field reference - use the database column name with table alias if present
392
459
  if ('__tableAlias' in value && value.__tableAlias) {
393
460
  sql += `"${value.__tableAlias}"."${value.__dbColumnName}"`;
@@ -422,13 +489,107 @@ class SqlFragment extends WhereConditionBase {
422
489
  }
423
490
  }
424
491
  exports.SqlFragment = SqlFragment;
492
+ /**
493
+ * Marker class for raw SQL strings that should be inserted without parameterization
494
+ * Used by sql.raw() to inject SQL directly into queries
495
+ */
496
+ class RawSql {
497
+ constructor(value) {
498
+ this.value = value;
499
+ }
500
+ }
501
+ exports.RawSql = RawSql;
425
502
  /**
426
503
  * Tagged template literal for creating SQL fragments
427
504
  * Usage: sql`lower(${field})` or sql`${field} = ${value}`
428
505
  */
429
- function sql(strings, ...values) {
506
+ function sqlTemplate(strings, ...values) {
430
507
  return new SqlFragment(Array.from(strings), values);
431
508
  }
509
+ /**
510
+ * Create a raw SQL string that will be inserted directly without parameterization
511
+ * WARNING: Do not use with user input - this can lead to SQL injection!
512
+ * Use for table names, column names, SQL keywords, or trusted static strings only.
513
+ *
514
+ * @example
515
+ * // Use for dynamic table/column names
516
+ * sql`SELECT * FROM ${sql.raw(tableName)} WHERE ${sql.raw(columnName)} = ${value}`
517
+ *
518
+ * // Use for SQL keywords/operators
519
+ * sql`SELECT * FROM users ORDER BY name ${sql.raw(sortDirection)}`
520
+ *
521
+ * // Use for complex SQL that shouldn't be parameterized
522
+ * sql`SELECT ${sql.raw('COUNT(*)')} FROM users`
523
+ */
524
+ function raw(value) {
525
+ return new RawSql(value);
526
+ }
527
+ /**
528
+ * Create an empty SQL fragment
529
+ * Useful for conditional SQL building
530
+ *
531
+ * @example
532
+ * const condition = shouldFilter ? sql`WHERE active = true` : sql.empty;
533
+ */
534
+ const empty = new SqlFragment([''], []);
535
+ /**
536
+ * Join multiple SQL fragments with a separator
537
+ *
538
+ * @example
539
+ * const columns = [sql`name`, sql`email`, sql`age`];
540
+ * const selectList = sql.join(columns, sql`, `);
541
+ * // Result: name, email, age
542
+ */
543
+ function join(fragments, separator = new SqlFragment([', '], [])) {
544
+ if (fragments.length === 0) {
545
+ return empty;
546
+ }
547
+ if (fragments.length === 1) {
548
+ return fragments[0];
549
+ }
550
+ // Build combined parts and values
551
+ const parts = [];
552
+ const values = [];
553
+ for (let i = 0; i < fragments.length; i++) {
554
+ const fragment = fragments[i];
555
+ const fragmentParts = fragment.sqlParts;
556
+ const fragmentValues = fragment.values;
557
+ if (i > 0) {
558
+ // Add separator
559
+ const sepParts = separator.sqlParts;
560
+ const sepValues = separator.values;
561
+ // Merge last part of current result with separator's first part
562
+ if (parts.length > 0) {
563
+ parts[parts.length - 1] += sepParts[0];
564
+ }
565
+ else {
566
+ parts.push(sepParts[0]);
567
+ }
568
+ for (let j = 0; j < sepValues.length; j++) {
569
+ values.push(sepValues[j]);
570
+ parts.push(sepParts[j + 1]);
571
+ }
572
+ }
573
+ // Add fragment
574
+ if (parts.length > 0 && fragmentParts.length > 0) {
575
+ parts[parts.length - 1] += fragmentParts[0];
576
+ }
577
+ else if (fragmentParts.length > 0) {
578
+ parts.push(fragmentParts[0]);
579
+ }
580
+ for (let j = 0; j < fragmentValues.length; j++) {
581
+ values.push(fragmentValues[j]);
582
+ parts.push(fragmentParts[j + 1]);
583
+ }
584
+ }
585
+ return new SqlFragment(parts, values);
586
+ }
587
+ // Create the sql function with additional methods
588
+ exports.sql = Object.assign(sqlTemplate, {
589
+ raw,
590
+ empty,
591
+ join,
592
+ });
432
593
  // ============================================================================
433
594
  // SQL builder for conditions
434
595
  // ============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/query/conditions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/query/conditions.ts"],"names":[],"mappings":";;;AAwgBA,gBAKC;AAED,gBAKC;AAED,gBAKC;AAED,kBAKC;AAED,gBAKC;AAED,kBAKC;AAED,oBAKC;AAED,sBAKC;AAED,0BAKC;AAED,gCAKC;AAED,wBAIC;AAED,8BAIC;AAED,0BAMC;AAED,kBAEC;AAED,gBAEC;AAED,kBAEC;AA5cD;;GAEG;AACH,MAAsB,kBAAkB;IAMtC;;;OAGG;IACH,YAAY;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACO,UAAU,CAAI,KAAU;QAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,gBAAgB,IAAI,KAAK,CAAC;IAClF,CAAC;IAED;;;OAGG;IACO,eAAe,CAA4B,KAAyB;QAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,IAAI,KAAK,EAAE,CAAC;YAC3D,mCAAmC;YACnC,IAAI,cAAc,IAAI,KAAK,IAAK,KAAa,CAAC,YAAY,EAAE,CAAC;gBAC3D,mCAAmC;gBACnC,OAAO,IAAK,KAAa,CAAC,YAAY,MAAM,KAAK,CAAC,cAAc,GAAG,CAAC;YACtE,CAAC;YACD,qCAAqC;YACrC,OAAO,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC;QACrC,CAAC;QACD,gCAAgC;QAChC,OAAO,IAAI,KAAe,GAAG,CAAC;IAChC,CAAC;IAED;;OAEG;IACO,YAAY,CAAI,KAAuB;QAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,cAAc,CAAC;QAC9B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACO,YAAY,CAAI,KAAuB,EAAE,OAAwB;QACzE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,iEAAiE;YACjE,IAAI,cAAc,IAAI,KAAK,IAAK,KAAa,CAAC,YAAY,EAAE,CAAC;gBAC3D,OAAO,IAAK,KAAa,CAAC,YAAY,MAAM,KAAK,CAAC,cAAc,GAAG,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,sCAAsC;YACtC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;CACF;AAlED,gDAkEC;AAED;;GAEG;AACH,MAAsB,mBAA6B,SAAQ,kBAAkB;IAC3E,YACY,KAA4B,EAC5B,KAAwB;QAElC,KAAK,EAAE,CAAC;QAHE,UAAK,GAAL,KAAK,CAAuB;QAC5B,UAAK,GAAL,KAAK,CAAmB;IAGpC,CAAC;IAOD;;OAEG;IACM,YAAY;QACnB,MAAM,IAAI,GAAe,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,OAAwB;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO,GAAG,SAAS,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,qDAAqD;YACrD,OAAO,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;CACF;AA3CD,kDA2CC;AAED;;GAEG;AACH,MAAa,gBAAiB,SAAQ,kBAAkB;IACtD,YACU,QAA8B,EAC9B,UAAgC;QAExC,KAAK,EAAE,CAAC;QAHA,aAAQ,GAAR,QAAQ,CAAsB;QAC9B,eAAU,GAAV,UAAU,CAAsB;IAG1C,CAAC;IAED;;OAEG;IACM,YAAY;QACnB,MAAM,IAAI,GAAe,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAE5D,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,KAAK,KAAK;gBACR,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YACpE,KAAK,IAAI;gBACP,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACnE,KAAK,KAAK;gBACR,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7B;gBACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF;AArCD,4CAqCC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,kBAAkB;IACrD,YACU,GAAW,EACX,YAAmB,EAAE;QAE7B,KAAK,EAAE,CAAC;QAHA,QAAG,GAAH,GAAG,CAAQ;QACX,cAAS,GAAT,SAAS,CAAY;IAG/B,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AAdD,0CAcC;AAED,+EAA+E;AAC/E,sCAAsC;AACtC,+EAA+E;AAE/E,MAAa,YAAsB,SAAQ,mBAAsB;IACrD,WAAW;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAJD,oCAIC;AAED,MAAa,YAAsB,SAAQ,mBAAsB;IACrD,WAAW;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAJD,oCAIC;AAED,MAAa,YAAsB,SAAQ,mBAAsB;IACrD,WAAW;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAJD,oCAIC;AAED,MAAa,aAAuB,SAAQ,mBAAsB;IACtD,WAAW;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAJD,sCAIC;AAED,MAAa,YAAsB,SAAQ,mBAAsB;IACrD,WAAW;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAJD,oCAIC;AAED,MAAa,aAAuB,SAAQ,mBAAsB;IACtD,WAAW;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAJD,sCAIC;AAED,MAAa,cAAe,SAAQ,mBAA2B;IACnD,WAAW;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAJD,wCAIC;AAED,MAAa,eAAgB,SAAQ,mBAA2B;IACpD,WAAW;QACnB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAJD,0CAIC;AAED,MAAa,gBAA0B,SAAQ,mBAAsB;IACnE,YAAY,KAA4B;QACtC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1B,CAAC;IAES,WAAW;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AARD,4CAQC;AAED,MAAa,mBAA6B,SAAQ,mBAAsB;IACtE,YAAY,KAA4B;QACtC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1B,CAAC;IAES,WAAW;QACnB,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AARD,kDAQC;AAED;;GAEG;AACH,MAAa,YAAsB,SAAQ,mBAAsB;IAC/D,YACE,KAA4B,EACpB,MAAW;QAEnB,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAFhB,WAAM,GAAN,MAAM,CAAK;IAGrB,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B;QAElF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC,CAAC,aAAa;QAC7B,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,GAAG,SAAS,QAAQ,MAAM,GAAG,CAAC;IACvC,CAAC;IAES,WAAW;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAvBD,oCAuBC;AAED;;GAEG;AACH,MAAa,eAAyB,SAAQ,mBAAsB;IAClE,YACE,KAA4B,EACpB,MAAW;QAEnB,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAFhB,WAAM,GAAN,MAAM,CAAK;IAGrB,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B;QAElF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC,CAAC,YAAY;QAC5B,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,GAAG,SAAS,YAAY,MAAM,GAAG,CAAC;IAC3C,CAAC;IAES,WAAW;QACnB,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAvBD,0CAuBC;AAED;;GAEG;AACH,MAAa,iBAA2B,SAAQ,mBAAsB;IACpE,YACE,KAA4B,EACpB,GAAqB,EACrB,GAAqB;QAE7B,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAHhB,QAAG,GAAH,GAAG,CAAkB;QACrB,QAAG,GAAH,GAAG,CAAkB;IAG/B,CAAC;IAED;;OAEG;IACM,YAAY;QACnB,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B;QAClF,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,GAAG,SAAS,YAAY,OAAO,QAAQ,OAAO,EAAE,CAAC;IAC1D,CAAC;IAES,WAAW;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAjCD,8CAiCC;AAWD,+EAA+E;AAC/E,8BAA8B;AAC9B,iDAAiD;AACjD,+EAA+E;AAE/E,SAAgB,EAAE,CAChB,KAAmC,EACnC,KAAmC;IAEnC,OAAO,IAAI,YAAY,CAAI,KAAM,EAAE,KAAM,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,EAAE,CAChB,KAAmC,EACnC,KAAmC;IAEnC,OAAO,IAAI,YAAY,CAAI,KAAM,EAAE,KAAM,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,EAAE,CAChB,KAAmC,EACnC,KAAmC;IAEnC,OAAO,IAAI,YAAY,CAAI,KAAM,EAAE,KAAM,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,GAAG,CACjB,KAAmC,EACnC,KAAmC;IAEnC,OAAO,IAAI,aAAa,CAAI,KAAM,EAAE,KAAM,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,EAAE,CAChB,KAAmC,EACnC,KAAmC;IAEnC,OAAO,IAAI,YAAY,CAAI,KAAM,EAAE,KAAM,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,GAAG,CACjB,KAAmC,EACnC,KAAmC;IAEnC,OAAO,IAAI,aAAa,CAAI,KAAM,EAAE,KAAM,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,IAAI,CAClB,KAAwC,EACxC,KAA6C;IAE7C,OAAO,IAAI,cAAc,CAAC,KAAM,EAAE,KAAM,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,KAAK,CACnB,KAAwC,EACxC,KAA6C;IAE7C,OAAO,IAAI,eAAe,CAAC,KAAM,EAAE,KAAM,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,OAAO,CACrB,KAAmC,EACnC,MAAW;IAEX,OAAO,IAAI,YAAY,CAAI,KAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,UAAU,CACxB,KAAmC,EACnC,MAAW;IAEX,OAAO,IAAI,eAAe,CAAI,KAAM,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,MAAM,CACpB,KAAmC;IAEnC,OAAO,IAAI,gBAAgB,CAAI,KAAM,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,SAAS,CACvB,KAAmC;IAEnC,OAAO,IAAI,mBAAmB,CAAI,KAAM,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,OAAO,CACrB,KAAmC,EACnC,GAAiC,EACjC,GAAiC;IAEjC,OAAO,IAAI,iBAAiB,CAAI,KAAM,EAAE,GAAI,EAAE,GAAI,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,GAAG,CAAC,GAAG,UAAuB;IAC5C,OAAO,IAAI,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,EAAE,CAAC,GAAG,UAAuB;IAC3C,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,GAAG,CAAC,SAAoB;IACtC,OAAO,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,+EAA+E;AAC/E,oEAAoE;AACpE,+EAA+E;AAE/E;;;;GAIG;AACH,MAAa,WAA8B,SAAQ,kBAAkB;IAMnE,YAAY,KAAe,EAAE,MAAa,EAAE,MAAY,EAAE,KAAc;QACtE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,OAAO,CACL,MAAyC;QAEzC,6DAA6D;QAC7D,MAAM,gBAAgB,GAAG,OAAO,MAAM,KAAK,UAAU;YACnD,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;YACxB,CAAC,CAAC,MAAM,CAAC;QAEX,OAAO,IAAI,WAAW,CAAQ,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,EAAE,CAAC,KAAa;QACd,OAAO,IAAI,WAAW,CAAa,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACM,YAAY;QACnB,MAAM,IAAI,GAAe,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,KAAU;QACzB,OAAO,KAAK,YAAY,MAAM,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAwB;QAC/B,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAExB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAE7B,wEAAwE;gBACxE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;gBACrB,CAAC;gBACD,+BAA+B;qBAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,oFAAoF;oBACpF,IAAI,cAAc,IAAI,KAAK,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;wBAClD,GAAG,IAAI,IAAI,KAAK,CAAC,YAAY,MAAM,KAAK,CAAC,cAAc,GAAG,CAAC;oBAC7D,CAAC;yBAAM,CAAC;wBACN,GAAG,IAAI,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC;oBACrC,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;oBACxC,6BAA6B;oBAC7B,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACjC,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;oBACtH,uDAAuD;oBACvD,GAAG,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,yCAAyC;oBACzC,GAAG,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;oBACpC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,OAAO,GAAoB,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AA1HD,kCA0HC;AAED;;;GAGG;AACH,MAAa,MAAM;IACjB,YAA4B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;CAC9C;AAFD,wBAEC;AAED;;;GAGG;AACH,SAAS,WAAW,CAClB,OAA6B,EAC7B,GAAG,MAAa;IAEhB,OAAO,IAAI,WAAW,CAAa,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,GAAG,CAAC,KAAa;IACxB,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,KAAK,GAAuB,IAAI,WAAW,CAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAEnE;;;;;;;GAOG;AACH,SAAS,IAAI,CAAU,SAA2B,EAAE,YAA8B,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IAC3G,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAuB,CAAC;IACjC,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,kCAAkC;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAU,EAAE,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,aAAa,GAAI,QAAgB,CAAC,QAAoB,CAAC;QAC7D,MAAM,cAAc,GAAI,QAAgB,CAAC,MAAe,CAAC;QAEzD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,gBAAgB;YAChB,MAAM,QAAQ,GAAI,SAAiB,CAAC,QAAoB,CAAC;YACzD,MAAM,SAAS,GAAI,SAAiB,CAAC,MAAe,CAAC;YAErD,gEAAgE;YAChE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,eAAe;QACf,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,WAAW,CAAI,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,kDAAkD;AACrC,QAAA,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE;IAC5C,GAAG;IACH,KAAK;IACL,IAAI;CACL,CAAC,CAAC;AAEH,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,MAAa,gBAAgB;IAC3B,KAAK,CAAC,SAAoB,EAAE,aAAqB,CAAC;QAChD,MAAM,OAAO,GAAoB;YAC/B,YAAY,EAAE,UAAU;YACxB,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACzC,CAAC;CACF;AAVD,4CAUC"}
@@ -1,4 +1,13 @@
1
- import { SelectQueryBuilder } from './query-builder';
1
+ import { SelectQueryBuilder, ResolveCollectionResults } from './query-builder';
2
+ import { UnwrapSelection } from './conditions';
3
+ /**
4
+ * Interface for queries that can be used in CTEs
5
+ * Supports SelectQueryBuilder, EntitySelectQueryBuilder, GroupedJoinedQueryBuilder
6
+ * The TSelection type is inferred from the query's type parameter
7
+ */
8
+ interface CteCompatibleQuery<TSelection> {
9
+ toList: () => Promise<ResolveCollectionResults<TSelection>[] | TSelection[]>;
10
+ }
2
11
  /**
3
12
  * Represents a Common Table Expression (CTE) with strong typing
4
13
  */
@@ -56,11 +65,16 @@ export declare class DbCteBuilder {
56
65
  * 'items'
57
66
  * );
58
67
  */
59
- withAggregation<TSelection extends Record<string, unknown>, TKey extends Record<string, unknown>, TAlias extends string = 'items'>(cteName: string, query: SelectQueryBuilder<TSelection> | {
60
- toList: () => Promise<TSelection[]>;
61
- }, keySelector: (value: TSelection) => TKey, aggregationAlias?: TAlias): DbCte<TKey & {
68
+ withAggregation<TSelection extends Record<string, unknown>, TKey extends Record<string, unknown>, TAlias extends string = 'items'>(cteName: string, query: SelectQueryBuilder<TSelection> | CteCompatibleQuery<TSelection>, keySelector: (value: TSelection) => TKey, aggregationAlias?: TAlias): DbCte<UnwrapSelection<TKey> & {
62
69
  [K in TAlias]: Array<AggregatedItemType<TSelection, TKey>>;
63
70
  }>;
71
+ /**
72
+ * Build inner query SQL - handles different query builder types
73
+ * - SelectQueryBuilder: uses createMockRow() and selector()
74
+ * - GroupedSelectQueryBuilder: uses buildCteQuery()
75
+ * - GroupedJoinedQueryBuilder: uses buildCteQuery()
76
+ */
77
+ private buildInnerQuerySql;
64
78
  /**
65
79
  * Get all CTEs created by this builder
66
80
  */
@@ -84,12 +98,14 @@ export declare class DbCteBuilder {
84
98
  export type InferCteColumns<T> = T extends DbCte<infer TColumns> ? TColumns : never;
85
99
  /**
86
100
  * Type helper for aggregated items - removes the grouping keys from the selection
101
+ * and unwraps DbColumn/SqlFragment types to their underlying values
87
102
  */
88
103
  export type AggregatedItemType<TSelection extends Record<string, unknown>, TKey extends Record<string, unknown>> = {
89
- [K in Exclude<keyof TSelection, keyof TKey>]: TSelection[K];
104
+ [K in Exclude<keyof TSelection, keyof TKey>]: UnwrapSelection<TSelection[K]>;
90
105
  };
91
106
  /**
92
107
  * Check if a value is a CTE
93
108
  */
94
109
  export declare function isCte(value: any): value is DbCte<any>;
110
+ export {};
95
111
  //# sourceMappingURL=cte-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cte-builder.d.ts","sourceRoot":"","sources":["../../src/query/cte-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGnE;;GAEG;AACH,qBAAa,KAAK,CAAC,QAAQ;aAEP,IAAI,EAAE,MAAM;aACZ,KAAK,EAAE,MAAM;aACb,MAAM,EAAE,OAAO,EAAE;aACjB,UAAU,EAAE,QAAQ;aACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAJvC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EAAE,EACjB,UAAU,EAAE,QAAQ,EACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAA;IAGzD;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;CAGhE;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,WAAW,CAAa;;IAIhC;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;KAAE,GAC9E;QAAE,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;KAAE;IA6B7B;;;;;;;;;;;;;;OAcG;IACH,eAAe,CACb,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,SAAS,MAAM,GAAG,OAAO,EAE/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;KAAE,EAC/E,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EACxC,gBAAgB,CAAC,EAAE,MAAM,GACxB,KAAK,CAAC,IAAI,GAAG;SAAG,CAAC,IAAI,MAAM,GAAG,KAAK,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KAAE,CAAC;IAuD/E;;OAEG;IACH,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,cAAc;CAUvB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,QAAQ,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEpF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAC5B,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAClC;KACD,CAAC,IAAI,OAAO,CAAC,MAAM,UAAU,EAAE,MAAM,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAErD"}
1
+ {"version":3,"file":"cte-builder.d.ts","sourceRoot":"","sources":["../../src/query/cte-builder.ts"],"names":[],"mappings":"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"}
@@ -86,13 +86,8 @@ class DbCteBuilder {
86
86
  paramCounter: this.paramOffset,
87
87
  params: [],
88
88
  };
89
- // Build the inner query
90
- const innerSql = query.buildQuery(query.selector(query.createMockRow()), {
91
- ctes: new Map(),
92
- cteCounter: 0,
93
- paramCounter: context.paramCounter,
94
- allParams: context.params,
95
- }).sql;
89
+ // Build the inner query - handle different query builder types
90
+ const innerSql = this.buildInnerQuerySql(query, context);
96
91
  // Get group by columns
97
92
  const mockItem = this.createMockItem();
98
93
  const groupByResult = keySelector(mockItem);
@@ -125,6 +120,35 @@ class DbCteBuilder {
125
120
  this.ctes.push(cte);
126
121
  return cte;
127
122
  }
123
+ /**
124
+ * Build inner query SQL - handles different query builder types
125
+ * - SelectQueryBuilder: uses createMockRow() and selector()
126
+ * - GroupedSelectQueryBuilder: uses buildCteQuery()
127
+ * - GroupedJoinedQueryBuilder: uses buildCteQuery()
128
+ */
129
+ buildInnerQuerySql(query, context) {
130
+ const queryContext = {
131
+ ctes: new Map(),
132
+ cteCounter: 0,
133
+ paramCounter: context.paramCounter,
134
+ allParams: context.params,
135
+ };
136
+ // Check for grouped query builders that have buildCteQuery method
137
+ if (typeof query.buildCteQuery === 'function') {
138
+ const result = query.buildCteQuery(queryContext);
139
+ context.paramCounter = queryContext.paramCounter;
140
+ return result.sql;
141
+ }
142
+ // Standard SelectQueryBuilder - uses createMockRow and selector
143
+ if (typeof query.createMockRow === 'function' && typeof query.selector === 'function') {
144
+ const mockRow = query.createMockRow();
145
+ const selectionResult = query.selector(mockRow);
146
+ const result = query.buildQuery(selectionResult, queryContext);
147
+ context.paramCounter = queryContext.paramCounter;
148
+ return result.sql;
149
+ }
150
+ throw new Error('Unsupported query type for CTE. Query must be a SelectQueryBuilder, GroupedSelectQueryBuilder, or GroupedJoinedQueryBuilder.');
151
+ }
128
152
  /**
129
153
  * Get all CTEs created by this builder
130
154
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cte-builder.js","sourceRoot":"","sources":["../../src/query/cte-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cte-builder.js","sourceRoot":"","sources":["../../src/query/cte-builder.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,70 @@
1
- import { Condition, FieldRef } from './conditions';
1
+ import { Condition, SqlFragment, FieldRef } from './conditions';
2
2
  import { TableSchema } from '../schema/table-builder';
3
3
  import type { DatabaseClient } from '../database/database-client.interface';
4
- import type { QueryExecutor } from '../entity/db-context';
4
+ import type { QueryExecutor, OrderDirection } from '../entity/db-context';
5
5
  import { Subquery } from './subquery';
6
- import type { ManualJoinDefinition } from './query-builder';
6
+ import type { ManualJoinDefinition, JoinType } from './query-builder';
7
+ import { DbCte } from './cte-builder';
8
+ /**
9
+ * Query context for tracking CTEs and parameters
10
+ */
11
+ interface QueryContext {
12
+ ctes: Map<string, {
13
+ sql: string;
14
+ params: any[];
15
+ }>;
16
+ cteCounter: number;
17
+ paramCounter: number;
18
+ allParams: any[];
19
+ }
20
+ /**
21
+ * Type helper to detect if a type is a class instance (has prototype methods)
22
+ * vs a plain data object. See conditions.ts for detailed explanation.
23
+ * Excludes DbColumn and SqlFragment which have valueOf but are not value types.
24
+ */
25
+ type IsClassInstance<T> = T extends {
26
+ __isDbColumn: true;
27
+ } ? false : T extends SqlFragment<any> ? false : T extends {
28
+ valueOf(): infer V;
29
+ } ? V extends T ? true : V extends number | string | boolean | bigint | symbol ? true : false : false;
30
+ /**
31
+ * Check for types with known class method signatures
32
+ */
33
+ type HasClassMethods<T> = T extends {
34
+ getTime(): number;
35
+ } ? true : T extends {
36
+ size: number;
37
+ has(value: any): boolean;
38
+ } ? true : T extends {
39
+ byteLength: number;
40
+ } ? true : T extends {
41
+ then(onfulfilled?: any): any;
42
+ } ? true : T extends {
43
+ message: string;
44
+ name: string;
45
+ } ? true : T extends {
46
+ exec(string: string): any;
47
+ } ? true : false;
48
+ /**
49
+ * Combined check for value types that should not be recursively processed
50
+ */
51
+ type IsValueType<T> = IsClassInstance<T> extends true ? true : HasClassMethods<T> extends true ? true : false;
7
52
  /**
8
53
  * Type helper to resolve FieldRef types to their value types
54
+ * Preserves class instances (Date, Map, Set, Temporal, etc.) as-is
9
55
  */
10
- type ResolveFieldRefs<T> = T extends FieldRef<any, infer V> ? V : T extends Array<infer U> ? Array<ResolveFieldRefs<U>> : T extends object ? {
56
+ type ResolveFieldRefs<T> = T extends FieldRef<any, infer V> ? V : T extends Array<infer U> ? Array<ResolveFieldRefs<U>> : T extends object ? IsValueType<T> extends true ? T : {
11
57
  [K in keyof T]: ResolveFieldRefs<T[K]>;
12
58
  } : T;
59
+ /**
60
+ * Type helper to convert resolved value types back to FieldRef for join conditions
61
+ * This allows join conditions to accept either the value or FieldRef
62
+ * If a field is already a FieldRef, it preserves it without double-wrapping
63
+ * Preserves class instances (Date, Map, Set, Temporal, etc.) as-is
64
+ */
65
+ type ToFieldRefs<T> = T extends object ? IsValueType<T> extends true ? FieldRef<string, T> : {
66
+ [K in keyof T]: T[K] extends FieldRef<any, infer V> ? FieldRef<string, V> : FieldRef<string, T[K]>;
67
+ } : T extends FieldRef<any, infer V> ? FieldRef<string, V> : FieldRef<string, T>;
13
68
  /**
14
69
  * Represents a grouped item with access to the grouping key and aggregate functions
15
70
  * TGroupingKey: The shape of the grouping key (e.g., { street: string })
@@ -42,8 +97,9 @@ export interface GroupedItem<TGroupingKey, TOriginalRow> {
42
97
  /**
43
98
  * Get the average value of a numeric field across all items in this group
44
99
  * Always returns number since average is always numeric
100
+ * Accepts undefined since SQL AVG ignores NULL values
45
101
  */
46
- avg(selector: (item: TOriginalRow) => FieldRef<any, number> | number): number;
102
+ avg(selector: (item: TOriginalRow) => FieldRef<any, number | undefined> | number | undefined): number;
47
103
  }
48
104
  /**
49
105
  * Aggregate field reference - used in HAVING clauses
@@ -130,9 +186,9 @@ export declare class GroupedSelectQueryBuilder<TSelection, TOriginalRow, TGroupi
130
186
  * .orderBy(p => [p.colName, p.otherCol])
131
187
  * .orderBy(p => [[p.colName, 'ASC'], [p.otherCol, 'DESC']])
132
188
  */
133
- orderBy(selector: (row: TSelection) => any): this;
134
- orderBy(selector: (row: TSelection) => any[]): this;
135
- orderBy(selector: (row: TSelection) => Array<[any, 'ASC' | 'DESC']>): this;
189
+ orderBy<T>(selector: (row: TSelection) => T): this;
190
+ orderBy<T>(selector: (row: TSelection) => T[]): this;
191
+ orderBy<T>(selector: (row: TSelection) => Array<[T, OrderDirection]>): this;
136
192
  /**
137
193
  * Execute query and return results
138
194
  */
@@ -153,6 +209,53 @@ export declare class GroupedSelectQueryBuilder<TSelection, TOriginalRow, TGroupi
153
209
  * Convert to subquery for use in other queries
154
210
  */
155
211
  asSubquery<TMode extends 'scalar' | 'array' | 'table' = 'table'>(mode?: TMode): Subquery<TMode extends 'scalar' ? ResolveFieldRefs<TSelection> : TMode extends 'array' ? ResolveFieldRefs<TSelection>[] : ResolveFieldRefs<TSelection>, TMode>;
212
+ /**
213
+ * Build SQL for use in CTEs - public interface for CTE builder
214
+ * @internal
215
+ */
216
+ buildCteQuery(queryContext: QueryContext): {
217
+ sql: string;
218
+ params: any[];
219
+ };
220
+ /**
221
+ * Add a LEFT JOIN to the grouped query result
222
+ * This wraps the grouped query as a subquery and joins to it
223
+ *
224
+ * @example
225
+ * const result = await db.orders
226
+ * .select(o => ({ customerId: o.customerId, total: o.total }))
227
+ * .groupBy(o => ({ customerId: o.customerId }))
228
+ * .select(g => ({ customerId: g.key.customerId, totalSum: g.sum(o => o.total) }))
229
+ * .leftJoin(
230
+ * customerDetailsCte,
231
+ * (grouped, details) => eq(grouped.customerId, details.customerId),
232
+ * (grouped, details) => ({ ...grouped, details: details.items })
233
+ * )
234
+ * .toList();
235
+ */
236
+ leftJoin<TRight extends Record<string, any>, TNewSelection>(rightSource: Subquery<TRight, 'table'> | DbCte<TRight>, condition: (left: ToFieldRefs<TSelection>, right: ToFieldRefs<TRight>) => Condition, selector: (left: ToFieldRefs<TSelection>, right: ToFieldRefs<TRight>) => TNewSelection, alias?: string): GroupedJoinedQueryBuilder<TNewSelection, ToFieldRefs<TSelection>, ToFieldRefs<TRight>>;
237
+ /**
238
+ * Add an INNER JOIN to the grouped query result
239
+ * This wraps the grouped query as a subquery and joins to it
240
+ */
241
+ innerJoin<TRight extends Record<string, any>, TNewSelection>(rightSource: Subquery<TRight, 'table'> | DbCte<TRight>, condition: (left: ToFieldRefs<TSelection>, right: ToFieldRefs<TRight>) => Condition, selector: (left: ToFieldRefs<TSelection>, right: ToFieldRefs<TRight>) => TNewSelection, alias?: string): GroupedJoinedQueryBuilder<TNewSelection, ToFieldRefs<TSelection>, ToFieldRefs<TRight>>;
242
+ /**
243
+ * Internal join implementation
244
+ */
245
+ private joinInternal;
246
+ /**
247
+ * Create a mock object for the current selection (for join conditions)
248
+ * The key is the alias used in the SELECT clause, so we use it as __dbColumnName
249
+ */
250
+ private createMockForSelection;
251
+ /**
252
+ * Create a mock for a subquery result
253
+ */
254
+ private createMockForSubquery;
255
+ /**
256
+ * Create a mock for a CTE
257
+ */
258
+ private createMockForCte;
156
259
  /**
157
260
  * Build the SQL query for grouped results
158
261
  */
@@ -165,6 +268,14 @@ export declare class GroupedSelectQueryBuilder<TSelection, TOriginalRow, TGroupi
165
268
  * Create a mock GroupedItem for type inference
166
269
  */
167
270
  private createMockGroupedItem;
271
+ /**
272
+ * Detect navigation property references in a WHERE condition and add necessary JOINs
273
+ */
274
+ private detectAndAddJoinsFromCondition;
275
+ /**
276
+ * Detect navigation properties in a selection and add JOINs for them
277
+ */
278
+ private detectAndAddJoinsFromSelection;
168
279
  /**
169
280
  * Build HAVING condition SQL - handles aggregate field refs specially
170
281
  */
@@ -182,5 +293,71 @@ export declare class GroupedSelectQueryBuilder<TSelection, TOriginalRow, TGroupi
182
293
  */
183
294
  private getOperatorForCondition;
184
295
  }
296
+ /**
297
+ * Query builder for grouped queries that have been joined
298
+ * This handles the case where a GroupedSelectQueryBuilder is joined with a CTE or subquery
299
+ */
300
+ export declare class GroupedJoinedQueryBuilder<TSelection, TLeft, TRight> {
301
+ private schema;
302
+ private client;
303
+ private leftSubquery;
304
+ private leftAlias;
305
+ private rightSource;
306
+ private rightAlias;
307
+ private joinType;
308
+ private joinCondition;
309
+ private resultSelector;
310
+ private createLeftMock;
311
+ private createRightMock;
312
+ private executor?;
313
+ private cte?;
314
+ private limitValue?;
315
+ private offsetValue?;
316
+ private orderByFields;
317
+ private additionalJoins;
318
+ constructor(schema: TableSchema, client: DatabaseClient, leftSubquery: Subquery<any, 'table'>, leftAlias: string, rightSource: Subquery<TRight, 'table'> | DbCte<TRight>, rightAlias: string, joinType: JoinType, joinCondition: Condition, resultSelector: (left: TLeft, right: TRight) => TSelection, createLeftMock: () => TLeft, createRightMock: () => TRight, executor?: QueryExecutor, cte?: DbCte<TRight>);
319
+ /**
320
+ * Limit results
321
+ */
322
+ limit(count: number): this;
323
+ /**
324
+ * Offset results
325
+ */
326
+ offset(count: number): this;
327
+ /**
328
+ * Order by field(s) from the selected result
329
+ */
330
+ orderBy<T>(selector: (row: TSelection) => T): this;
331
+ orderBy<T>(selector: (row: TSelection) => T[]): this;
332
+ orderBy<T>(selector: (row: TSelection) => Array<[T, OrderDirection]>): this;
333
+ /**
334
+ * Execute query and return results
335
+ */
336
+ toList(): Promise<ResolveFieldRefs<TSelection>[]>;
337
+ /**
338
+ * Execute query and return first result or null
339
+ */
340
+ first(): Promise<ResolveFieldRefs<TSelection> | null>;
341
+ /**
342
+ * Execute query and return first result or throw
343
+ */
344
+ firstOrThrow(): Promise<ResolveFieldRefs<TSelection>>;
345
+ /**
346
+ * Convert to subquery for use in other queries
347
+ */
348
+ asSubquery<TMode extends 'scalar' | 'array' | 'table' = 'table'>(mode?: TMode): Subquery<TMode extends 'scalar' ? ResolveFieldRefs<TSelection> : TMode extends 'array' ? ResolveFieldRefs<TSelection>[] : ResolveFieldRefs<TSelection>, TMode>;
349
+ /**
350
+ * Build SQL for use in CTEs - public interface for CTE builder
351
+ * @internal
352
+ */
353
+ buildCteQuery(queryContext: QueryContext): {
354
+ sql: string;
355
+ params: any[];
356
+ };
357
+ /**
358
+ * Build the SQL query
359
+ */
360
+ private buildQuery;
361
+ }
185
362
  export {};
186
363
  //# sourceMappingURL=grouped-query.d.ts.map