kysely 0.28.1 → 0.28.3
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/cjs/dialect/mssql/mssql-driver.d.ts +3 -2
- package/dist/cjs/dialect/mssql/mssql-driver.js +68 -57
- package/dist/cjs/dialect/postgres/postgres-introspector.js +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -1
- package/dist/cjs/dynamic/dynamic-table-builder.d.ts +16 -0
- package/dist/cjs/dynamic/dynamic-table-builder.js +46 -0
- package/dist/cjs/dynamic/dynamic.d.ts +36 -1
- package/dist/cjs/dynamic/dynamic.js +37 -0
- package/dist/cjs/helpers/mssql.d.ts +4 -4
- package/dist/cjs/helpers/mysql.d.ts +4 -4
- package/dist/cjs/helpers/postgres.d.ts +4 -4
- package/dist/cjs/helpers/sqlite.d.ts +4 -4
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/kysely.d.ts +5 -1
- package/dist/cjs/kysely.js +12 -6
- package/dist/cjs/migration/migrator.js +2 -1
- package/dist/cjs/parser/delete-from-parser.d.ts +5 -1
- package/dist/cjs/parser/merge-into-parser.d.ts +3 -1
- package/dist/cjs/parser/select-from-parser.d.ts +3 -1
- package/dist/cjs/parser/table-parser.d.ts +4 -3
- package/dist/cjs/parser/table-parser.js +4 -0
- package/dist/cjs/parser/update-parser.d.ts +5 -1
- package/dist/cjs/query-builder/delete-query-builder.js +2 -2
- package/dist/cjs/query-builder/function-module.d.ts +5 -5
- package/dist/cjs/query-builder/insert-query-builder.js +2 -2
- package/dist/cjs/query-builder/merge-query-builder.js +1 -1
- package/dist/cjs/query-builder/order-by-interface.d.ts +0 -18
- package/dist/cjs/query-builder/select-query-builder.d.ts +0 -18
- package/dist/cjs/query-builder/select-query-builder.js +2 -2
- package/dist/cjs/query-builder/update-query-builder.js +2 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +1 -4
- package/dist/cjs/query-executor/query-executor-base.d.ts +2 -2
- package/dist/cjs/query-executor/query-executor-base.js +4 -4
- package/dist/cjs/query-executor/query-executor.d.ts +2 -2
- package/dist/cjs/raw-builder/raw-builder.js +1 -1
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +1 -1
- package/dist/cjs/schema/alter-table-add-index-builder.js +1 -1
- package/dist/cjs/schema/alter-table-builder.js +1 -1
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +1 -1
- package/dist/cjs/schema/alter-table-executor.js +1 -1
- package/dist/cjs/schema/create-index-builder.js +1 -1
- package/dist/cjs/schema/create-schema-builder.js +1 -1
- package/dist/cjs/schema/create-table-builder.js +1 -1
- package/dist/cjs/schema/create-type-builder.js +1 -1
- package/dist/cjs/schema/create-view-builder.js +1 -1
- package/dist/cjs/schema/drop-index-builder.js +1 -1
- package/dist/cjs/schema/drop-schema-builder.js +1 -1
- package/dist/cjs/schema/drop-table-builder.js +1 -1
- package/dist/cjs/schema/drop-type-builder.js +1 -1
- package/dist/cjs/schema/drop-view-builder.js +1 -1
- package/dist/cjs/schema/refresh-materialized-view-builder.js +1 -1
- package/dist/cjs/util/type-utils.d.ts +17 -0
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +3 -2
- package/dist/esm/dialect/mssql/mssql-driver.js +68 -57
- package/dist/esm/dialect/postgres/postgres-introspector.js +2 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -1
- package/dist/esm/dynamic/dynamic-table-builder.d.ts +16 -0
- package/dist/esm/dynamic/dynamic-table-builder.js +41 -0
- package/dist/esm/dynamic/dynamic.d.ts +36 -1
- package/dist/esm/dynamic/dynamic.js +37 -0
- package/dist/esm/helpers/mssql.d.ts +4 -4
- package/dist/esm/helpers/mysql.d.ts +4 -4
- package/dist/esm/helpers/postgres.d.ts +4 -4
- package/dist/esm/helpers/sqlite.d.ts +4 -4
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/kysely.d.ts +5 -1
- package/dist/esm/kysely.js +12 -6
- package/dist/esm/migration/migrator.js +3 -2
- package/dist/esm/parser/delete-from-parser.d.ts +5 -1
- package/dist/esm/parser/merge-into-parser.d.ts +3 -1
- package/dist/esm/parser/select-from-parser.d.ts +3 -1
- package/dist/esm/parser/table-parser.d.ts +4 -3
- package/dist/esm/parser/table-parser.js +4 -0
- package/dist/esm/parser/update-parser.d.ts +5 -1
- package/dist/esm/query-builder/delete-query-builder.js +2 -2
- package/dist/esm/query-builder/function-module.d.ts +5 -5
- package/dist/esm/query-builder/insert-query-builder.js +2 -2
- package/dist/esm/query-builder/merge-query-builder.js +1 -1
- package/dist/esm/query-builder/order-by-interface.d.ts +0 -18
- package/dist/esm/query-builder/select-query-builder.d.ts +0 -18
- package/dist/esm/query-builder/select-query-builder.js +2 -2
- package/dist/esm/query-builder/update-query-builder.js +2 -2
- package/dist/esm/query-compiler/default-query-compiler.js +1 -4
- package/dist/esm/query-executor/query-executor-base.d.ts +2 -2
- package/dist/esm/query-executor/query-executor-base.js +4 -4
- package/dist/esm/query-executor/query-executor.d.ts +2 -2
- package/dist/esm/raw-builder/raw-builder.js +1 -1
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +1 -1
- package/dist/esm/schema/alter-table-add-index-builder.js +1 -1
- package/dist/esm/schema/alter-table-builder.js +1 -1
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +1 -1
- package/dist/esm/schema/alter-table-executor.js +1 -1
- package/dist/esm/schema/create-index-builder.js +1 -1
- package/dist/esm/schema/create-schema-builder.js +1 -1
- package/dist/esm/schema/create-table-builder.js +1 -1
- package/dist/esm/schema/create-type-builder.js +1 -1
- package/dist/esm/schema/create-view-builder.js +1 -1
- package/dist/esm/schema/drop-index-builder.js +1 -1
- package/dist/esm/schema/drop-schema-builder.js +1 -1
- package/dist/esm/schema/drop-table-builder.js +1 -1
- package/dist/esm/schema/drop-type-builder.js +1 -1
- package/dist/esm/schema/drop-view-builder.js +1 -1
- package/dist/esm/schema/refresh-materialized-view-builder.js +1 -1
- package/dist/esm/util/type-utils.d.ts +17 -0
- package/package.json +36 -33
- package/.renovaterc.json +0 -3
- package/CODE_OF_CONDUCT.md +0 -183
- package/FUNDING.md +0 -25
- package/deno.check.d.ts +0 -93
- package/deno.check.json +0 -21
|
@@ -4,7 +4,8 @@ import { AliasedExpressionOrFactory } from './expression-parser.js';
|
|
|
4
4
|
import { OperationNode } from '../operation-node/operation-node.js';
|
|
5
5
|
import { AliasedExpression } from '../expression/expression.js';
|
|
6
6
|
import { DrainOuterGeneric } from '../util/type-utils.js';
|
|
7
|
-
|
|
7
|
+
import { AliasedDynamicTableBuilder } from '../dynamic/dynamic-table-builder.js';
|
|
8
|
+
export type TableExpression<DB, TB extends keyof DB> = AnyAliasedTable<DB> | AnyTable<DB> | AliasedExpressionOrFactory<DB, TB> | AliasedDynamicTableBuilder<any, any>;
|
|
8
9
|
export type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
|
|
9
10
|
export type SimpleTableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB>;
|
|
10
11
|
export type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
|
|
@@ -14,8 +15,8 @@ export type From<DB, TE> = DrainOuterGeneric<{
|
|
|
14
15
|
}>;
|
|
15
16
|
export type FromTables<DB, TB extends keyof DB, TE> = DrainOuterGeneric<TB | ExtractAliasFromTableExpression<DB, TE>>;
|
|
16
17
|
export type ExtractTableAlias<DB, TE> = TE extends `${string} as ${infer TA}` ? TA extends keyof DB ? TA : never : TE extends keyof DB ? TE : never;
|
|
17
|
-
type ExtractAliasFromTableExpression<DB, TE> = TE extends string ? TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : never : TE extends AliasedExpression<any, infer QA> ? QA : TE extends (qb: any) => AliasedExpression<any, infer QA> ? QA : never;
|
|
18
|
-
type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : never;
|
|
18
|
+
type ExtractAliasFromTableExpression<DB, TE> = TE extends string ? TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : never : TE extends AliasedExpression<any, infer QA> ? QA : TE extends (qb: any) => AliasedExpression<any, infer QA> ? QA : TE extends AliasedDynamicTableBuilder<any, infer DA> ? DA : never;
|
|
19
|
+
type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : TE extends AliasedDynamicTableBuilder<infer T, infer DA> ? DA extends A ? T extends keyof DB ? DB[T] : never : never : never;
|
|
19
20
|
export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): OperationNode[];
|
|
20
21
|
export declare function parseTableExpression(table: TableExpression<any, any>): OperationNode;
|
|
21
22
|
export declare function parseAliasedTable(from: string): TableNode | AliasNode;
|
|
@@ -9,6 +9,7 @@ const alias_node_js_1 = require("../operation-node/alias-node.js");
|
|
|
9
9
|
const table_node_js_1 = require("../operation-node/table-node.js");
|
|
10
10
|
const expression_parser_js_1 = require("./expression-parser.js");
|
|
11
11
|
const identifier_node_js_1 = require("../operation-node/identifier-node.js");
|
|
12
|
+
const dynamic_table_builder_js_1 = require("../dynamic/dynamic-table-builder.js");
|
|
12
13
|
function parseTableExpressionOrList(table) {
|
|
13
14
|
if ((0, object_utils_js_1.isReadonlyArray)(table)) {
|
|
14
15
|
return table.map((it) => parseTableExpression(it));
|
|
@@ -21,6 +22,9 @@ function parseTableExpression(table) {
|
|
|
21
22
|
if ((0, object_utils_js_1.isString)(table)) {
|
|
22
23
|
return parseAliasedTable(table);
|
|
23
24
|
}
|
|
25
|
+
else if ((0, dynamic_table_builder_js_1.isAliasedDynamicTableBuilder)(table)) {
|
|
26
|
+
return table.toOperationNode();
|
|
27
|
+
}
|
|
24
28
|
else {
|
|
25
29
|
return (0, expression_parser_js_1.parseAliasedExpression)(table);
|
|
26
30
|
}
|
|
@@ -2,4 +2,8 @@ import type { UpdateQueryBuilder } from '../query-builder/update-query-builder.j
|
|
|
2
2
|
import type { UpdateResult } from '../query-builder/update-result.js';
|
|
3
3
|
import type { ShallowRecord } from '../util/type-utils.js';
|
|
4
4
|
import type { ExtractTableAlias, From, FromTables, TableExpressionOrList } from './table-parser.js';
|
|
5
|
-
export type UpdateTable<DB, TE extends TableExpressionOrList<DB, never>> =
|
|
5
|
+
export type UpdateTable<DB, TE extends TableExpressionOrList<DB, never>> = [
|
|
6
|
+
TE
|
|
7
|
+
] extends [keyof DB] ? UpdateQueryBuilder<DB, ExtractTableAlias<DB, TE>, ExtractTableAlias<DB, TE>, UpdateResult> : [
|
|
8
|
+
TE
|
|
9
|
+
] extends [`${infer T} as ${infer A}`] ? T extends keyof DB ? UpdateQueryBuilder<DB & ShallowRecord<A, DB[T]>, A, A, UpdateResult> : never : TE extends ReadonlyArray<infer T> ? UpdateQueryBuilder<From<DB, T>, FromTables<DB, never, T>, FromTables<DB, never, T>, UpdateResult> : UpdateQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, FromTables<DB, never, TE>, UpdateResult>;
|
|
@@ -451,7 +451,7 @@ class DeleteQueryBuilder {
|
|
|
451
451
|
*/
|
|
452
452
|
async execute() {
|
|
453
453
|
const compiledQuery = this.compile();
|
|
454
|
-
const result = await this.#props.executor.executeQuery(compiledQuery
|
|
454
|
+
const result = await this.#props.executor.executeQuery(compiledQuery);
|
|
455
455
|
const { adapter } = this.#props.executor;
|
|
456
456
|
const query = compiledQuery.query;
|
|
457
457
|
if ((query.returning && adapter.supportsReturning) ||
|
|
@@ -488,7 +488,7 @@ class DeleteQueryBuilder {
|
|
|
488
488
|
}
|
|
489
489
|
async *stream(chunkSize = 100) {
|
|
490
490
|
const compiledQuery = this.compile();
|
|
491
|
-
const stream = this.#props.executor.stream(compiledQuery, chunkSize
|
|
491
|
+
const stream = this.#props.executor.stream(compiledQuery, chunkSize);
|
|
492
492
|
for await (const item of stream) {
|
|
493
493
|
yield* item.rows;
|
|
494
494
|
}
|
|
@@ -3,10 +3,10 @@ import { Expression } from '../expression/expression.js';
|
|
|
3
3
|
import { ExtractTypeFromCoalesce1, ExtractTypeFromCoalesce3, ExtractTypeFromCoalesce2, ExtractTypeFromCoalesce4, ExtractTypeFromCoalesce5 } from '../parser/coalesce-parser.js';
|
|
4
4
|
import { ExtractTypeFromReferenceExpression, ReferenceExpression, StringReference, ExtractTypeFromStringReference } from '../parser/reference-parser.js';
|
|
5
5
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
6
|
-
import { IsNever } from '../util/type-utils.js';
|
|
6
|
+
import { IsNever, ShallowDehydrateObject, ShallowDehydrateValue, Simplify } from '../util/type-utils.js';
|
|
7
7
|
import { AggregateFunctionBuilder } from './aggregate-function-builder.js';
|
|
8
8
|
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
9
|
-
import { Selectable } from '../util/column-type.js';
|
|
9
|
+
import { Selectable, SelectType } from '../util/column-type.js';
|
|
10
10
|
/**
|
|
11
11
|
* Helpers for type safe SQL function calls.
|
|
12
12
|
*
|
|
@@ -565,8 +565,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
565
565
|
* group by "person"."first_name"
|
|
566
566
|
* ```
|
|
567
567
|
*/
|
|
568
|
-
jsonAgg<T extends (TB & string) | Expression<unknown>>(table: T): AggregateFunctionBuilder<DB, TB, T extends TB ? Selectable<DB[T]
|
|
569
|
-
jsonAgg<RE extends StringReference<DB, TB>>(column: RE): AggregateFunctionBuilder<DB, TB, ExtractTypeFromStringReference<DB, TB, RE
|
|
568
|
+
jsonAgg<T extends (TB & string) | Expression<unknown>>(table: T): AggregateFunctionBuilder<DB, TB, T extends TB ? Simplify<ShallowDehydrateObject<Selectable<DB[T]>>>[] : T extends Expression<infer O> ? Simplify<ShallowDehydrateObject<O>>[] : never>;
|
|
569
|
+
jsonAgg<RE extends StringReference<DB, TB>>(column: RE): AggregateFunctionBuilder<DB, TB, ShallowDehydrateValue<SelectType<ExtractTypeFromStringReference<DB, TB, RE>>>[] | null>;
|
|
570
570
|
/**
|
|
571
571
|
* Creates a to_json function call.
|
|
572
572
|
*
|
|
@@ -587,6 +587,6 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
587
587
|
* inner join "pet" on "pet"."owner_id" = "person"."id"
|
|
588
588
|
* ```
|
|
589
589
|
*/
|
|
590
|
-
toJson<T extends (TB & string) | Expression<unknown>>(table: T): ExpressionWrapper<DB, TB, T extends TB ? Selectable<DB[T]
|
|
590
|
+
toJson<T extends (TB & string) | Expression<unknown>>(table: T): ExpressionWrapper<DB, TB, T extends TB ? Simplify<ShallowDehydrateObject<Selectable<DB[T]>>> : T extends Expression<infer O> ? Simplify<ShallowDehydrateObject<O>> : never>;
|
|
591
591
|
}
|
|
592
592
|
export declare function createFunctionModule<DB, TB extends keyof DB>(): FunctionModule<DB, TB>;
|
|
@@ -1105,7 +1105,7 @@ class InsertQueryBuilder {
|
|
|
1105
1105
|
*/
|
|
1106
1106
|
async execute() {
|
|
1107
1107
|
const compiledQuery = this.compile();
|
|
1108
|
-
const result = await this.#props.executor.executeQuery(compiledQuery
|
|
1108
|
+
const result = await this.#props.executor.executeQuery(compiledQuery);
|
|
1109
1109
|
const { adapter } = this.#props.executor;
|
|
1110
1110
|
const query = compiledQuery.query;
|
|
1111
1111
|
if ((query.returning && adapter.supportsReturning) ||
|
|
@@ -1144,7 +1144,7 @@ class InsertQueryBuilder {
|
|
|
1144
1144
|
}
|
|
1145
1145
|
async *stream(chunkSize = 100) {
|
|
1146
1146
|
const compiledQuery = this.compile();
|
|
1147
|
-
const stream = this.#props.executor.stream(compiledQuery, chunkSize
|
|
1147
|
+
const stream = this.#props.executor.stream(compiledQuery, chunkSize);
|
|
1148
1148
|
for await (const item of stream) {
|
|
1149
1149
|
yield* item.rows;
|
|
1150
1150
|
}
|
|
@@ -419,7 +419,7 @@ class WheneableMergeQueryBuilder {
|
|
|
419
419
|
*/
|
|
420
420
|
async execute() {
|
|
421
421
|
const compiledQuery = this.compile();
|
|
422
|
-
const result = await this.#props.executor.executeQuery(compiledQuery
|
|
422
|
+
const result = await this.#props.executor.executeQuery(compiledQuery);
|
|
423
423
|
const { adapter } = this.#props.executor;
|
|
424
424
|
const query = compiledQuery.query;
|
|
425
425
|
if ((query.returning && adapter.supportsReturning) ||
|
|
@@ -40,24 +40,6 @@ export interface OrderByInterface<DB, TB extends keyof DB, O> {
|
|
|
40
40
|
* order by "id", "fn" desc
|
|
41
41
|
* ```
|
|
42
42
|
*
|
|
43
|
-
* Multiple columns/expressions per call:
|
|
44
|
-
*
|
|
45
|
-
* ```ts
|
|
46
|
-
* await db
|
|
47
|
-
* .selectFrom('person')
|
|
48
|
-
* .select('person.first_name as fn')
|
|
49
|
-
* .orderBy(['id', 'fn'])
|
|
50
|
-
* .execute()
|
|
51
|
-
* ```
|
|
52
|
-
*
|
|
53
|
-
* The generated SQL (PostgreSQL):
|
|
54
|
-
*
|
|
55
|
-
* ```sql
|
|
56
|
-
* select "person"."first_name" as "fn"
|
|
57
|
-
* from "person"
|
|
58
|
-
* order by "id", "fn"
|
|
59
|
-
* ```
|
|
60
|
-
*
|
|
61
43
|
* Building advanced modifiers:
|
|
62
44
|
*
|
|
63
45
|
* ```ts
|
|
@@ -1246,24 +1246,6 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1246
1246
|
* order by "id", "fn" desc
|
|
1247
1247
|
* ```
|
|
1248
1248
|
*
|
|
1249
|
-
* Multiple columns/expressions per call:
|
|
1250
|
-
*
|
|
1251
|
-
* ```ts
|
|
1252
|
-
* await db
|
|
1253
|
-
* .selectFrom('person')
|
|
1254
|
-
* .select('person.first_name as fn')
|
|
1255
|
-
* .orderBy(['id', 'fn'])
|
|
1256
|
-
* .execute()
|
|
1257
|
-
* ```
|
|
1258
|
-
*
|
|
1259
|
-
* The generated SQL (PostgreSQL):
|
|
1260
|
-
*
|
|
1261
|
-
* ```sql
|
|
1262
|
-
* select "person"."first_name" as "fn"
|
|
1263
|
-
* from "person"
|
|
1264
|
-
* order by "id", "fn"
|
|
1265
|
-
* ```
|
|
1266
|
-
*
|
|
1267
1249
|
* Building advanced modifiers:
|
|
1268
1250
|
*
|
|
1269
1251
|
* ```ts
|
|
@@ -316,7 +316,7 @@ class SelectQueryBuilderImpl {
|
|
|
316
316
|
}
|
|
317
317
|
async execute() {
|
|
318
318
|
const compiledQuery = this.compile();
|
|
319
|
-
const result = await this.#props.executor.executeQuery(compiledQuery
|
|
319
|
+
const result = await this.#props.executor.executeQuery(compiledQuery);
|
|
320
320
|
return result.rows;
|
|
321
321
|
}
|
|
322
322
|
async executeTakeFirst() {
|
|
@@ -335,7 +335,7 @@ class SelectQueryBuilderImpl {
|
|
|
335
335
|
}
|
|
336
336
|
async *stream(chunkSize = 100) {
|
|
337
337
|
const compiledQuery = this.compile();
|
|
338
|
-
const stream = this.#props.executor.stream(compiledQuery, chunkSize
|
|
338
|
+
const stream = this.#props.executor.stream(compiledQuery, chunkSize);
|
|
339
339
|
for await (const item of stream) {
|
|
340
340
|
yield* item.rows;
|
|
341
341
|
}
|
|
@@ -458,7 +458,7 @@ class UpdateQueryBuilder {
|
|
|
458
458
|
*/
|
|
459
459
|
async execute() {
|
|
460
460
|
const compiledQuery = this.compile();
|
|
461
|
-
const result = await this.#props.executor.executeQuery(compiledQuery
|
|
461
|
+
const result = await this.#props.executor.executeQuery(compiledQuery);
|
|
462
462
|
const { adapter } = this.#props.executor;
|
|
463
463
|
const query = compiledQuery.query;
|
|
464
464
|
if ((query.returning && adapter.supportsReturning) ||
|
|
@@ -497,7 +497,7 @@ class UpdateQueryBuilder {
|
|
|
497
497
|
}
|
|
498
498
|
async *stream(chunkSize = 100) {
|
|
499
499
|
const compiledQuery = this.compile();
|
|
500
|
-
const stream = this.#props.executor.stream(compiledQuery, chunkSize
|
|
500
|
+
const stream = this.#props.executor.stream(compiledQuery, chunkSize);
|
|
501
501
|
for await (const item of stream) {
|
|
502
502
|
yield* item.rows;
|
|
503
503
|
}
|
|
@@ -1320,7 +1320,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
1320
1320
|
if ((0, object_utils_js_1.isString)(value)) {
|
|
1321
1321
|
this.appendStringLiteral(value);
|
|
1322
1322
|
}
|
|
1323
|
-
else if ((0, object_utils_js_1.isNumber)(value) || (0, object_utils_js_1.isBoolean)(value)) {
|
|
1323
|
+
else if ((0, object_utils_js_1.isNumber)(value) || (0, object_utils_js_1.isBoolean)(value) || (0, object_utils_js_1.isBigInt)(value)) {
|
|
1324
1324
|
this.append(value.toString());
|
|
1325
1325
|
}
|
|
1326
1326
|
else if ((0, object_utils_js_1.isNull)(value)) {
|
|
@@ -1329,9 +1329,6 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
1329
1329
|
else if ((0, object_utils_js_1.isDate)(value)) {
|
|
1330
1330
|
this.appendImmediateValue(value.toISOString());
|
|
1331
1331
|
}
|
|
1332
|
-
else if ((0, object_utils_js_1.isBigInt)(value)) {
|
|
1333
|
-
this.appendImmediateValue(value.toString());
|
|
1334
|
-
}
|
|
1335
1332
|
else {
|
|
1336
1333
|
throw new Error(`invalid immediate value ${value}`);
|
|
1337
1334
|
}
|
|
@@ -35,13 +35,13 @@ export declare abstract class QueryExecutorBase implements QueryExecutor {
|
|
|
35
35
|
* Executes a compiled query and runs the result through all plugins'
|
|
36
36
|
* `transformResult` method.
|
|
37
37
|
*/
|
|
38
|
-
executeQuery<R>(compiledQuery: CompiledQuery
|
|
38
|
+
executeQuery<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>>;
|
|
39
39
|
/**
|
|
40
40
|
* Executes a compiled query and runs the result through all plugins'
|
|
41
41
|
* `transformResult` method. Results are streamead instead of loaded
|
|
42
42
|
* at once.
|
|
43
43
|
*/
|
|
44
|
-
stream<R>(compiledQuery: CompiledQuery, chunkSize: number
|
|
44
|
+
stream<R>(compiledQuery: CompiledQuery, chunkSize: number): AsyncIterableIterator<QueryResult<R>>;
|
|
45
45
|
/**
|
|
46
46
|
* Returns a copy of this executor with a new connection provider.
|
|
47
47
|
*/
|
|
@@ -32,20 +32,20 @@ class QueryExecutorBase {
|
|
|
32
32
|
}
|
|
33
33
|
return node;
|
|
34
34
|
}
|
|
35
|
-
async executeQuery(compiledQuery
|
|
35
|
+
async executeQuery(compiledQuery) {
|
|
36
36
|
return await this.provideConnection(async (connection) => {
|
|
37
37
|
const result = await connection.executeQuery(compiledQuery);
|
|
38
38
|
if ('numUpdatedOrDeletedRows' in result) {
|
|
39
39
|
(0, log_once_js_1.logOnce)('kysely:warning: outdated driver/plugin detected! `QueryResult.numUpdatedOrDeletedRows` has been replaced with `QueryResult.numAffectedRows`.');
|
|
40
40
|
}
|
|
41
|
-
return await this.#transformResult(result, queryId);
|
|
41
|
+
return await this.#transformResult(result, compiledQuery.queryId);
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
|
-
async *stream(compiledQuery, chunkSize
|
|
44
|
+
async *stream(compiledQuery, chunkSize) {
|
|
45
45
|
const { connection, release } = await (0, provide_controlled_connection_js_1.provideControlledConnection)(this);
|
|
46
46
|
try {
|
|
47
47
|
for await (const result of connection.streamQuery(compiledQuery, chunkSize)) {
|
|
48
|
-
yield await this.#transformResult(result, queryId);
|
|
48
|
+
yield await this.#transformResult(result, compiledQuery.queryId);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
finally {
|
|
@@ -36,7 +36,7 @@ export interface QueryExecutor extends ConnectionProvider {
|
|
|
36
36
|
* Executes a compiled query and runs the result through all plugins'
|
|
37
37
|
* `transformResult` method.
|
|
38
38
|
*/
|
|
39
|
-
executeQuery<R>(compiledQuery: CompiledQuery<R
|
|
39
|
+
executeQuery<R>(compiledQuery: CompiledQuery<R>): Promise<QueryResult<R>>;
|
|
40
40
|
/**
|
|
41
41
|
* Executes a compiled query and runs the result through all plugins'
|
|
42
42
|
* `transformResult` method. Results are streamead instead of loaded
|
|
@@ -47,7 +47,7 @@ export interface QueryExecutor extends ConnectionProvider {
|
|
|
47
47
|
* How many rows should be pulled from the database at once. Supported
|
|
48
48
|
* only by the postgres driver.
|
|
49
49
|
*/
|
|
50
|
-
chunkSize: number
|
|
50
|
+
chunkSize: number): AsyncIterableIterator<QueryResult<R>>;
|
|
51
51
|
/**
|
|
52
52
|
* Returns a copy of this executor with a new connection provider.
|
|
53
53
|
*/
|
|
@@ -42,7 +42,7 @@ class RawBuilderImpl {
|
|
|
42
42
|
}
|
|
43
43
|
async execute(executorProvider) {
|
|
44
44
|
const executor = this.#getExecutor(executorProvider);
|
|
45
|
-
return executor.executeQuery(this.#compile(executor)
|
|
45
|
+
return executor.executeQuery(this.#compile(executor));
|
|
46
46
|
}
|
|
47
47
|
#getExecutor(executorProvider) {
|
|
48
48
|
const executor = executorProvider !== undefined
|
|
@@ -61,7 +61,7 @@ class AlterTableAddForeignKeyConstraintBuilder {
|
|
|
61
61
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
62
62
|
}
|
|
63
63
|
async execute() {
|
|
64
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
64
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
exports.AlterTableAddForeignKeyConstraintBuilder = AlterTableAddForeignKeyConstraintBuilder;
|
|
@@ -159,7 +159,7 @@ class AlterTableAddIndexBuilder {
|
|
|
159
159
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
160
160
|
}
|
|
161
161
|
async execute() {
|
|
162
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
162
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
exports.AlterTableAddIndexBuilder = AlterTableAddIndexBuilder;
|
|
@@ -261,7 +261,7 @@ class AlterTableColumnAlteringBuilder {
|
|
|
261
261
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
262
262
|
}
|
|
263
263
|
async execute() {
|
|
264
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
264
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
265
265
|
}
|
|
266
266
|
}
|
|
267
267
|
exports.AlterTableColumnAlteringBuilder = AlterTableColumnAlteringBuilder;
|
|
@@ -53,7 +53,7 @@ class AlterTableDropConstraintBuilder {
|
|
|
53
53
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
54
54
|
}
|
|
55
55
|
async execute() {
|
|
56
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
56
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
exports.AlterTableDropConstraintBuilder = AlterTableDropConstraintBuilder;
|
|
@@ -14,7 +14,7 @@ class AlterTableExecutor {
|
|
|
14
14
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
15
15
|
}
|
|
16
16
|
async execute() {
|
|
17
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
17
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
exports.AlterTableExecutor = AlterTableExecutor;
|
|
@@ -196,7 +196,7 @@ class CreateIndexBuilder {
|
|
|
196
196
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
197
197
|
}
|
|
198
198
|
async execute() {
|
|
199
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
199
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
exports.CreateIndexBuilder = CreateIndexBuilder;
|
|
@@ -28,7 +28,7 @@ class CreateSchemaBuilder {
|
|
|
28
28
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
29
29
|
}
|
|
30
30
|
async execute() {
|
|
31
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
31
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
exports.CreateSchemaBuilder = CreateSchemaBuilder;
|
|
@@ -405,7 +405,7 @@ class CreateTableBuilder {
|
|
|
405
405
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
406
406
|
}
|
|
407
407
|
async execute() {
|
|
408
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
408
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
409
409
|
}
|
|
410
410
|
}
|
|
411
411
|
exports.CreateTableBuilder = CreateTableBuilder;
|
|
@@ -37,7 +37,7 @@ class CreateTypeBuilder {
|
|
|
37
37
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
38
38
|
}
|
|
39
39
|
async execute() {
|
|
40
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
40
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
exports.CreateTypeBuilder = CreateTypeBuilder;
|
|
@@ -92,7 +92,7 @@ class CreateViewBuilder {
|
|
|
92
92
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
93
93
|
}
|
|
94
94
|
async execute() {
|
|
95
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
95
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
exports.CreateViewBuilder = CreateViewBuilder;
|
|
@@ -51,7 +51,7 @@ class DropIndexBuilder {
|
|
|
51
51
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
52
52
|
}
|
|
53
53
|
async execute() {
|
|
54
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
54
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
exports.DropIndexBuilder = DropIndexBuilder;
|
|
@@ -38,7 +38,7 @@ class DropSchemaBuilder {
|
|
|
38
38
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
39
39
|
}
|
|
40
40
|
async execute() {
|
|
41
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
41
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
exports.DropSchemaBuilder = DropSchemaBuilder;
|
|
@@ -38,7 +38,7 @@ class DropTableBuilder {
|
|
|
38
38
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
39
39
|
}
|
|
40
40
|
async execute() {
|
|
41
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
41
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
exports.DropTableBuilder = DropTableBuilder;
|
|
@@ -30,7 +30,7 @@ class DropTypeBuilder {
|
|
|
30
30
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
31
31
|
}
|
|
32
32
|
async execute() {
|
|
33
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
33
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
exports.DropTypeBuilder = DropTypeBuilder;
|
|
@@ -46,7 +46,7 @@ class DropViewBuilder {
|
|
|
46
46
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
47
47
|
}
|
|
48
48
|
async execute() {
|
|
49
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
49
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
exports.DropViewBuilder = DropViewBuilder;
|
|
@@ -69,7 +69,7 @@ class RefreshMaterializedViewBuilder {
|
|
|
69
69
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
70
70
|
}
|
|
71
71
|
async execute() {
|
|
72
|
-
await this.#props.executor.executeQuery(this.compile()
|
|
72
|
+
await this.#props.executor.executeQuery(this.compile());
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
exports.RefreshMaterializedViewBuilder = RefreshMaterializedViewBuilder;
|
|
@@ -169,3 +169,20 @@ export type DrainOuterGeneric<T> = [T] extends [unknown] ? T : never;
|
|
|
169
169
|
export type ShallowRecord<K extends keyof any, T> = DrainOuterGeneric<{
|
|
170
170
|
[P in K]: T;
|
|
171
171
|
}>;
|
|
172
|
+
/**
|
|
173
|
+
* Dehydrates any root properties of an object that are not valid JSON types.
|
|
174
|
+
*
|
|
175
|
+
* For now, we catch anything in {@link StringsWhenDataTypeNotAvailable} and convert it to `string`.
|
|
176
|
+
*/
|
|
177
|
+
export type ShallowDehydrateObject<O> = {
|
|
178
|
+
[K in keyof O]: ShallowDehydrateValue<O[K]>;
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* Dehydrates a value when it is not a valid JSON type.
|
|
182
|
+
*
|
|
183
|
+
* For now, we catch anything in {@link StringsWhenDataTypeNotAvailable} and convert it to `string`.
|
|
184
|
+
*/
|
|
185
|
+
export type ShallowDehydrateValue<T> = [T] extends [
|
|
186
|
+
(infer U)[] | null | undefined
|
|
187
|
+
] ? Array<ShallowDehydrateValue<U>> | Extract<T, null | undefined> : T extends Exclude<T, StringsWhenDataTypeNotAvailable> ? T : string | Exclude<T, StringsWhenDataTypeNotAvailable>;
|
|
188
|
+
export type StringsWhenDataTypeNotAvailable = ArrayBuffer | bigint | Buffer | Date;
|
|
@@ -4,6 +4,7 @@ import { MssqlDialectConfig, Tedious, TediousConnection } from './mssql-dialect-
|
|
|
4
4
|
import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|
5
5
|
declare const PRIVATE_RESET_METHOD: unique symbol;
|
|
6
6
|
declare const PRIVATE_DESTROY_METHOD: unique symbol;
|
|
7
|
+
declare const PRIVATE_VALIDATE_METHOD: unique symbol;
|
|
7
8
|
export declare class MssqlDriver implements Driver {
|
|
8
9
|
#private;
|
|
9
10
|
constructor(config: MssqlDialectConfig);
|
|
@@ -51,8 +52,8 @@ declare class MssqlConnection implements DatabaseConnection {
|
|
|
51
52
|
rollbackTransaction(savepointName?: string): Promise<void>;
|
|
52
53
|
savepoint(savepointName: string): Promise<void>;
|
|
53
54
|
streamQuery<O>(compiledQuery: CompiledQuery, chunkSize: number): AsyncIterableIterator<QueryResult<O>>;
|
|
54
|
-
validate(): Promise<boolean>;
|
|
55
|
-
[PRIVATE_RESET_METHOD](): Promise<void>;
|
|
56
55
|
[PRIVATE_DESTROY_METHOD](): Promise<void>;
|
|
56
|
+
[PRIVATE_RESET_METHOD](): Promise<void>;
|
|
57
|
+
[PRIVATE_VALIDATE_METHOD](): Promise<boolean>;
|
|
57
58
|
}
|
|
58
59
|
export {};
|