linkgress-orm 0.0.3 → 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 +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- 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 +134 -23
- package/dist/query/conditions.d.ts.map +1 -1
- package/dist/query/conditions.js +58 -0
- 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
|
@@ -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":";;;AAsUA,sBAEC;AArPD;;GAEG;AACH,MAAa,KAAK;IAChB,YACkB,IAAY,EACZ,KAAa,EACb,MAAiB,EACjB,UAAoB,EACpB,iBAAuC;QAJvC,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAW;QACjB,eAAU,GAAV,UAAU,CAAU;QACpB,sBAAiB,GAAjB,iBAAiB,CAAsB;IACtD,CAAC;IAEJ;;OAEG;IACH,SAAS,CAA2B,UAAa;QAC/C,OAAO,UAAyB,CAAC;IACnC,CAAC;CACF;AAfD,sBAeC;AAED;;GAEG;AACH,MAAa,YAAY;IAIvB;QAHQ,SAAI,GAAiB,EAAE,CAAC;QACxB,gBAAW,GAAW,CAAC,CAAC;IAEjB,CAAC;IAEhB;;;;;;;;;;;;;;OAcG;IACH,IAAI,CACF,OAAe,EACf,KAA+E;QAE/E,MAAM,OAAO,GAAoB;YAC/B,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,iDAAiD;QACjD,MAAM,OAAO,GAAI,KAAa,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,eAAe,GAAI,KAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEzD,MAAM,GAAG,GAAI,KAAa,CAAC,UAAU,CAAC,eAAe,EAAE;YACrD,IAAI,EAAE,IAAI,GAAG,EAAE;YACf,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,SAAS,EAAE,OAAO,CAAC,MAAM;SAC1B,CAAC,CAAC,GAAG,CAAC;QAEP,uCAAuC;QACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;QAExC,+CAA+C;QAC/C,MAAM,UAAU,GAAG,EAAgB,CAAC;QAEpC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAa,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QAC7F,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpB,OAAO,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAKb,OAAe,EACf,KAAsE,EACtE,WAAwC,EACxC,gBAAyB;QAEzB,MAAM,OAAO,GAAoB;YAC/B,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEzD,uBAAuB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAElD,8BAA8B;QAC9B,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvE,2CAA2C;QAC3C,MAAM,qBAAqB,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAW,CAAC;QAEtE,0FAA0F;QAC1F,wEAAwE;QACxE,wFAAwF;QACxF,kEAAkE;QAClE,gEAAgE;QAEhE,MAAM,cAAc,GAAG;eACZ,aAAa;4CACgB,qBAAqB;cACnD,QAAQ;iBACL,aAAa;KACzB,CAAC,IAAI,EAAE,CAAC;QAET,0BAA0B;QAC1B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;QAExC,4BAA4B;QAC5B,MAAM,UAAU,GAAQ,EAAE,CAAC;QAC3B,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC3B,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,CAAC;QAE1D,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpB,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,CAAC,KAAU,EAAE,OAAwB;QAC7D,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,IAAI,GAAG,EAAE;YACf,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,SAAS,EAAE,OAAO,CAAC,MAAM;SAC1B,CAAC;QAEF,kEAAkE;QAClE,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACjD,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;YACjD,OAAO,MAAM,CAAC,GAAG,CAAC;QACpB,CAAC;QAED,gEAAgE;QAChE,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACtF,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YAC/D,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;YACjD,OAAO,MAAM,CAAC,GAAG,CAAC;QACpB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,8HAA8H,CAAC,CAAC;IAClJ,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAU;QACjC,sCAAsC;QACtC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,SAAS,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;YACnB,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBACpB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAvMD,oCAuMC;AAkBD;;GAEG;AACH,SAAgB,KAAK,CAAC,KAAU;IAC9B,OAAO,KAAK,YAAY,KAAK,CAAC;AAChC,CAAC"}
|
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouped-query.d.ts","sourceRoot":"","sources":["../../src/query/grouped-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"grouped-query.d.ts","sourceRoot":"","sources":["../../src/query/grouped-query.ts"],"names":[],"mappings":"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"}
|