@simplysm/orm-common 13.0.83 → 13.0.84
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/dist/ddl/initialize.d.ts +2 -2
- package/dist/ddl/initialize.js +1 -1
- package/dist/ddl/initialize.js.map +1 -1
- package/dist/ddl/table-ddl.d.ts +1 -1
- package/dist/exec/queryable.d.ts +115 -115
- package/dist/exec/queryable.js +68 -68
- package/dist/exec/queryable.js.map +1 -1
- package/dist/expr/expr.d.ts +248 -248
- package/dist/expr/expr.js +250 -250
- package/dist/query-builder/base/expr-renderer-base.d.ts +7 -7
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +3 -3
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +5 -5
- package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
- package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.js +7 -7
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +2 -2
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +4 -4
- package/dist/query-builder/mysql/mysql-query-builder.d.ts +10 -10
- package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.js +4 -4
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +2 -2
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js +4 -4
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +8 -8
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.js +7 -7
- package/dist/query-builder/query-builder.d.ts +1 -1
- package/dist/schema/factory/column-builder.d.ts +46 -46
- package/dist/schema/factory/column-builder.js +25 -25
- package/dist/schema/factory/index-builder.d.ts +22 -22
- package/dist/schema/factory/index-builder.js +14 -14
- package/dist/schema/factory/relation-builder.d.ts +93 -93
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +37 -37
- package/dist/schema/procedure-builder.d.ts +38 -38
- package/dist/schema/procedure-builder.d.ts.map +1 -1
- package/dist/schema/procedure-builder.js +26 -26
- package/dist/schema/table-builder.d.ts +38 -38
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +29 -29
- package/dist/schema/view-builder.d.ts +26 -26
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +18 -18
- package/dist/types/db.d.ts +40 -40
- package/dist/types/expr.d.ts +75 -75
- package/dist/types/expr.d.ts.map +1 -1
- package/dist/types/query-def.d.ts +32 -32
- package/dist/types/query-def.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/ddl/initialize.ts +16 -16
- package/src/ddl/table-ddl.ts +1 -1
- package/src/exec/queryable.ts +163 -163
- package/src/expr/expr.ts +257 -257
- package/src/query-builder/base/expr-renderer-base.ts +8 -8
- package/src/query-builder/mssql/mssql-expr-renderer.ts +20 -20
- package/src/query-builder/mssql/mssql-query-builder.ts +28 -28
- package/src/query-builder/mysql/mysql-expr-renderer.ts +22 -22
- package/src/query-builder/mysql/mysql-query-builder.ts +65 -65
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +15 -15
- package/src/query-builder/postgresql/postgresql-query-builder.ts +43 -43
- package/src/query-builder/query-builder.ts +1 -1
- package/src/schema/factory/column-builder.ts +48 -48
- package/src/schema/factory/index-builder.ts +22 -22
- package/src/schema/factory/relation-builder.ts +95 -95
- package/src/schema/procedure-builder.ts +38 -38
- package/src/schema/table-builder.ts +38 -38
- package/src/schema/view-builder.ts +28 -28
- package/src/types/db.ts +41 -41
- package/src/types/expr.ts +79 -79
- package/src/types/query-def.ts +37 -37
- package/tests/ddl/basic.expected.ts +8 -8
package/dist/ddl/initialize.d.ts
CHANGED
|
@@ -29,8 +29,8 @@ export declare function initialize(db: DbContextBase & DbContextDdlMethods & {
|
|
|
29
29
|
force?: boolean;
|
|
30
30
|
}): Promise<void>;
|
|
31
31
|
/**
|
|
32
|
-
* ForeignKeyTarget/RelationKeyTarget
|
|
33
|
-
* - targetTableFn()
|
|
32
|
+
* Validate ForeignKeyTarget/RelationKeyTarget relations
|
|
33
|
+
* - Checks if the table returned by targetTableFn() has a FK/RelationKey matching the relationName
|
|
34
34
|
*/
|
|
35
35
|
export declare function validateRelations(def: DbContextDef<any, any, any>): void;
|
|
36
36
|
//# sourceMappingURL=initialize.d.ts.map
|
package/dist/ddl/initialize.js
CHANGED
|
@@ -125,7 +125,7 @@ function validateRelations(def) {
|
|
|
125
125
|
const fkRel = (_a = targetTable.meta.relations) == null ? void 0 : _a[fkRelName];
|
|
126
126
|
if (!(fkRel instanceof ForeignKeyBuilder) && !(fkRel instanceof RelationKeyBuilder)) {
|
|
127
127
|
throw new Error(
|
|
128
|
-
`Invalid relation target: ${table.meta.name}.${relName}
|
|
128
|
+
`Invalid relation target: '${fkRelName}' referenced by ${table.meta.name}.${relName} is not a valid ForeignKey/RelationKey in ${targetTable.meta.name}.`
|
|
129
129
|
);
|
|
130
130
|
}
|
|
131
131
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/ddl/initialize.ts"],
|
|
4
|
-
"mappings": "AAGA,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AACjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,+BAA+B;AACxC,SAAS,0BAA0B,2BAA2B;AAC9D,SAAS,wBAAwB,+BAA+B;AAsBhE,eAAsB,WACpB,IACA,KACA,SACe;AACf,QAAM,WAAU,mCAAS,SAAQ,GAAG,aAAa,SAAY,CAAC,GAAG,QAAQ,IAAI,CAAC;AAC9E,MAAI,QAAQ,SAAS,GAAG;AACtB,UAAM,IAAI,MAAM,4BAA4B;AAAA,EAC9C;AAEA,QAAM,SAAQ,mCAAS,UAAS;AAGhC,aAAW,UAAU,SAAS;AAC5B,UAAM,kBAAkB,wBAAwB,QAAQ,GAAG,MAAM;AACjE,UAAM,SAAS,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC;AACrD,UAAM,eAAe,OAAO,CAAC,EAAE,SAAS;AACxC,QAAI,CAAC,cAAc;AACjB,YAAM,IAAI,MAAM,aAAa,MAAM,mBAAmB;AAAA,IACxD;AAAA,EACF;AAEA,MAAI,OAAO;AAET,eAAW,UAAU,SAAS;AAC5B,YAAM,WAAW,uBAAuB,EAAE,UAAU,QAAQ,QAAQ,GAAG,OAAO,CAAC;AAC/E,YAAM,GAAG,YAAY,CAAC,QAAQ,CAAC;AAAA,IACjC;AACA,UAAM,iBAAiB,IAAI,GAAG;AAG9B,QAAI,IAAI,KAAK,WAAW,SAAS,GAAG;AAClC,YAAM,GAAG,WAAW,EAAE,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAAA,IACjF;AAAA,EACF,OAAO;AAEL,QAAI;AACJ,QAAI;AACF,0BAAoB,MAAM,GAAG,WAAW,EAAE,QAAQ;AAAA,IACpD,SAAS,KAAK;AAEZ,UAAI,CAAC,sBAAsB,GAAG,GAAG;AAC/B,cAAM;AAAA,MACR;AAAA,IACF;AAEA,QAAI,qBAAqB,MAAM;AAE7B,YAAM,iBAAiB,IAAI,GAAG;AAG9B,UAAI,IAAI,KAAK,WAAW,SAAS,GAAG;AAClC,cAAM,GAAG,WAAW,EAAE,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAAA,MACjF;AAAA,IACF,OAAO;AAEL,YAAM,eAAe,IAAI,IAAI,kBAAkB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACjE,YAAM,oBAAoB,IAAI,KAAK,WAAW,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,IAAI,CAAC;AAErF,iBAAW,aAAa,mBAAmB;AACzC,cAAM,UAAU,GAAG,EAAE;AACrB,cAAM,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,UAAU,KAAK,CAAC,CAAC;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AACF;AAKA,eAAe,iBACb,IACA,KACe;AAEf,QAAM,WAAW,YAAY,GAAG;AAChC,QAAM,aAAyB,CAAC;AAChC,aAAW,WAAW,UAAU;AAC9B,eAAW,KAAK,wBAAwB,IAAI,OAAO,CAAC;AAAA,EACtD;AACA,MAAI,WAAW,SAAS,GAAG;AACzB,UAAM,GAAG,YAAY,UAAU;AAAA,EACjC;AAGA,QAAM,SAAS,SAAS,OAAO,CAAC,MAAM,aAAa,YAAY;AAC/D,QAAM,YAAwB,CAAC;AAC/B,aAAW,SAAS,QAAQ;AAC1B,UAAM,YAAY,MAAM,KAAK;AAC7B,QAAI,aAAa,KAAM;AAEvB,UAAM,WAAW,GAAG,sBAAsB,KAAK;AAC/C,eAAW,CAAC,cAAc,WAAW,KAAK,OAAO,QAAQ,SAAS,GAAG;AACnE,UAAI,EAAE,uBAAuB,mBAAoB;AAEjD,gBAAU,KAAK,yBAAyB,IAAI,UAAU,cAAc,WAAW,CAAC;AAAA,IAClF;AAAA,EACF;AACA,MAAI,UAAU,SAAS,GAAG;AACxB,UAAM,GAAG,YAAY,SAAS;AAAA,EAChC;AAGA,QAAM,kBAA8B,CAAC;AACrC,aAAW,SAAS,QAAQ;AAC1B,UAAM,UAAU,MAAM,KAAK;AAC3B,QAAI,WAAW,QAAQ,QAAQ,WAAW,EAAG;AAE7C,UAAM,gBAAgB,GAAG,sBAAsB,KAAK;AACpD,eAAW,gBAAgB,SAAS;AAClC,sBAAgB,KAAK,oBAAoB,eAAe,YAAY,CAAC;AAAA,IACvE;AAAA,EACF;AACA,MAAI,gBAAgB,SAAS,GAAG;AAC9B,UAAM,GAAG,YAAY,eAAe;AAAA,EACtC;AACF;AAKA,SAAS,YACP,KACsF;AACtF,QAAM,WAIA,CAAC;AAGP,QAAM,SAAmC,OAAO,OAAO,IAAI,KAAK,MAAM;AACtE,aAAW,SAAS,QAAQ;AAC1B,aAAS,KAAK,KAAK;AAAA,EACrB;AAGA,QAAM,QAAsC,OAAO,OAAO,IAAI,KAAK,KAAK;AACxE,aAAW,QAAQ,OAAO;AACxB,aAAS,KAAK,IAAI;AAAA,EACpB;AAGA,QAAM,QAAsC,OAAO,OAAO,IAAI,KAAK,UAAU;AAC7E,aAAW,QAAQ,OAAO;AACxB,aAAS,KAAK,IAAI;AAAA,EACpB;AAEA,SAAO;AACT;AAMO,SAAS,kBAAkB,KAAwC;AA/L1E;AAgME,QAAM,WAAW,YAAY,GAAG;AAChC,QAAM,SAAS,SAAS,OAAO,CAAC,MAAM,aAAa,YAAY;AAE/D,aAAW,SAAS,QAAQ;AAC1B,UAAM,YAAY,MAAM,KAAK;AAC7B,QAAI,aAAa,KAAM;AAEvB,eAAW,CAAC,SAAS,MAAM,KAAK,OAAO,QAAQ,SAAS,GAAG;AACzD,UACE,EAAE,kBAAkB,4BACpB,EAAE,kBAAkB,2BACpB;AACA;AAAA,MACF;AAEA,YAAM,cAAc,OAAO,KAAK,cAAc;AAC9C,YAAM,YAAY,OAAO,KAAK;AAC9B,YAAM,SAAQ,iBAAY,KAAK,cAAjB,mBAA6B;AAE3C,UAAI,EAAE,iBAAiB,sBAAsB,EAAE,iBAAiB,qBAAqB;AACnF,cAAM,IAAI;AAAA,UACR,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/ddl/table-ddl.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { ProcedureBuilder } from "../schema/procedure-builder";
|
|
|
4
4
|
import type { QueryDef, QueryDefObjectName, DropTableQueryDef, RenameTableQueryDef, DropViewQueryDef, DropProcQueryDef } from "../types/query-def";
|
|
5
5
|
import type { DbContextBase } from "../types/db-context-def";
|
|
6
6
|
/**
|
|
7
|
-
* Builder
|
|
7
|
+
* Transform Builder to CREATE QueryDef
|
|
8
8
|
*
|
|
9
9
|
* @param db - DbContext instance
|
|
10
10
|
* @param builder - Table/View/Procedure builder
|
package/dist/exec/queryable.d.ts
CHANGED
|
@@ -190,21 +190,21 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
190
190
|
*
|
|
191
191
|
* @param fn - function returning columns to sort by
|
|
192
192
|
* @param orderBy - Sort direction (ASC/DESC). Default: ASC
|
|
193
|
-
* @returns sorting
|
|
193
|
+
* @returns Queryable with sorting conditions added
|
|
194
194
|
*
|
|
195
195
|
* @example
|
|
196
196
|
* ```typescript
|
|
197
197
|
* db.user
|
|
198
|
-
* .orderBy((u) => u.name) //
|
|
199
|
-
* .orderBy((u) => u.age, "DESC") //
|
|
198
|
+
* .orderBy((u) => u.name) // name ASC
|
|
199
|
+
* .orderBy((u) => u.age, "DESC") // age DESC
|
|
200
200
|
* ```
|
|
201
201
|
*/
|
|
202
202
|
orderBy(fn: (columns: QueryableRecord<TData>) => ExprUnit<ColumnPrimitive>, orderBy?: "ASC" | "DESC"): Queryable<TData, TFrom>;
|
|
203
203
|
/**
|
|
204
|
-
* WHERE condition
|
|
204
|
+
* Add WHERE condition. Multiple calls are combined with AND.
|
|
205
205
|
*
|
|
206
|
-
* @param predicate -
|
|
207
|
-
* @returns
|
|
206
|
+
* @param predicate - Function returning an array of conditions
|
|
207
|
+
* @returns Queryable with conditions added
|
|
208
208
|
*
|
|
209
209
|
* @example
|
|
210
210
|
* ```typescript
|
|
@@ -215,28 +215,28 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
215
215
|
*/
|
|
216
216
|
where(predicate: (columns: QueryableRecord<TData>) => WhereExprUnit[]): Queryable<TData, TFrom>;
|
|
217
217
|
/**
|
|
218
|
-
*
|
|
218
|
+
* Perform text search
|
|
219
219
|
*
|
|
220
|
-
*
|
|
221
|
-
* -
|
|
222
|
-
* -
|
|
223
|
-
* -
|
|
220
|
+
* See {@link parseSearchQuery} for search syntax
|
|
221
|
+
* - Space-separated words are OR conditions
|
|
222
|
+
* - Words starting with `+` are required includes (AND condition)
|
|
223
|
+
* - Words starting with `-` are excludes (NOT condition)
|
|
224
224
|
*
|
|
225
|
-
* @param fn -
|
|
226
|
-
* @param searchText -
|
|
227
|
-
* @returns
|
|
225
|
+
* @param fn - Function returning target columns to search
|
|
226
|
+
* @param searchText - Search text
|
|
227
|
+
* @returns Queryable with search conditions added
|
|
228
228
|
*
|
|
229
229
|
* @example
|
|
230
230
|
* ```typescript
|
|
231
231
|
* db.user()
|
|
232
|
-
* .search((u) => [u.name, u.email], "
|
|
232
|
+
* .search((u) => [u.name, u.email], "John Doe -withdrawn")
|
|
233
233
|
* ```
|
|
234
234
|
*/
|
|
235
235
|
search(fn: (columns: QueryableRecord<TData>) => ExprUnit<string | undefined>[], searchText: string): Queryable<TData, TFrom>;
|
|
236
236
|
/**
|
|
237
|
-
* GROUP BY
|
|
237
|
+
* Add GROUP BY clause
|
|
238
238
|
*
|
|
239
|
-
* @param fn -
|
|
239
|
+
* @param fn - Function returning columns to group by
|
|
240
240
|
* @returns Queryable with GROUP BY applied
|
|
241
241
|
*
|
|
242
242
|
* @example
|
|
@@ -251,10 +251,10 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
251
251
|
*/
|
|
252
252
|
groupBy(fn: (columns: QueryableRecord<TData>) => ExprUnit<ColumnPrimitive>[]): Queryable<TData, never>;
|
|
253
253
|
/**
|
|
254
|
-
* HAVING
|
|
254
|
+
* Add HAVING clause (filtering after GROUP BY)
|
|
255
255
|
*
|
|
256
|
-
* @param predicate -
|
|
257
|
-
* @returns HAVING
|
|
256
|
+
* @param predicate - Function returning an array of conditions
|
|
257
|
+
* @returns Queryable with HAVING applied
|
|
258
258
|
*
|
|
259
259
|
* @example
|
|
260
260
|
* ```typescript
|
|
@@ -269,11 +269,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
269
269
|
*/
|
|
270
270
|
having(predicate: (columns: QueryableRecord<TData>) => WhereExprUnit[]): Queryable<TData, never>;
|
|
271
271
|
/**
|
|
272
|
-
*
|
|
272
|
+
* Perform LEFT OUTER JOIN for 1:N relation (added as array to result)
|
|
273
273
|
*
|
|
274
|
-
* @param as -
|
|
275
|
-
* @param fn -
|
|
276
|
-
* @returns join
|
|
274
|
+
* @param as - Property name to add to result
|
|
275
|
+
* @param fn - Callback function defining join conditions
|
|
276
|
+
* @returns Queryable with join result added as array
|
|
277
277
|
*
|
|
278
278
|
* @example
|
|
279
279
|
* ```typescript
|
|
@@ -289,11 +289,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
289
289
|
[K in A]?: R[];
|
|
290
290
|
}, TFrom>;
|
|
291
291
|
/**
|
|
292
|
-
* N:1
|
|
292
|
+
* Perform LEFT OUTER JOIN for N:1 or 1:1 relation (added as single object to result)
|
|
293
293
|
*
|
|
294
|
-
* @param as -
|
|
295
|
-
* @param fn -
|
|
296
|
-
* @returns join
|
|
294
|
+
* @param as - Property name to add to result
|
|
295
|
+
* @param fn - Callback function defining join conditions
|
|
296
|
+
* @returns Queryable with join result added as single object
|
|
297
297
|
*
|
|
298
298
|
* @example
|
|
299
299
|
* ```typescript
|
|
@@ -311,22 +311,22 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
311
311
|
[K in A]?: R;
|
|
312
312
|
}, TFrom>;
|
|
313
313
|
/**
|
|
314
|
-
*
|
|
315
|
-
*
|
|
314
|
+
* Automatically JOIN related tables.
|
|
315
|
+
* Operates based on FK/FKT relations defined in TableBuilder.
|
|
316
316
|
*
|
|
317
|
-
* @param fn -
|
|
318
|
-
* @returns
|
|
319
|
-
* @throws
|
|
317
|
+
* @param fn - Function selecting relations to include (type-checked via PathProxy)
|
|
318
|
+
* @returns Queryable with JOINs added
|
|
319
|
+
* @throws Error if relation is not defined
|
|
320
320
|
*
|
|
321
321
|
* @example
|
|
322
322
|
* ```typescript
|
|
323
|
-
* //
|
|
323
|
+
* // Single relationship include
|
|
324
324
|
* db.post.include((p) => p.user)
|
|
325
325
|
*
|
|
326
|
-
* //
|
|
326
|
+
* // Nested relationship include
|
|
327
327
|
* db.post.include((p) => p.user.company)
|
|
328
328
|
*
|
|
329
|
-
* //
|
|
329
|
+
* // Multiple relationship include
|
|
330
330
|
* db.user
|
|
331
331
|
* .include((u) => u.company)
|
|
332
332
|
* .include((u) => u.posts)
|
|
@@ -335,15 +335,15 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
335
335
|
include(fn: (item: PathProxy<TData>) => PathProxy<any>): Queryable<TData, TFrom>;
|
|
336
336
|
private _include;
|
|
337
337
|
/**
|
|
338
|
-
*
|
|
338
|
+
* Wrap the current Queryable as a Subquery
|
|
339
339
|
*
|
|
340
|
-
*
|
|
340
|
+
* Required when using count() after distinct() or groupBy()
|
|
341
341
|
*
|
|
342
|
-
* @returns
|
|
342
|
+
* @returns Queryable wrapped as a Subquery
|
|
343
343
|
*
|
|
344
344
|
* @example
|
|
345
345
|
* ```typescript
|
|
346
|
-
* //
|
|
346
|
+
* // Count after DISTINCT
|
|
347
347
|
* const count = await db.user()
|
|
348
348
|
* .select((u) => ({ name: u.name }))
|
|
349
349
|
* .distinct()
|
|
@@ -369,18 +369,18 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
369
369
|
*/
|
|
370
370
|
static union<TData extends DataRecord>(...queries: Queryable<TData, any>[]): Queryable<TData, never>;
|
|
371
371
|
/**
|
|
372
|
-
* recursive CTE(Common Table Expression)
|
|
372
|
+
* Generate a recursive CTE (Common Table Expression)
|
|
373
373
|
*
|
|
374
|
-
*
|
|
374
|
+
* Used for querying hierarchical data (org charts, category trees, etc.)
|
|
375
375
|
*
|
|
376
|
-
* @param fn -
|
|
377
|
-
* @returns recursive CTE
|
|
376
|
+
* @param fn - Callback function that defines the recursive part
|
|
377
|
+
* @returns Queryable with the recursive CTE applied
|
|
378
378
|
*
|
|
379
379
|
* @example
|
|
380
380
|
* ```typescript
|
|
381
|
-
* //
|
|
381
|
+
* // Query org chart hierarchy
|
|
382
382
|
* db.employee()
|
|
383
|
-
* .where((e) => [expr.null(e.managerId)]) //
|
|
383
|
+
* .where((e) => [expr.null(e.managerId)]) // Root nodes
|
|
384
384
|
* .recursive((cte) =>
|
|
385
385
|
* cte.from(Employee)
|
|
386
386
|
* .where((e) => [expr.eq(e.managerId, e.self[0].id)])
|
|
@@ -389,7 +389,7 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
389
389
|
*/
|
|
390
390
|
recursive(fn: (qr: RecursiveQueryable<TData>) => Queryable<TData, any>): Queryable<TData, never>;
|
|
391
391
|
/**
|
|
392
|
-
* SELECT query
|
|
392
|
+
* Execute a SELECT query and return the result array
|
|
393
393
|
*
|
|
394
394
|
* @returns Query result array
|
|
395
395
|
*
|
|
@@ -402,10 +402,10 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
402
402
|
*/
|
|
403
403
|
execute(): Promise<TData[]>;
|
|
404
404
|
/**
|
|
405
|
-
*
|
|
405
|
+
* Return a single result (Error if more than 1)
|
|
406
406
|
*
|
|
407
|
-
* @returns
|
|
408
|
-
* @throws
|
|
407
|
+
* @returns Single result or undefined
|
|
408
|
+
* @throws When more than one result is returned
|
|
409
409
|
*
|
|
410
410
|
* @example
|
|
411
411
|
* ```typescript
|
|
@@ -416,13 +416,13 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
416
416
|
*/
|
|
417
417
|
single(): Promise<TData | undefined>;
|
|
418
418
|
/**
|
|
419
|
-
* query
|
|
419
|
+
* Return query source name (for error messages)
|
|
420
420
|
*/
|
|
421
421
|
private _getSourceName;
|
|
422
422
|
/**
|
|
423
|
-
*
|
|
423
|
+
* Return the first result (only the first even if multiple exist)
|
|
424
424
|
*
|
|
425
|
-
* @returns
|
|
425
|
+
* @returns First result or undefined
|
|
426
426
|
*
|
|
427
427
|
* @example
|
|
428
428
|
* ```typescript
|
|
@@ -433,11 +433,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
433
433
|
*/
|
|
434
434
|
first(): Promise<TData | undefined>;
|
|
435
435
|
/**
|
|
436
|
-
*
|
|
436
|
+
* Return the number of result rows
|
|
437
437
|
*
|
|
438
|
-
* @param fn -
|
|
439
|
-
* @returns
|
|
440
|
-
* @throws distinct()
|
|
438
|
+
* @param fn - Function to specify the column to count (optional)
|
|
439
|
+
* @returns Number of rows
|
|
440
|
+
* @throws Error when called directly after distinct() or groupBy() (use wrap() first)
|
|
441
441
|
*
|
|
442
442
|
* @example
|
|
443
443
|
* ```typescript
|
|
@@ -448,9 +448,9 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
448
448
|
*/
|
|
449
449
|
count(fn?: (cols: QueryableRecord<TData>) => ExprUnit<ColumnPrimitive>): Promise<number>;
|
|
450
450
|
/**
|
|
451
|
-
*
|
|
451
|
+
* Check whether data matching the conditions exists
|
|
452
452
|
*
|
|
453
|
-
* @returns
|
|
453
|
+
* @returns true if exists, false otherwise
|
|
454
454
|
*
|
|
455
455
|
* @example
|
|
456
456
|
* ```typescript
|
|
@@ -466,22 +466,22 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
466
466
|
private _buildJoinDefs;
|
|
467
467
|
getResultMeta(outputColumns?: string[]): ResultMeta;
|
|
468
468
|
/**
|
|
469
|
-
* INSERT query
|
|
469
|
+
* Execute an INSERT query
|
|
470
470
|
*
|
|
471
|
-
*
|
|
471
|
+
* Automatically splits into chunks of 1000 for MSSQL's row limit
|
|
472
472
|
*
|
|
473
|
-
* @param records -
|
|
474
|
-
* @param outputColumns -
|
|
475
|
-
* @returns outputColumns
|
|
473
|
+
* @param records - Array of records to insert
|
|
474
|
+
* @param outputColumns - Column name array to receive (optional)
|
|
475
|
+
* @returns When outputColumns specified, returns array of inserted records
|
|
476
476
|
*
|
|
477
477
|
* @example
|
|
478
478
|
* ```typescript
|
|
479
|
-
* //
|
|
479
|
+
* // Simple insert
|
|
480
480
|
* await db.user().insert([
|
|
481
481
|
* { name: "Gildong Hong", email: "hong@test.com" },
|
|
482
482
|
* ]);
|
|
483
483
|
*
|
|
484
|
-
* //
|
|
484
|
+
* // Return ID after insert
|
|
485
485
|
* const [inserted] = await db.user().insert(
|
|
486
486
|
* [{ name: "Gildong Hong" }],
|
|
487
487
|
* ["id"],
|
|
@@ -491,11 +491,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
491
491
|
insert(records: TFrom["$inferInsert"][]): Promise<void>;
|
|
492
492
|
insert<K extends keyof TFrom["$inferColumns"] & string>(records: TFrom["$inferInsert"][], outputColumns: K[]): Promise<Pick<TFrom["$inferColumns"], K>[]>;
|
|
493
493
|
/**
|
|
494
|
-
*
|
|
494
|
+
* INSERT if no data matches the WHERE condition
|
|
495
495
|
*
|
|
496
|
-
* @param record -
|
|
497
|
-
* @param outputColumns -
|
|
498
|
-
* @returns outputColumns
|
|
496
|
+
* @param record - Record to insert
|
|
497
|
+
* @param outputColumns - Column name array to receive (optional)
|
|
498
|
+
* @returns When outputColumns specified, returns the inserted record
|
|
499
499
|
*
|
|
500
500
|
* @example
|
|
501
501
|
* ```typescript
|
|
@@ -507,11 +507,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
507
507
|
insertIfNotExists(record: TFrom["$inferInsert"]): Promise<void>;
|
|
508
508
|
insertIfNotExists<K extends keyof TFrom["$inferColumns"] & string>(record: TFrom["$inferInsert"], outputColumns: K[]): Promise<Pick<TFrom["$inferColumns"], K>>;
|
|
509
509
|
/**
|
|
510
|
-
* INSERT INTO ... SELECT (
|
|
510
|
+
* INSERT INTO ... SELECT (INSERT the current SELECT results into another Table)
|
|
511
511
|
*
|
|
512
|
-
* @param targetTable -
|
|
513
|
-
* @param outputColumns -
|
|
514
|
-
* @returns outputColumns
|
|
512
|
+
* @param targetTable - Target Table to insert into
|
|
513
|
+
* @param outputColumns - Column name array to receive (optional)
|
|
514
|
+
* @returns When outputColumns specified, returns array of inserted records
|
|
515
515
|
*
|
|
516
516
|
* @example
|
|
517
517
|
* ```typescript
|
|
@@ -527,15 +527,15 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
527
527
|
getInsertIfNotExistsQueryDef(record: TFrom["$inferInsert"], outputColumns?: (keyof TFrom["$inferColumns"] & string)[]): InsertIfNotExistsQueryDef;
|
|
528
528
|
getInsertIntoQueryDef<TTable extends TableBuilder<DataToColumnBuilderRecord<TData>, any>>(targetTable: TTable, outputColumns?: (keyof TTable["$inferColumns"] & string)[]): InsertIntoQueryDef;
|
|
529
529
|
/**
|
|
530
|
-
* UPDATE query
|
|
530
|
+
* Execute an UPDATE query
|
|
531
531
|
*
|
|
532
|
-
* @param recordFwd -
|
|
533
|
-
* @param outputColumns -
|
|
534
|
-
* @returns outputColumns
|
|
532
|
+
* @param recordFwd - Function that returns the columns and values to update
|
|
533
|
+
* @param outputColumns - Column name array to receive (optional)
|
|
534
|
+
* @returns When outputColumns specified, returns array of updated records
|
|
535
535
|
*
|
|
536
536
|
* @example
|
|
537
537
|
* ```typescript
|
|
538
|
-
* //
|
|
538
|
+
* // Simple update
|
|
539
539
|
* await db.user()
|
|
540
540
|
* .where((u) => [expr.eq(u.id, 1)])
|
|
541
541
|
* .update((u) => ({
|
|
@@ -543,7 +543,7 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
543
543
|
* updatedAt: expr.val("DateTime", DateTime.now()),
|
|
544
544
|
* }));
|
|
545
545
|
*
|
|
546
|
-
* //
|
|
546
|
+
* // Reference existing value
|
|
547
547
|
* await db.product()
|
|
548
548
|
* .update((p) => ({
|
|
549
549
|
* price: expr.mul(p.price, expr.val("number", 1.1)),
|
|
@@ -553,19 +553,19 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
553
553
|
update(recordFwd: (cols: QueryableRecord<TData>) => QueryableWriteRecord<TFrom["$inferUpdate"]>): Promise<void>;
|
|
554
554
|
update<K extends keyof TFrom["$columns"] & string>(recordFwd: (cols: QueryableRecord<TData>) => QueryableWriteRecord<TFrom["$inferUpdate"]>, outputColumns: K[]): Promise<Pick<TFrom["$columns"], K>[]>;
|
|
555
555
|
/**
|
|
556
|
-
* DELETE query
|
|
556
|
+
* Execute a DELETE query
|
|
557
557
|
*
|
|
558
|
-
* @param outputColumns -
|
|
559
|
-
* @returns outputColumns
|
|
558
|
+
* @param outputColumns - Column name array to receive (optional)
|
|
559
|
+
* @returns When outputColumns specified, returns array of deleted records
|
|
560
560
|
*
|
|
561
561
|
* @example
|
|
562
562
|
* ```typescript
|
|
563
|
-
* //
|
|
563
|
+
* // Simple delete
|
|
564
564
|
* await db.user()
|
|
565
565
|
* .where((u) => [expr.eq(u.id, 1)])
|
|
566
566
|
* .delete();
|
|
567
567
|
*
|
|
568
|
-
* //
|
|
568
|
+
* // Return deleted data
|
|
569
569
|
* const deleted = await db.user()
|
|
570
570
|
* .where((u) => [expr.eq(u.isExpired, true)])
|
|
571
571
|
* .delete(["id", "name"]);
|
|
@@ -576,18 +576,18 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
576
576
|
getUpdateQueryDef(recordFwd: (cols: QueryableRecord<TData>) => QueryableWriteRecord<TFrom["$inferUpdate"]>, outputColumns?: (keyof TFrom["$inferColumns"] & string)[]): UpdateQueryDef;
|
|
577
577
|
getDeleteQueryDef(outputColumns?: (keyof TFrom["$inferColumns"] & string)[]): DeleteQueryDef;
|
|
578
578
|
/**
|
|
579
|
-
* UPSERT (UPDATE or INSERT) query
|
|
579
|
+
* Execute an UPSERT (UPDATE or INSERT) query
|
|
580
580
|
*
|
|
581
|
-
*
|
|
581
|
+
* UPDATE if data matching the WHERE condition exists, otherwise INSERT
|
|
582
582
|
*
|
|
583
|
-
* @param updateFn -
|
|
584
|
-
* @param insertFn -
|
|
585
|
-
* @param outputColumns -
|
|
586
|
-
* @returns outputColumns
|
|
583
|
+
* @param updateFn - Function that returns the columns and values to update
|
|
584
|
+
* @param insertFn - Function that returns the record to insert (optional, defaults to same as updateFn)
|
|
585
|
+
* @param outputColumns - Column name array to receive (optional)
|
|
586
|
+
* @returns When outputColumns specified, returns array of affected records
|
|
587
587
|
*
|
|
588
588
|
* @example
|
|
589
589
|
* ```typescript
|
|
590
|
-
* // UPDATE/INSERT
|
|
590
|
+
* // Same data for UPDATE/INSERT
|
|
591
591
|
* await db.user()
|
|
592
592
|
* .where((u) => [expr.eq(u.email, "test@test.com")])
|
|
593
593
|
* .upsert(() => ({
|
|
@@ -595,7 +595,7 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
595
595
|
* email: expr.val("string", "test@test.com"),
|
|
596
596
|
* }));
|
|
597
597
|
*
|
|
598
|
-
* // UPDATE/INSERT
|
|
598
|
+
* // Different data for UPDATE/INSERT
|
|
599
599
|
* await db.user()
|
|
600
600
|
* .where((u) => [expr.eq(u.email, "test@test.com")])
|
|
601
601
|
* .upsert(
|
|
@@ -610,18 +610,18 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
610
610
|
upsert<U extends QueryableWriteRecord<TFrom["$inferUpdate"]>, K extends keyof TFrom["$inferColumns"] & string>(updateFn: (cols: QueryableRecord<TData>) => U, insertFn: (updateRecord: U) => QueryableWriteRecord<TFrom["$inferInsert"]>, outputColumns?: K[]): Promise<Pick<TFrom["$inferColumns"], K>[]>;
|
|
611
611
|
getUpsertQueryDef<U extends QueryableWriteRecord<TFrom["$inferUpdate"]>>(updateRecordFn: (cols: QueryableRecord<TData>) => U, insertRecordFn: (updateRecord: U) => QueryableWriteRecord<TFrom["$inferInsert"]>, outputColumns?: (keyof TFrom["$inferColumns"] & string)[]): UpsertQueryDef;
|
|
612
612
|
/**
|
|
613
|
-
* FK constraint on/off (
|
|
613
|
+
* FK constraint on/off (can be used within a transaction)
|
|
614
614
|
*/
|
|
615
615
|
switchFk(enabled: boolean): Promise<void>;
|
|
616
616
|
private _getCudOutputDef;
|
|
617
617
|
}
|
|
618
618
|
/**
|
|
619
|
-
* FK column
|
|
619
|
+
* Match FK column array with the target Table's PK and return PK column name array
|
|
620
620
|
*
|
|
621
|
-
* @param fkCols - FK column
|
|
622
|
-
* @param targetTable -
|
|
623
|
-
* @returns
|
|
624
|
-
* @throws FK/PK column
|
|
621
|
+
* @param fkCols - FK column name array
|
|
622
|
+
* @param targetTable - Target Table builder being referenced
|
|
623
|
+
* @returns Matched PK column name array
|
|
624
|
+
* @throws When FK/PK column count mismatch
|
|
625
625
|
*/
|
|
626
626
|
export declare function getMatchedPrimaryKeys(fkCols: string[], targetTable: TableBuilder<any, any>): string[];
|
|
627
627
|
interface QueryableMeta<TData extends DataRecord> {
|
|
@@ -659,33 +659,33 @@ export type NullableQueryableRecord<TData extends DataRecord> = {
|
|
|
659
659
|
[K in keyof TData]: TData[K] extends ColumnPrimitive ? ExprUnit<TData[K] | undefined> : TData[K] extends (infer U)[] ? U extends DataRecord ? NullableQueryableRecord<U>[] : never : TData[K] extends (infer U)[] | undefined ? U extends DataRecord ? NullableQueryableRecord<U>[] | undefined : never : TData[K] extends DataRecord ? NullableQueryableRecord<TData[K]> : TData[K] extends DataRecord | undefined ? NullableQueryableRecord<Exclude<TData[K], undefined>> | undefined : never;
|
|
660
660
|
};
|
|
661
661
|
/**
|
|
662
|
-
* QueryableRecord
|
|
662
|
+
* Reverse-transform from QueryableRecord to DataRecord
|
|
663
663
|
*
|
|
664
|
-
* ExprUnit<T
|
|
664
|
+
* Unwraps ExprUnit<T> to T, recursively unwrapping nested objects/arrays
|
|
665
665
|
*/
|
|
666
666
|
export type UnwrapQueryableRecord<R> = {
|
|
667
667
|
[K in keyof R]: R[K] extends ExprUnit<infer T> ? T : NonNullable<R[K]> extends (infer U)[] ? U extends Record<string, any> ? UnwrapQueryableRecord<U>[] | Extract<R[K], undefined> : never : NonNullable<R[K]> extends Record<string, any> ? UnwrapQueryableRecord<NonNullable<R[K]>> | Extract<R[K], undefined> : never;
|
|
668
668
|
};
|
|
669
669
|
/**
|
|
670
|
-
*
|
|
671
|
-
* ColumnPrimitive
|
|
670
|
+
* Proxy type for specifying relationship paths in include() in a type-safe manner
|
|
671
|
+
* Only non-ColumnPrimitive fields (FK, FKT relationships) are accessible
|
|
672
672
|
*
|
|
673
673
|
* @example
|
|
674
674
|
* ```typescript
|
|
675
|
-
* // item.user.company
|
|
675
|
+
* // Accessing item.user.company internally collects path ["user", "company"]
|
|
676
676
|
* db.post.include(item => item.user.company)
|
|
677
677
|
*
|
|
678
|
-
* // item.title
|
|
679
|
-
* db.post.include(item => item.title) //
|
|
678
|
+
* // item.title is string (ColumnPrimitive), so this is a compile error
|
|
679
|
+
* db.post.include(item => item.title) // compile error
|
|
680
680
|
* ```
|
|
681
681
|
*/
|
|
682
682
|
/**
|
|
683
|
-
*
|
|
683
|
+
* Extract element type if array
|
|
684
684
|
*/
|
|
685
685
|
type UnwrapArray<TArray> = TArray extends (infer TElement)[] ? TElement : TArray;
|
|
686
686
|
declare const PATH_SYMBOL: unique symbol;
|
|
687
687
|
/**
|
|
688
|
-
*
|
|
688
|
+
* Type-safe path proxy for include()
|
|
689
689
|
*/
|
|
690
690
|
export type PathProxy<TObject> = {
|
|
691
691
|
[K in keyof TObject as TObject[K] extends ColumnPrimitive ? never : K]-?: PathProxy<UnwrapArray<TObject[K]>>;
|
|
@@ -693,22 +693,22 @@ export type PathProxy<TObject> = {
|
|
|
693
693
|
readonly [PATH_SYMBOL]: string[];
|
|
694
694
|
};
|
|
695
695
|
/**
|
|
696
|
-
*
|
|
696
|
+
* Generate a Queryable factory function for a Table or View
|
|
697
697
|
*
|
|
698
|
-
*
|
|
698
|
+
* Used when defining per-Table/View getters in DbContext
|
|
699
699
|
*
|
|
700
700
|
* @param db - DbContext instance
|
|
701
|
-
* @param tableOrView - TableBuilder
|
|
702
|
-
* @param as -
|
|
703
|
-
* @returns
|
|
701
|
+
* @param tableOrView - TableBuilder or ViewBuilder instance
|
|
702
|
+
* @param as - Alias specification (optional, auto-created if not specified)
|
|
703
|
+
* @returns Factory function that returns a Queryable
|
|
704
704
|
*
|
|
705
705
|
* @example
|
|
706
706
|
* ```typescript
|
|
707
707
|
* class AppDbContext extends DbContext {
|
|
708
|
-
* //
|
|
708
|
+
* // A new alias is assigned on each call
|
|
709
709
|
* user = queryable(this, User);
|
|
710
710
|
*
|
|
711
|
-
* //
|
|
711
|
+
* // Usage example
|
|
712
712
|
* async getActiveUsers() {
|
|
713
713
|
* return this.user()
|
|
714
714
|
* .where((u) => [expr.eq(u.isActive, true)])
|