linkgress-orm 0.0.3 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- 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/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 +24 -5
- package/dist/query/cte-builder.d.ts.map +1 -1
- package/dist/query/cte-builder.js +45 -7
- package/dist/query/cte-builder.js.map +1 -1
- package/dist/query/grouped-query.d.ts +196 -8
- package/dist/query/grouped-query.d.ts.map +1 -1
- package/dist/query/grouped-query.js +586 -54
- 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 +21 -47
- package/dist/query/join-builder.js.map +1 -1
- package/dist/query/query-builder.d.ts +118 -20
- package/dist/query/query-builder.d.ts.map +1 -1
- package/dist/query/query-builder.js +511 -280
- 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 +160 -38
- 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/dist/schema/table-builder.d.ts +16 -0
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +23 -1
- package/dist/schema/table-builder.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
|
@@ -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,18 @@ 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;
|
|
279
|
+
/**
|
|
280
|
+
* Add a JOIN for a FieldRef if it references a related table
|
|
281
|
+
*/
|
|
282
|
+
private addJoinForFieldRef;
|
|
168
283
|
/**
|
|
169
284
|
* Build HAVING condition SQL - handles aggregate field refs specially
|
|
170
285
|
*/
|
|
@@ -182,5 +297,78 @@ export declare class GroupedSelectQueryBuilder<TSelection, TOriginalRow, TGroupi
|
|
|
182
297
|
*/
|
|
183
298
|
private getOperatorForCondition;
|
|
184
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* Query builder for grouped queries that have been joined
|
|
302
|
+
* This handles the case where a GroupedSelectQueryBuilder is joined with a CTE or subquery
|
|
303
|
+
*/
|
|
304
|
+
export declare class GroupedJoinedQueryBuilder<TSelection, TLeft, TRight> {
|
|
305
|
+
private schema;
|
|
306
|
+
private client;
|
|
307
|
+
private leftSubquery;
|
|
308
|
+
private leftAlias;
|
|
309
|
+
private rightSource;
|
|
310
|
+
private rightAlias;
|
|
311
|
+
private joinType;
|
|
312
|
+
private joinCondition;
|
|
313
|
+
private resultSelector;
|
|
314
|
+
private createLeftMock;
|
|
315
|
+
private createRightMock;
|
|
316
|
+
private executor?;
|
|
317
|
+
private cte?;
|
|
318
|
+
private limitValue?;
|
|
319
|
+
private offsetValue?;
|
|
320
|
+
private orderByFields;
|
|
321
|
+
private additionalJoins;
|
|
322
|
+
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>);
|
|
323
|
+
/**
|
|
324
|
+
* Limit results
|
|
325
|
+
*/
|
|
326
|
+
limit(count: number): this;
|
|
327
|
+
/**
|
|
328
|
+
* Offset results
|
|
329
|
+
*/
|
|
330
|
+
offset(count: number): this;
|
|
331
|
+
/**
|
|
332
|
+
* Order by field(s) from the selected result
|
|
333
|
+
*/
|
|
334
|
+
orderBy<T>(selector: (row: TSelection) => T): this;
|
|
335
|
+
orderBy<T>(selector: (row: TSelection) => T[]): this;
|
|
336
|
+
orderBy<T>(selector: (row: TSelection) => Array<[T, OrderDirection]>): this;
|
|
337
|
+
/**
|
|
338
|
+
* Execute query and return results
|
|
339
|
+
*/
|
|
340
|
+
toList(): Promise<ResolveFieldRefs<TSelection>[]>;
|
|
341
|
+
/**
|
|
342
|
+
* Execute query and return first result or null
|
|
343
|
+
*/
|
|
344
|
+
first(): Promise<ResolveFieldRefs<TSelection> | null>;
|
|
345
|
+
/**
|
|
346
|
+
* Execute query and return first result or throw
|
|
347
|
+
*/
|
|
348
|
+
firstOrThrow(): Promise<ResolveFieldRefs<TSelection>>;
|
|
349
|
+
/**
|
|
350
|
+
* Convert to subquery for use in other queries
|
|
351
|
+
*/
|
|
352
|
+
asSubquery<TMode extends 'scalar' | 'array' | 'table' = 'table'>(mode?: TMode): Subquery<TMode extends 'scalar' ? ResolveFieldRefs<TSelection> : TMode extends 'array' ? ResolveFieldRefs<TSelection>[] : ResolveFieldRefs<TSelection>, TMode>;
|
|
353
|
+
/**
|
|
354
|
+
* Get CTEs used by this query builder
|
|
355
|
+
* @internal
|
|
356
|
+
*/
|
|
357
|
+
getReferencedCtes(): DbCte<any>[];
|
|
358
|
+
/**
|
|
359
|
+
* Build SQL for use in CTEs - public interface for CTE builder
|
|
360
|
+
* This returns SQL WITHOUT the WITH clause - CTEs should be extracted separately via getReferencedCtes()
|
|
361
|
+
* @internal
|
|
362
|
+
*/
|
|
363
|
+
buildCteQuery(queryContext: QueryContext): {
|
|
364
|
+
sql: string;
|
|
365
|
+
params: any[];
|
|
366
|
+
};
|
|
367
|
+
/**
|
|
368
|
+
* Build the SQL query
|
|
369
|
+
* @param skipCteClause If true, don't include WITH clause (for embedding in outer CTEs)
|
|
370
|
+
*/
|
|
371
|
+
private buildQuery;
|
|
372
|
+
}
|
|
185
373
|
export {};
|
|
186
374
|
//# 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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"}
|