kysely 0.9.9 → 0.11.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 +22 -16
- package/dist/cjs/dialect/dialect-adapter.d.ts +3 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +1 -1
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +3 -3
- package/dist/cjs/dialect/mysql/mysql-driver.js +25 -32
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +2 -2
- package/dist/cjs/dialect/postgres/postgres-driver.js +8 -19
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +18 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +64 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.js +33 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +14 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +116 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +44 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +19 -0
- package/dist/cjs/driver/database-connection.d.ts +2 -2
- package/dist/cjs/driver/runtime-driver.js +3 -4
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/kysely.d.ts +6 -4
- package/dist/cjs/kysely.js +6 -4
- package/dist/cjs/migration/migration.d.ts +1 -1
- package/dist/cjs/migration/migration.js +3 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +8 -6
- package/dist/cjs/operation-node/column-definition-node.js +4 -4
- package/dist/cjs/operation-node/create-schema-node.d.ts +1 -2
- package/dist/cjs/operation-node/create-table-node.d.ts +2 -3
- package/dist/cjs/operation-node/create-table-node.js +2 -2
- package/dist/cjs/operation-node/create-view-node.d.ts +3 -2
- package/dist/cjs/operation-node/default-value-node.d.ts +14 -0
- package/dist/cjs/operation-node/default-value-node.js +18 -0
- package/dist/cjs/operation-node/drop-index-node.d.ts +1 -2
- package/dist/cjs/operation-node/drop-schema-node.d.ts +2 -3
- package/dist/cjs/operation-node/drop-schema-node.js +2 -2
- package/dist/cjs/operation-node/drop-table-node.d.ts +2 -3
- package/dist/cjs/operation-node/drop-table-node.js +2 -2
- package/dist/cjs/operation-node/drop-view-node.d.ts +3 -3
- package/dist/cjs/operation-node/drop-view-node.js +2 -2
- package/dist/cjs/operation-node/generated-always-as-node.d.ts +16 -0
- package/dist/cjs/operation-node/generated-always-as-node.js +25 -0
- package/dist/cjs/operation-node/having-node.d.ts +4 -8
- package/dist/cjs/operation-node/having-node.js +3 -3
- package/dist/cjs/operation-node/join-node.d.ts +6 -9
- package/dist/cjs/operation-node/join-node.js +10 -7
- package/dist/cjs/operation-node/on-node.d.ts +14 -0
- package/dist/cjs/operation-node/on-node.js +28 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +6 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +39 -13
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +7 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +9 -2
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/query-node.d.ts +3 -3
- package/dist/cjs/operation-node/raw-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
- package/dist/cjs/operation-node/select-query-node.js +1 -1
- package/dist/cjs/operation-node/where-node.d.ts +4 -8
- package/dist/cjs/operation-node/where-node.js +3 -3
- package/dist/cjs/parser/filter-parser.js +1 -1
- package/dist/cjs/parser/returning-parser.d.ts +4 -2
- package/dist/cjs/parser/select-parser.d.ts +2 -2
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +1 -1
- package/dist/cjs/query-builder/delete-result.d.ts +5 -0
- package/dist/cjs/query-builder/delete-result.js +13 -0
- package/dist/cjs/query-builder/expression-builder.d.ts +2 -2
- package/dist/cjs/query-builder/expression-builder.js +1 -1
- package/dist/cjs/query-builder/function-builder.d.ts +5 -5
- package/dist/cjs/query-builder/function-builder.js +3 -3
- package/dist/cjs/query-builder/insert-result.d.ts +27 -0
- package/dist/cjs/query-builder/insert-result.js +35 -0
- package/dist/cjs/query-builder/query-builder.d.ts +91 -81
- package/dist/cjs/query-builder/query-builder.js +38 -41
- package/dist/cjs/query-builder/update-result.d.ts +5 -0
- package/dist/cjs/query-builder/update-result.js +13 -0
- package/dist/cjs/query-compiler/compiled-query.d.ts +5 -0
- package/dist/cjs/query-compiler/compiled-query.js +12 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +6 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +60 -26
- package/dist/cjs/query-creator.d.ts +36 -26
- package/dist/cjs/query-creator.js +25 -17
- package/dist/cjs/raw-builder/raw-builder.d.ts +1 -1
- package/dist/cjs/schema/alter-table-builder.d.ts +6 -2
- package/dist/cjs/schema/alter-table-builder.js +28 -4
- package/dist/cjs/schema/column-definition-builder.d.ts +43 -2
- package/dist/cjs/schema/column-definition-builder.js +23 -6
- package/dist/cjs/schema/create-schema-builder.js +1 -1
- package/dist/cjs/schema/create-table-builder.d.ts +7 -8
- package/dist/cjs/schema/create-table-builder.js +8 -9
- package/dist/cjs/schema/create-view-builder.d.ts +5 -0
- package/dist/cjs/schema/create-view-builder.js +20 -1
- package/dist/cjs/schema/drop-index-builder.js +1 -1
- package/dist/cjs/schema/drop-schema-builder.js +3 -1
- package/dist/cjs/schema/drop-table-builder.js +3 -1
- package/dist/cjs/schema/drop-view-builder.d.ts +1 -0
- package/dist/cjs/schema/drop-view-builder.js +11 -1
- package/dist/cjs/schema/schema.d.ts +3 -3
- package/dist/cjs/schema/schema.js +3 -3
- package/dist/cjs/util/dynamic-import.d.ts +2 -0
- package/dist/cjs/util/dynamic-import.js +32 -0
- package/dist/cjs/util/performance-now.d.ts +1 -0
- package/dist/cjs/util/performance-now.js +13 -0
- package/dist/cjs/util/type-utils.d.ts +4 -15
- package/dist/esm/dialect/dialect-adapter.d.ts +3 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +3 -3
- package/dist/esm/dialect/mysql/mysql-driver.js +26 -33
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +2 -2
- package/dist/esm/dialect/postgres/postgres-driver.js +8 -19
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +14 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +64 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.js +29 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +14 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +112 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +40 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +15 -0
- package/dist/esm/driver/database-connection.d.ts +2 -2
- package/dist/esm/driver/runtime-driver.js +3 -4
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/kysely.d.ts +6 -4
- package/dist/esm/kysely.js +6 -4
- package/dist/esm/migration/migration.d.ts +1 -1
- package/dist/esm/migration/migration.js +3 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +8 -6
- package/dist/esm/operation-node/column-definition-node.js +4 -4
- package/dist/esm/operation-node/create-schema-node.d.ts +1 -2
- package/dist/esm/operation-node/create-table-node.d.ts +2 -3
- package/dist/esm/operation-node/create-table-node.js +2 -2
- package/dist/esm/operation-node/create-view-node.d.ts +3 -2
- package/dist/esm/operation-node/default-value-node.d.ts +14 -0
- package/dist/esm/operation-node/default-value-node.js +15 -0
- package/dist/esm/operation-node/drop-index-node.d.ts +1 -2
- package/dist/esm/operation-node/drop-schema-node.d.ts +2 -3
- package/dist/esm/operation-node/drop-schema-node.js +2 -2
- package/dist/esm/operation-node/drop-table-node.d.ts +2 -3
- package/dist/esm/operation-node/drop-table-node.js +2 -2
- package/dist/esm/operation-node/drop-view-node.d.ts +3 -3
- package/dist/esm/operation-node/drop-view-node.js +2 -2
- package/dist/esm/operation-node/generated-always-as-node.d.ts +16 -0
- package/dist/esm/operation-node/generated-always-as-node.js +22 -0
- package/dist/esm/operation-node/having-node.d.ts +4 -8
- package/dist/esm/operation-node/having-node.js +3 -3
- package/dist/esm/operation-node/join-node.d.ts +6 -9
- package/dist/esm/operation-node/join-node.js +10 -7
- package/dist/esm/operation-node/on-node.d.ts +14 -0
- package/dist/esm/operation-node/on-node.js +25 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +6 -0
- package/dist/esm/operation-node/operation-node-transformer.js +39 -13
- package/dist/esm/operation-node/operation-node-visitor.d.ts +7 -0
- package/dist/esm/operation-node/operation-node-visitor.js +9 -2
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/query-node.d.ts +3 -3
- package/dist/esm/operation-node/raw-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +5 -5
- package/dist/esm/operation-node/select-query-node.js +1 -1
- package/dist/esm/operation-node/where-node.d.ts +4 -8
- package/dist/esm/operation-node/where-node.js +3 -3
- package/dist/esm/parser/filter-parser.js +1 -1
- package/dist/esm/parser/returning-parser.d.ts +4 -2
- package/dist/esm/parser/select-parser.d.ts +2 -2
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +1 -1
- package/dist/esm/query-builder/delete-result.d.ts +5 -0
- package/dist/esm/query-builder/delete-result.js +9 -0
- package/dist/esm/query-builder/expression-builder.d.ts +2 -2
- package/dist/esm/query-builder/expression-builder.js +1 -1
- package/dist/esm/query-builder/function-builder.d.ts +5 -5
- package/dist/esm/query-builder/function-builder.js +3 -3
- package/dist/esm/query-builder/insert-result.d.ts +27 -0
- package/dist/esm/query-builder/insert-result.js +31 -0
- package/dist/esm/query-builder/query-builder.d.ts +91 -81
- package/dist/esm/query-builder/query-builder.js +38 -41
- package/dist/esm/query-builder/update-result.d.ts +5 -0
- package/dist/esm/query-builder/update-result.js +9 -0
- package/dist/esm/query-compiler/compiled-query.d.ts +5 -0
- package/dist/esm/query-compiler/compiled-query.js +11 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +6 -0
- package/dist/esm/query-compiler/default-query-compiler.js +60 -26
- package/dist/esm/query-creator.d.ts +36 -26
- package/dist/esm/query-creator.js +25 -17
- package/dist/esm/raw-builder/raw-builder.d.ts +1 -1
- package/dist/esm/schema/alter-table-builder.d.ts +6 -2
- package/dist/esm/schema/alter-table-builder.js +28 -4
- package/dist/esm/schema/column-definition-builder.d.ts +43 -2
- package/dist/esm/schema/column-definition-builder.js +23 -6
- package/dist/esm/schema/create-schema-builder.js +1 -1
- package/dist/esm/schema/create-table-builder.d.ts +7 -8
- package/dist/esm/schema/create-table-builder.js +8 -9
- package/dist/esm/schema/create-view-builder.d.ts +5 -0
- package/dist/esm/schema/create-view-builder.js +20 -1
- package/dist/esm/schema/drop-index-builder.js +1 -1
- package/dist/esm/schema/drop-schema-builder.js +3 -1
- package/dist/esm/schema/drop-table-builder.js +3 -1
- package/dist/esm/schema/drop-view-builder.d.ts +1 -0
- package/dist/esm/schema/drop-view-builder.js +11 -1
- package/dist/esm/schema/schema.d.ts +3 -3
- package/dist/esm/schema/schema.js +3 -3
- package/dist/esm/util/dynamic-import.d.ts +2 -0
- package/dist/esm/util/dynamic-import.js +27 -0
- package/dist/esm/util/performance-now.d.ts +1 -0
- package/dist/esm/util/performance-now.js +9 -0
- package/dist/esm/util/type-utils.d.ts +4 -15
- package/package.json +5 -3
|
@@ -30,7 +30,7 @@ import { freeze } from '../util/object-utils.js';
|
|
|
30
30
|
*/
|
|
31
31
|
export class OperationNodeTransformer {
|
|
32
32
|
nodeStack = [];
|
|
33
|
-
#transformers = {
|
|
33
|
+
#transformers = freeze({
|
|
34
34
|
AliasNode: this.transformAlias.bind(this),
|
|
35
35
|
ColumnNode: this.transformColumn.bind(this),
|
|
36
36
|
IdentifierNode: this.transformIdentifier.bind(this),
|
|
@@ -92,7 +92,10 @@ export class OperationNodeTransformer {
|
|
|
92
92
|
UnionNode: this.transformUnion.bind(this),
|
|
93
93
|
CreateViewNode: this.transformCreateView.bind(this),
|
|
94
94
|
DropViewNode: this.transformDropView.bind(this),
|
|
95
|
-
|
|
95
|
+
GeneratedAlwaysAsNode: this.transformGeneratedAlwaysAs.bind(this),
|
|
96
|
+
DefaultValueNode: this.transformDefaultValue.bind(this),
|
|
97
|
+
OnNode: this.transformOn.bind(this),
|
|
98
|
+
});
|
|
96
99
|
transformNode = (node) => {
|
|
97
100
|
if (!node) {
|
|
98
101
|
return undefined;
|
|
@@ -114,7 +117,7 @@ export class OperationNodeTransformer {
|
|
|
114
117
|
from: this.transformNode(node.from),
|
|
115
118
|
selections: this.transformNodeList(node.selections),
|
|
116
119
|
distinctOnSelections: this.transformNodeList(node.distinctOnSelections),
|
|
117
|
-
|
|
120
|
+
distinct: node.distinct,
|
|
118
121
|
joins: this.transformNodeList(node.joins),
|
|
119
122
|
groupBy: this.transformNode(node.groupBy),
|
|
120
123
|
orderBy: this.transformNode(node.orderBy),
|
|
@@ -256,7 +259,7 @@ export class OperationNodeTransformer {
|
|
|
256
259
|
table: this.transformNode(node.table),
|
|
257
260
|
columns: this.transformNodeList(node.columns),
|
|
258
261
|
constraints: this.transformNodeList(node.constraints),
|
|
259
|
-
|
|
262
|
+
ifNotExists: node.ifNotExists,
|
|
260
263
|
};
|
|
261
264
|
}
|
|
262
265
|
transformColumnDefinition(node) {
|
|
@@ -265,12 +268,13 @@ export class OperationNodeTransformer {
|
|
|
265
268
|
column: this.transformNode(node.column),
|
|
266
269
|
dataType: this.transformNode(node.dataType),
|
|
267
270
|
references: this.transformNode(node.references),
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
271
|
+
primaryKey: node.primaryKey,
|
|
272
|
+
autoIncrement: node.autoIncrement,
|
|
273
|
+
unique: node.unique,
|
|
274
|
+
nullable: node.nullable,
|
|
272
275
|
defaultTo: this.transformNode(node.defaultTo),
|
|
273
276
|
check: this.transformNode(node.check),
|
|
277
|
+
generatedAlwaysAs: this.transformNode(node.generatedAlwaysAs),
|
|
274
278
|
};
|
|
275
279
|
}
|
|
276
280
|
transformAddColumn(node) {
|
|
@@ -283,7 +287,7 @@ export class OperationNodeTransformer {
|
|
|
283
287
|
return {
|
|
284
288
|
kind: 'DropTableNode',
|
|
285
289
|
table: this.transformNode(node.table),
|
|
286
|
-
|
|
290
|
+
ifExists: node.ifExists,
|
|
287
291
|
};
|
|
288
292
|
}
|
|
289
293
|
transformOrderBy(node) {
|
|
@@ -377,7 +381,7 @@ export class OperationNodeTransformer {
|
|
|
377
381
|
kind: 'DropIndexNode',
|
|
378
382
|
name: this.transformNode(node.name),
|
|
379
383
|
table: this.transformNode(node.table),
|
|
380
|
-
|
|
384
|
+
ifExists: node.ifExists,
|
|
381
385
|
};
|
|
382
386
|
}
|
|
383
387
|
transformPrimaryKeyConstraint(node) {
|
|
@@ -456,7 +460,7 @@ export class OperationNodeTransformer {
|
|
|
456
460
|
return {
|
|
457
461
|
kind: 'DropSchemaNode',
|
|
458
462
|
schema: this.transformNode(node.schema),
|
|
459
|
-
|
|
463
|
+
ifExists: node.ifExists,
|
|
460
464
|
};
|
|
461
465
|
}
|
|
462
466
|
transformAlterTable(node) {
|
|
@@ -521,7 +525,9 @@ export class OperationNodeTransformer {
|
|
|
521
525
|
return {
|
|
522
526
|
kind: 'CreateViewNode',
|
|
523
527
|
name: this.transformNode(node.name),
|
|
524
|
-
|
|
528
|
+
orReplace: node.orReplace,
|
|
529
|
+
ifNotExists: node.ifNotExists,
|
|
530
|
+
materialized: node.materialized,
|
|
525
531
|
columns: this.transformNodeList(node.columns),
|
|
526
532
|
as: this.transformNode(node.as),
|
|
527
533
|
};
|
|
@@ -530,7 +536,27 @@ export class OperationNodeTransformer {
|
|
|
530
536
|
return {
|
|
531
537
|
kind: 'DropViewNode',
|
|
532
538
|
name: this.transformNode(node.name),
|
|
533
|
-
|
|
539
|
+
ifExists: node.ifExists,
|
|
540
|
+
materialized: node.materialized,
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
transformGeneratedAlwaysAs(node) {
|
|
544
|
+
return {
|
|
545
|
+
kind: 'GeneratedAlwaysAsNode',
|
|
546
|
+
expression: this.transformNode(node.expression),
|
|
547
|
+
stored: node.stored,
|
|
548
|
+
};
|
|
549
|
+
}
|
|
550
|
+
transformDefaultValue(node) {
|
|
551
|
+
return {
|
|
552
|
+
kind: 'DefaultValueNode',
|
|
553
|
+
defaultValue: this.transformNode(node.defaultValue),
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
transformOn(node) {
|
|
557
|
+
return {
|
|
558
|
+
kind: 'OnNode',
|
|
559
|
+
on: this.transformNode(node.on),
|
|
534
560
|
};
|
|
535
561
|
}
|
|
536
562
|
transformDataType(node) {
|
|
@@ -60,9 +60,13 @@ import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
|
|
|
60
60
|
import { UnionNode } from './union-node.js';
|
|
61
61
|
import { CreateViewNode } from './create-view-node.js';
|
|
62
62
|
import { DropViewNode } from './drop-view-node.js';
|
|
63
|
+
import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
|
|
64
|
+
import { DefaultValueNode } from './default-value-node.js';
|
|
65
|
+
import { OnNode } from './on-node.js';
|
|
63
66
|
export declare abstract class OperationNodeVisitor {
|
|
64
67
|
#private;
|
|
65
68
|
protected readonly nodeStack: OperationNode[];
|
|
69
|
+
protected get parentNode(): OperationNode | undefined;
|
|
66
70
|
protected readonly visitNode: (node: OperationNode) => void;
|
|
67
71
|
protected abstract visitSelectQuery(node: SelectQueryNode): void;
|
|
68
72
|
protected abstract visitSelection(node: SelectionNode): void;
|
|
@@ -125,4 +129,7 @@ export declare abstract class OperationNodeVisitor {
|
|
|
125
129
|
protected abstract visitOperator(node: OperatorNode): void;
|
|
126
130
|
protected abstract visitCreateView(node: CreateViewNode): void;
|
|
127
131
|
protected abstract visitDropView(node: DropViewNode): void;
|
|
132
|
+
protected abstract visitGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): void;
|
|
133
|
+
protected abstract visitDefaultValue(node: DefaultValueNode): void;
|
|
134
|
+
protected abstract visitOn(node: OnNode): void;
|
|
128
135
|
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { freeze } from '../util/object-utils.js';
|
|
1
2
|
export class OperationNodeVisitor {
|
|
2
3
|
nodeStack = [];
|
|
3
|
-
|
|
4
|
+
get parentNode() {
|
|
5
|
+
return this.nodeStack[this.nodeStack.length - 2];
|
|
6
|
+
}
|
|
7
|
+
#visitors = freeze({
|
|
4
8
|
AliasNode: this.visitAlias.bind(this),
|
|
5
9
|
ColumnNode: this.visitColumn.bind(this),
|
|
6
10
|
IdentifierNode: this.visitIdentifier.bind(this),
|
|
@@ -62,7 +66,10 @@ export class OperationNodeVisitor {
|
|
|
62
66
|
UnionNode: this.visitUnion.bind(this),
|
|
63
67
|
CreateViewNode: this.visitCreateView.bind(this),
|
|
64
68
|
DropViewNode: this.visitDropView.bind(this),
|
|
65
|
-
|
|
69
|
+
GeneratedAlwaysAsNode: this.visitGeneratedAlwaysAs.bind(this),
|
|
70
|
+
DefaultValueNode: this.visitDefaultValue.bind(this),
|
|
71
|
+
OnNode: this.visitOn.bind(this),
|
|
72
|
+
});
|
|
66
73
|
visitNode = (node) => {
|
|
67
74
|
this.nodeStack.push(node);
|
|
68
75
|
this.#visitors[node.kind](node);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode';
|
|
1
|
+
export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedAlwaysAsNode' | 'DefaultValueNode' | 'OnNode';
|
|
2
2
|
export interface OperationNode {
|
|
3
3
|
readonly kind: OperationNodeKind;
|
|
4
4
|
}
|
|
@@ -2,10 +2,10 @@ import { InsertQueryNode } from './insert-query-node.js';
|
|
|
2
2
|
import { SelectQueryNode } from './select-query-node.js';
|
|
3
3
|
import { UpdateQueryNode } from './update-query-node.js';
|
|
4
4
|
import { DeleteQueryNode } from './delete-query-node.js';
|
|
5
|
-
import { WhereChildNode } from './where-node.js';
|
|
6
5
|
import { JoinNode } from './join-node.js';
|
|
7
6
|
import { SelectionNode } from './selection-node.js';
|
|
8
7
|
import { OperationNode } from './operation-node.js';
|
|
8
|
+
import { FilterExpressionNode } from './operation-node-utils.js';
|
|
9
9
|
export declare type QueryNode = SelectQueryNode | DeleteQueryNode | InsertQueryNode | UpdateQueryNode;
|
|
10
10
|
export declare type MutatingQueryNode = DeleteQueryNode | InsertQueryNode | UpdateQueryNode;
|
|
11
11
|
export declare type FilterableQueryNode = SelectQueryNode | DeleteQueryNode | UpdateQueryNode;
|
|
@@ -16,8 +16,8 @@ export declare const QueryNode: Readonly<{
|
|
|
16
16
|
is(node: OperationNode): node is QueryNode;
|
|
17
17
|
isMutating(node: OperationNode): node is MutatingQueryNode;
|
|
18
18
|
isFilterable(node: OperationNode): node is FilterableQueryNode;
|
|
19
|
-
cloneWithWhere<T extends FilterableQueryNode>(node: T, filter:
|
|
20
|
-
cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, filter:
|
|
19
|
+
cloneWithWhere<T extends FilterableQueryNode>(node: T, filter: FilterExpressionNode): T;
|
|
20
|
+
cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, filter: FilterExpressionNode): T_1;
|
|
21
21
|
cloneWithJoin<T_2 extends FilterableQueryNode>(node: T_2, join: JoinNode): T_2;
|
|
22
22
|
cloneWithReturning<T_3 extends MutatingQueryNode>(node: T_3, selections: ReadonlyArray<SelectionNode>): T_3;
|
|
23
23
|
}>;
|
|
@@ -9,6 +9,6 @@ export interface RawNode extends OperationNode {
|
|
|
9
9
|
*/
|
|
10
10
|
export declare const RawNode: Readonly<{
|
|
11
11
|
is(node: OperationNode): node is RawNode;
|
|
12
|
-
create(sqlFragments: string
|
|
12
|
+
create(sqlFragments: ReadonlyArray<string>, params: ReadonlyArray<OperationNode>): RawNode;
|
|
13
13
|
createWithSql(sql: string): RawNode;
|
|
14
14
|
}>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { FromNode } from './from-node.js';
|
|
2
2
|
import { GroupByItemNode } from './group-by-item-node.js';
|
|
3
3
|
import { GroupByNode } from './group-by-node.js';
|
|
4
|
-
import { HavingNode
|
|
4
|
+
import { HavingNode } from './having-node.js';
|
|
5
5
|
import { JoinNode } from './join-node.js';
|
|
6
6
|
import { LimitNode } from './limit-node.js';
|
|
7
7
|
import { OffsetNode } from './offset-node.js';
|
|
8
8
|
import { OperationNode } from './operation-node.js';
|
|
9
|
-
import { TableExpressionNode } from './operation-node-utils.js';
|
|
9
|
+
import { FilterExpressionNode, TableExpressionNode } from './operation-node-utils.js';
|
|
10
10
|
import { OrderByItemNode } from './order-by-item-node.js';
|
|
11
11
|
import { OrderByNode } from './order-by-node.js';
|
|
12
12
|
import { SelectionNode } from './selection-node.js';
|
|
@@ -19,7 +19,7 @@ export interface SelectQueryNode extends OperationNode {
|
|
|
19
19
|
readonly from: FromNode;
|
|
20
20
|
readonly selections?: ReadonlyArray<SelectionNode>;
|
|
21
21
|
readonly distinctOnSelections?: ReadonlyArray<SelectionNode>;
|
|
22
|
-
readonly
|
|
22
|
+
readonly distinct?: boolean;
|
|
23
23
|
readonly joins?: ReadonlyArray<JoinNode>;
|
|
24
24
|
readonly groupBy?: GroupByNode;
|
|
25
25
|
readonly orderBy?: OrderByNode;
|
|
@@ -44,8 +44,8 @@ export declare const SelectQueryNode: Readonly<{
|
|
|
44
44
|
cloneWithGroupByItems(selectNode: SelectQueryNode, items: ReadonlyArray<GroupByItemNode>): SelectQueryNode;
|
|
45
45
|
cloneWithLimit(selectNode: SelectQueryNode, limit: LimitNode): SelectQueryNode;
|
|
46
46
|
cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
|
|
47
|
-
cloneWithHaving(selectNode: SelectQueryNode, filter:
|
|
48
|
-
cloneWithOrHaving(selectNode: SelectQueryNode, filter:
|
|
47
|
+
cloneWithHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
|
|
48
|
+
cloneWithOrHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
|
|
49
49
|
cloneWithDistinct(selectNode: SelectQueryNode): SelectQueryNode;
|
|
50
50
|
cloneWithUnion(selectNode: SelectQueryNode, union: UnionNode): SelectQueryNode;
|
|
51
51
|
}>;
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FilterNode } from './filter-node.js';
|
|
1
|
+
import { FilterExpressionNode } from './operation-node-utils.js';
|
|
3
2
|
import { OperationNode } from './operation-node.js';
|
|
4
|
-
import { OrNode } from './or-node.js';
|
|
5
|
-
import { ParensNode } from './parens-node.js';
|
|
6
|
-
export declare type WhereChildNode = FilterNode | AndNode | OrNode | ParensNode;
|
|
7
3
|
export interface WhereNode extends OperationNode {
|
|
8
4
|
readonly kind: 'WhereNode';
|
|
9
|
-
readonly where:
|
|
5
|
+
readonly where: FilterExpressionNode;
|
|
10
6
|
}
|
|
11
7
|
/**
|
|
12
8
|
* @internal
|
|
13
9
|
*/
|
|
14
10
|
export declare const WhereNode: Readonly<{
|
|
15
11
|
is(node: OperationNode): node is WhereNode;
|
|
16
|
-
create(filter:
|
|
17
|
-
cloneWithFilter(whereNode: WhereNode, op: 'And' | 'Or',
|
|
12
|
+
create(filter: FilterExpressionNode): WhereNode;
|
|
13
|
+
cloneWithFilter(whereNode: WhereNode, op: 'And' | 'Or', filter: FilterExpressionNode): WhereNode;
|
|
18
14
|
}>;
|
|
@@ -14,12 +14,12 @@ export const WhereNode = freeze({
|
|
|
14
14
|
where: filter,
|
|
15
15
|
});
|
|
16
16
|
},
|
|
17
|
-
cloneWithFilter(whereNode, op,
|
|
17
|
+
cloneWithFilter(whereNode, op, filter) {
|
|
18
18
|
return freeze({
|
|
19
19
|
...whereNode,
|
|
20
20
|
where: op === 'And'
|
|
21
|
-
? AndNode.create(whereNode.where,
|
|
22
|
-
: OrNode.create(whereNode.where,
|
|
21
|
+
? AndNode.create(whereNode.where, filter)
|
|
22
|
+
: OrNode.create(whereNode.where, filter),
|
|
23
23
|
});
|
|
24
24
|
},
|
|
25
25
|
});
|
|
@@ -92,7 +92,7 @@ function parseOnGroup(ctx, callback) {
|
|
|
92
92
|
if (!joinNode.on) {
|
|
93
93
|
throw new Error('no `on*` methods called insided a group callback');
|
|
94
94
|
}
|
|
95
|
-
return ParensNode.create(joinNode.on);
|
|
95
|
+
return ParensNode.create(joinNode.on.on);
|
|
96
96
|
}
|
|
97
97
|
function parseExistExpression(ctx, type, arg) {
|
|
98
98
|
const node = isFunction(arg)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
2
|
+
import { InsertResult } from '../query-builder/insert-result.js';
|
|
1
3
|
import { QueryBuilder } from '../query-builder/query-builder.js';
|
|
2
|
-
import {
|
|
4
|
+
import { UpdateResult } from '../query-builder/update-result.js';
|
|
3
5
|
import { Selection } from './select-parser.js';
|
|
4
6
|
/**
|
|
5
7
|
* `returning` method output query builder type
|
|
6
8
|
*/
|
|
7
|
-
export declare type QueryBuilderWithReturning<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O extends
|
|
9
|
+
export declare type QueryBuilderWithReturning<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O extends InsertResult ? Selection<DB, TB, S> : O extends DeleteResult ? Selection<DB, TB, S> : O extends UpdateResult ? Selection<DB, TB, S> : O & Selection<DB, TB, S>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
2
2
|
import { AliasedQueryBuilder, QueryBuilder } from '../query-builder/query-builder.js';
|
|
3
3
|
import { SelectionNode } from '../operation-node/selection-node.js';
|
|
4
|
-
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedColumn, AnyAliasedColumnWithTable, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnyColumn, AnyColumnWithTable,
|
|
4
|
+
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedColumn, AnyAliasedColumnWithTable, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnyColumn, AnyColumnWithTable, RowType, ValueType } from '../util/type-utils.js';
|
|
5
5
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
6
6
|
import { ParseContext } from './parse-context.js';
|
|
7
7
|
/**
|
|
@@ -13,7 +13,7 @@ export declare type SelectExpressionOrList<DB, TB extends keyof DB> = SelectExpr
|
|
|
13
13
|
* Given a selection expression returns a query builder type that
|
|
14
14
|
* has the selection.
|
|
15
15
|
*/
|
|
16
|
-
export declare type QueryBuilderWithSelection<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O
|
|
16
|
+
export declare type QueryBuilderWithSelection<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O & Selection<DB, TB, S>>;
|
|
17
17
|
/**
|
|
18
18
|
* `selectAll` output query builder type.
|
|
19
19
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { QueryResult } from '../../driver/database-connection.js';
|
|
2
|
-
import { UnknownRow } from '../../index.js';
|
|
3
2
|
import { RootOperationNode } from '../../query-compiler/query-compiler.js';
|
|
3
|
+
import { UnknownRow } from '../../util/type-utils.js';
|
|
4
4
|
import { KyselyPlugin, PluginTransformQueryArgs, PluginTransformResultArgs } from '../kysely-plugin.js';
|
|
5
5
|
/**
|
|
6
6
|
* Transforms all ValueNodes to immediate.
|
|
@@ -26,7 +26,7 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
26
26
|
* .execute()
|
|
27
27
|
* ```
|
|
28
28
|
*
|
|
29
|
-
* The generated SQL (
|
|
29
|
+
* The generated SQL (PostgreSQL):
|
|
30
30
|
*
|
|
31
31
|
* ```sql
|
|
32
32
|
* select "person"."id", count("pet"."id") as "pet_count"
|
|
@@ -62,7 +62,7 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
62
62
|
* console.log(result[0].owner_name)
|
|
63
63
|
* ```
|
|
64
64
|
*
|
|
65
|
-
* The generated SQL (
|
|
65
|
+
* The generated SQL (PostgreSQL):
|
|
66
66
|
*
|
|
67
67
|
* ```sql
|
|
68
68
|
* select
|
|
@@ -19,7 +19,7 @@ import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
|
19
19
|
* .execute()
|
|
20
20
|
* ```
|
|
21
21
|
*
|
|
22
|
-
* The generated SQL (
|
|
22
|
+
* The generated SQL (PostgreSQL):
|
|
23
23
|
*
|
|
24
24
|
* ```sql
|
|
25
25
|
* select "person"."id", count("pet"."id") as "pet_count"
|
|
@@ -66,7 +66,7 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
|
66
66
|
* Calls the `sum` function for the column given as the argument.
|
|
67
67
|
*
|
|
68
68
|
* If this is used in a `select` statement the type of the selected expression
|
|
69
|
-
* will be `number | string |
|
|
69
|
+
* will be `number | string | bigint` by default. This is because Kysely can't
|
|
70
70
|
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
71
71
|
* the largest javascript number and a string is returned instead. Most drivers
|
|
72
72
|
* allow you to configure the output type of large numbers and Kysely can't
|
|
@@ -83,12 +83,12 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
|
83
83
|
* .execute()
|
|
84
84
|
* ```
|
|
85
85
|
*/
|
|
86
|
-
sum<O extends number | string |
|
|
86
|
+
sum<O extends number | string | bigint, C extends StringReference<DB, TB> = any>(column: C): RawBuilder<O>;
|
|
87
87
|
/**
|
|
88
88
|
* Calls the `count` function for the column given as the argument.
|
|
89
89
|
*
|
|
90
90
|
* If this is used in a `select` statement the type of the selected expression
|
|
91
|
-
* will be `number | string |
|
|
91
|
+
* will be `number | string |bigint` by default. This is because Kysely can't
|
|
92
92
|
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
93
93
|
* the largest javascript number and a string is returned instead. Most drivers
|
|
94
94
|
* allow you to configure the output type of large numbers and Kysely can't
|
|
@@ -105,7 +105,7 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
|
105
105
|
* .execute()
|
|
106
106
|
* ```
|
|
107
107
|
*/
|
|
108
|
-
count<O extends number | string |
|
|
108
|
+
count<O extends number | string | bigint, C extends StringReference<DB, TB> = any>(column: C): RawBuilder<O>;
|
|
109
109
|
}
|
|
110
110
|
export interface FunctionBuilderProps {
|
|
111
111
|
readonly executor: QueryExecutor;
|
|
@@ -19,7 +19,7 @@ import { createQueryId } from '../util/query-id.js';
|
|
|
19
19
|
* .execute()
|
|
20
20
|
* ```
|
|
21
21
|
*
|
|
22
|
-
* The generated SQL (
|
|
22
|
+
* The generated SQL (PostgreSQL):
|
|
23
23
|
*
|
|
24
24
|
* ```sql
|
|
25
25
|
* select "person"."id", count("pet"."id") as "pet_count"
|
|
@@ -79,7 +79,7 @@ export class FunctionBuilder {
|
|
|
79
79
|
* Calls the `sum` function for the column given as the argument.
|
|
80
80
|
*
|
|
81
81
|
* If this is used in a `select` statement the type of the selected expression
|
|
82
|
-
* will be `number | string |
|
|
82
|
+
* will be `number | string | bigint` by default. This is because Kysely can't
|
|
83
83
|
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
84
84
|
* the largest javascript number and a string is returned instead. Most drivers
|
|
85
85
|
* allow you to configure the output type of large numbers and Kysely can't
|
|
@@ -103,7 +103,7 @@ export class FunctionBuilder {
|
|
|
103
103
|
* Calls the `count` function for the column given as the argument.
|
|
104
104
|
*
|
|
105
105
|
* If this is used in a `select` statement the type of the selected expression
|
|
106
|
-
* will be `number | string |
|
|
106
|
+
* will be `number | string |bigint` by default. This is because Kysely can't
|
|
107
107
|
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
108
108
|
* the largest javascript number and a string is returned instead. Most drivers
|
|
109
109
|
* allow you to configure the output type of large numbers and Kysely can't
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The result of an insert query.
|
|
3
|
+
*
|
|
4
|
+
* If the table has an auto incrementing primary key {@link insertId} will hold
|
|
5
|
+
* the generated id on dialects that support it. For example PostgreSQL doesn't
|
|
6
|
+
* return the id by default and {@link insertId} is undefined. On PostgreSQL you
|
|
7
|
+
* need to use {@link QueryBuilder.returning} or {@link QueryBuilder.returningAll}
|
|
8
|
+
* to get out the inserted id.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const result = await db
|
|
13
|
+
* .insertInto('person')
|
|
14
|
+
* .values(person)
|
|
15
|
+
* .executeTakeFirst()
|
|
16
|
+
*
|
|
17
|
+
* console.log(result.insertId)
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare class InsertResult {
|
|
21
|
+
#private;
|
|
22
|
+
constructor(insertId: bigint | undefined);
|
|
23
|
+
/**
|
|
24
|
+
* The auto incrementing primary key
|
|
25
|
+
*/
|
|
26
|
+
get insertId(): bigint | undefined;
|
|
27
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The result of an insert query.
|
|
3
|
+
*
|
|
4
|
+
* If the table has an auto incrementing primary key {@link insertId} will hold
|
|
5
|
+
* the generated id on dialects that support it. For example PostgreSQL doesn't
|
|
6
|
+
* return the id by default and {@link insertId} is undefined. On PostgreSQL you
|
|
7
|
+
* need to use {@link QueryBuilder.returning} or {@link QueryBuilder.returningAll}
|
|
8
|
+
* to get out the inserted id.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const result = await db
|
|
13
|
+
* .insertInto('person')
|
|
14
|
+
* .values(person)
|
|
15
|
+
* .executeTakeFirst()
|
|
16
|
+
*
|
|
17
|
+
* console.log(result.insertId)
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export class InsertResult {
|
|
21
|
+
#insertId;
|
|
22
|
+
constructor(insertId) {
|
|
23
|
+
this.#insertId = insertId;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The auto incrementing primary key
|
|
27
|
+
*/
|
|
28
|
+
get insertId() {
|
|
29
|
+
return this.#insertId;
|
|
30
|
+
}
|
|
31
|
+
}
|