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.
- package/LICENSE +21 -21
- package/README.md +196 -196
- package/dist/entity/db-column.d.ts +38 -1
- package/dist/entity/db-column.d.ts.map +1 -1
- package/dist/entity/db-column.js.map +1 -1
- package/dist/entity/db-context.d.ts +429 -50
- package/dist/entity/db-context.d.ts.map +1 -1
- package/dist/entity/db-context.js +884 -203
- package/dist/entity/db-context.js.map +1 -1
- package/dist/entity/entity-base.d.ts +8 -0
- package/dist/entity/entity-base.d.ts.map +1 -1
- package/dist/entity/entity-base.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/migration/db-schema-manager.js +77 -77
- package/dist/migration/enum-migrator.js +6 -6
- package/dist/query/collection-strategy.factory.d.ts.map +1 -1
- package/dist/query/collection-strategy.factory.js +7 -3
- package/dist/query/collection-strategy.factory.js.map +1 -1
- package/dist/query/collection-strategy.interface.d.ts +12 -6
- package/dist/query/collection-strategy.interface.d.ts.map +1 -1
- package/dist/query/conditions.d.ts +178 -24
- package/dist/query/conditions.d.ts.map +1 -1
- package/dist/query/conditions.js +165 -4
- package/dist/query/conditions.js.map +1 -1
- package/dist/query/cte-builder.d.ts +21 -5
- package/dist/query/cte-builder.d.ts.map +1 -1
- package/dist/query/cte-builder.js +31 -7
- package/dist/query/cte-builder.js.map +1 -1
- package/dist/query/grouped-query.d.ts +185 -8
- package/dist/query/grouped-query.d.ts.map +1 -1
- package/dist/query/grouped-query.js +516 -30
- package/dist/query/grouped-query.js.map +1 -1
- package/dist/query/join-builder.d.ts +5 -4
- package/dist/query/join-builder.d.ts.map +1 -1
- package/dist/query/join-builder.js +11 -33
- package/dist/query/join-builder.js.map +1 -1
- package/dist/query/query-builder.d.ts +89 -20
- package/dist/query/query-builder.d.ts.map +1 -1
- package/dist/query/query-builder.js +317 -168
- package/dist/query/query-builder.js.map +1 -1
- package/dist/query/query-utils.d.ts +45 -0
- package/dist/query/query-utils.d.ts.map +1 -0
- package/dist/query/query-utils.js +103 -0
- package/dist/query/query-utils.js.map +1 -0
- package/dist/query/sql-utils.d.ts +83 -0
- package/dist/query/sql-utils.d.ts.map +1 -0
- package/dist/query/sql-utils.js +218 -0
- package/dist/query/sql-utils.js.map +1 -0
- package/dist/query/strategies/cte-collection-strategy.d.ts +85 -0
- package/dist/query/strategies/cte-collection-strategy.d.ts.map +1 -0
- package/dist/query/strategies/cte-collection-strategy.js +338 -0
- package/dist/query/strategies/cte-collection-strategy.js.map +1 -0
- package/dist/query/strategies/lateral-collection-strategy.d.ts +59 -0
- package/dist/query/strategies/lateral-collection-strategy.d.ts.map +1 -0
- package/dist/query/strategies/lateral-collection-strategy.js +243 -0
- package/dist/query/strategies/lateral-collection-strategy.js.map +1 -0
- package/dist/query/strategies/temptable-collection-strategy.d.ts +21 -0
- package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -1
- package/dist/query/strategies/temptable-collection-strategy.js +216 -94
- package/dist/query/strategies/temptable-collection-strategy.js.map +1 -1
- package/dist/query/subquery.d.ts +24 -1
- package/dist/query/subquery.d.ts.map +1 -1
- package/dist/query/subquery.js +38 -2
- package/dist/query/subquery.js.map +1 -1
- package/package.json +1 -1
- package/dist/query/strategies/jsonb-collection-strategy.d.ts +0 -51
- package/dist/query/strategies/jsonb-collection-strategy.d.ts.map +0 -1
- package/dist/query/strategies/jsonb-collection-strategy.js +0 -210
- package/dist/query/strategies/jsonb-collection-strategy.js.map +0 -1
package/dist/query/conditions.js
CHANGED
|
@@ -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
|
|
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;
|
|
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 =
|
|
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":";;;
|
|
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) =>
|
|
134
|
-
orderBy(selector: (row: TSelection) =>
|
|
135
|
-
orderBy(selector: (row: TSelection) => Array<[
|
|
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
|