kysely 0.19.10 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -4
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +10 -0
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +25 -0
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +5 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.js +16 -0
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +29 -0
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +6 -2
- package/dist/cjs/dialect/postgres/postgres-driver.js +24 -2
- package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -1
- package/dist/cjs/dialect/postgres/postgres-query-compiler.d.ts +1 -3
- package/dist/cjs/dialect/postgres/postgres-query-compiler.js +3 -8
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +3 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +3 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +10 -0
- package/dist/cjs/driver/database-connection.d.ts +1 -0
- package/dist/cjs/driver/dummy-driver.js +3 -0
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/operation-node/create-table-node.d.ts +9 -2
- package/dist/cjs/operation-node/create-table-node.js +18 -1
- package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/delete-query-node.js +6 -0
- package/dist/cjs/operation-node/explain-node.d.ts +16 -0
- package/dist/cjs/operation-node/explain-node.js +19 -0
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +2 -2
- package/dist/cjs/operation-node/insert-query-node.d.ts +4 -1
- package/dist/cjs/operation-node/insert-query-node.js +2 -1
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +15 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/references-node.d.ts +3 -1
- package/dist/cjs/operation-node/references-node.js +8 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/select-query-node.js +6 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/update-query-node.js +6 -0
- package/dist/cjs/parser/on-commit-action-parse.d.ts +2 -0
- package/dist/cjs/parser/on-commit-action-parse.js +11 -0
- package/dist/cjs/parser/on-modify-action-parser.d.ts +2 -0
- package/dist/cjs/parser/on-modify-action-parser.js +11 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +19 -1
- package/dist/cjs/query-builder/delete-query-builder.js +24 -0
- package/dist/cjs/query-builder/function-builder.d.ts +3 -3
- package/dist/cjs/query-builder/insert-query-builder.d.ts +21 -3
- package/dist/cjs/query-builder/insert-query-builder.js +26 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +65 -1
- package/dist/cjs/query-builder/select-query-builder.js +79 -4
- package/dist/cjs/query-builder/update-query-builder.d.ts +20 -1
- package/dist/cjs/query-builder/update-query-builder.js +25 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +7 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +75 -2
- package/dist/cjs/query-creator.d.ts +27 -0
- package/dist/cjs/query-creator.js +33 -0
- package/dist/cjs/query-executor/query-executor-base.d.ts +6 -0
- package/dist/cjs/query-executor/query-executor-base.js +19 -0
- package/dist/cjs/query-executor/query-executor.d.ts +11 -0
- package/dist/cjs/raw-builder/sql.d.ts +96 -96
- package/dist/cjs/raw-builder/sql.js +0 -96
- package/dist/cjs/schema/column-definition-builder.js +3 -2
- package/dist/cjs/schema/create-table-builder.d.ts +60 -6
- package/dist/cjs/schema/create-table-builder.js +72 -7
- package/dist/cjs/schema/create-type-builder.d.ts +9 -0
- package/dist/cjs/schema/create-type-builder.js +9 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +3 -2
- package/dist/cjs/util/deferred.d.ts +7 -0
- package/dist/cjs/util/deferred.js +28 -0
- package/dist/cjs/util/explainable.d.ts +5 -0
- package/dist/cjs/util/explainable.js +2 -0
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +10 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +25 -0
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +5 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +16 -0
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +29 -0
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +6 -2
- package/dist/esm/dialect/postgres/postgres-driver.js +24 -2
- package/dist/esm/dialect/postgres/postgres-introspector.js +7 -1
- package/dist/esm/dialect/postgres/postgres-query-compiler.d.ts +1 -3
- package/dist/esm/dialect/postgres/postgres-query-compiler.js +3 -8
- package/dist/esm/dialect/sqlite/sqlite-driver.js +3 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +3 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +10 -0
- package/dist/esm/driver/database-connection.d.ts +1 -0
- package/dist/esm/driver/dummy-driver.js +3 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/operation-node/create-table-node.d.ts +9 -2
- package/dist/esm/operation-node/create-table-node.js +17 -0
- package/dist/esm/operation-node/data-type-node.d.ts +1 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +3 -0
- package/dist/esm/operation-node/delete-query-node.js +6 -0
- package/dist/esm/operation-node/explain-node.d.ts +16 -0
- package/dist/esm/operation-node/explain-node.js +17 -0
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +2 -2
- package/dist/esm/operation-node/insert-query-node.d.ts +4 -1
- package/dist/esm/operation-node/insert-query-node.js +2 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +15 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/references-node.d.ts +3 -1
- package/dist/esm/operation-node/references-node.js +7 -0
- package/dist/esm/operation-node/select-query-node.d.ts +3 -0
- package/dist/esm/operation-node/select-query-node.js +6 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -0
- package/dist/esm/operation-node/update-query-node.js +6 -0
- package/dist/esm/parser/on-commit-action-parse.d.ts +2 -0
- package/dist/esm/parser/on-commit-action-parse.js +8 -0
- package/dist/esm/parser/on-modify-action-parser.d.ts +2 -0
- package/dist/esm/parser/on-modify-action-parser.js +8 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +19 -1
- package/dist/esm/query-builder/delete-query-builder.js +24 -0
- package/dist/esm/query-builder/function-builder.d.ts +3 -3
- package/dist/esm/query-builder/insert-query-builder.d.ts +21 -3
- package/dist/esm/query-builder/insert-query-builder.js +26 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +65 -1
- package/dist/esm/query-builder/select-query-builder.js +79 -4
- package/dist/esm/query-builder/update-query-builder.d.ts +20 -1
- package/dist/esm/query-builder/update-query-builder.js +25 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +7 -0
- package/dist/esm/query-compiler/default-query-compiler.js +75 -2
- package/dist/esm/query-creator.d.ts +27 -0
- package/dist/esm/query-creator.js +33 -0
- package/dist/esm/query-executor/query-executor-base.d.ts +6 -0
- package/dist/esm/query-executor/query-executor-base.js +19 -0
- package/dist/esm/query-executor/query-executor.d.ts +11 -0
- package/dist/esm/raw-builder/sql.d.ts +96 -96
- package/dist/esm/raw-builder/sql.js +0 -96
- package/dist/esm/schema/column-definition-builder.js +3 -2
- package/dist/esm/schema/create-table-builder.d.ts +60 -6
- package/dist/esm/schema/create-table-builder.js +72 -7
- package/dist/esm/schema/create-type-builder.d.ts +9 -0
- package/dist/esm/schema/create-type-builder.js +9 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +3 -2
- package/dist/esm/util/deferred.d.ts +7 -0
- package/dist/esm/util/deferred.js +25 -0
- package/dist/esm/util/explainable.d.ts +5 -0
- package/dist/esm/util/explainable.js +2 -0
- package/package.json +7 -2
|
@@ -102,6 +102,7 @@ export class OperationNodeTransformer {
|
|
|
102
102
|
SelectModifierNode: this.transformSelectModifier.bind(this),
|
|
103
103
|
CreateTypeNode: this.transformCreateType.bind(this),
|
|
104
104
|
DropTypeNode: this.transformDropType.bind(this),
|
|
105
|
+
ExplainNode: this.transformExplain.bind(this),
|
|
105
106
|
});
|
|
106
107
|
transformNode = (node) => {
|
|
107
108
|
if (!node) {
|
|
@@ -135,6 +136,7 @@ export class OperationNodeTransformer {
|
|
|
135
136
|
with: this.transformNode(node.with),
|
|
136
137
|
having: this.transformNode(node.having),
|
|
137
138
|
union: this.transformNodeList(node.union),
|
|
139
|
+
explain: this.transformNode(node.explain),
|
|
138
140
|
});
|
|
139
141
|
}
|
|
140
142
|
transformSelection(node) {
|
|
@@ -242,6 +244,8 @@ export class OperationNodeTransformer {
|
|
|
242
244
|
onDuplicateKey: this.transformNode(node.onDuplicateKey),
|
|
243
245
|
with: this.transformNode(node.with),
|
|
244
246
|
ignore: node.ignore,
|
|
247
|
+
replace: node.replace,
|
|
248
|
+
explain: this.transformNode(node.explain),
|
|
245
249
|
});
|
|
246
250
|
}
|
|
247
251
|
transformValues(node) {
|
|
@@ -260,6 +264,7 @@ export class OperationNodeTransformer {
|
|
|
260
264
|
with: this.transformNode(node.with),
|
|
261
265
|
orderBy: this.transformNode(node.orderBy),
|
|
262
266
|
limit: this.transformNode(node.limit),
|
|
267
|
+
explain: this.transformNode(node.explain),
|
|
263
268
|
});
|
|
264
269
|
}
|
|
265
270
|
transformReturning(node) {
|
|
@@ -277,6 +282,8 @@ export class OperationNodeTransformer {
|
|
|
277
282
|
temporary: node.temporary,
|
|
278
283
|
ifNotExists: node.ifNotExists,
|
|
279
284
|
onCommit: node.onCommit,
|
|
285
|
+
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|
286
|
+
endModifiers: this.transformNodeList(node.endModifiers),
|
|
280
287
|
});
|
|
281
288
|
}
|
|
282
289
|
transformColumnDefinition(node) {
|
|
@@ -343,6 +350,7 @@ export class OperationNodeTransformer {
|
|
|
343
350
|
updates: this.transformNodeList(node.updates),
|
|
344
351
|
returning: this.transformNode(node.returning),
|
|
345
352
|
with: this.transformNode(node.with),
|
|
353
|
+
explain: this.transformNode(node.explain),
|
|
346
354
|
});
|
|
347
355
|
}
|
|
348
356
|
transformColumnUpdate(node) {
|
|
@@ -641,4 +649,11 @@ export class OperationNodeTransformer {
|
|
|
641
649
|
// An Object.freezed leaf node. No need to clone.
|
|
642
650
|
return node;
|
|
643
651
|
}
|
|
652
|
+
transformExplain(node) {
|
|
653
|
+
return requireAllProps({
|
|
654
|
+
kind: 'ExplainNode',
|
|
655
|
+
format: node.format,
|
|
656
|
+
options: this.transformNode(node.options),
|
|
657
|
+
});
|
|
658
|
+
}
|
|
644
659
|
}
|
|
@@ -68,6 +68,7 @@ import { ValuesNode } from './values-node.js';
|
|
|
68
68
|
import { SelectModifierNode } from './select-modifier-node.js';
|
|
69
69
|
import { CreateTypeNode } from './create-type-node.js';
|
|
70
70
|
import { DropTypeNode } from './drop-type-node.js';
|
|
71
|
+
import { ExplainNode } from './explain-node.js';
|
|
71
72
|
export declare abstract class OperationNodeVisitor {
|
|
72
73
|
#private;
|
|
73
74
|
protected readonly nodeStack: OperationNode[];
|
|
@@ -142,4 +143,5 @@ export declare abstract class OperationNodeVisitor {
|
|
|
142
143
|
protected abstract visitSelectModifier(node: SelectModifierNode): void;
|
|
143
144
|
protected abstract visitCreateType(node: CreateTypeNode): void;
|
|
144
145
|
protected abstract visitDropType(node: DropTypeNode): void;
|
|
146
|
+
protected abstract visitExplain(node: ExplainNode): void;
|
|
145
147
|
}
|
|
@@ -75,6 +75,7 @@ export class OperationNodeVisitor {
|
|
|
75
75
|
SelectModifierNode: this.visitSelectModifier.bind(this),
|
|
76
76
|
CreateTypeNode: this.visitCreateType.bind(this),
|
|
77
77
|
DropTypeNode: this.visitDropType.bind(this),
|
|
78
|
+
ExplainNode: this.visitExplain.bind(this),
|
|
78
79
|
});
|
|
79
80
|
visitNode = (node) => {
|
|
80
81
|
this.nodeStack.push(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' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode';
|
|
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' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode';
|
|
2
2
|
export interface OperationNode {
|
|
3
3
|
readonly kind: OperationNodeKind;
|
|
4
4
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
2
|
import { ColumnNode } from './column-node.js';
|
|
3
3
|
import { TableNode } from './table-node.js';
|
|
4
|
-
|
|
4
|
+
import { ArrayItemType } from '../util/type-utils.js';
|
|
5
|
+
export declare const ON_MODIFY_FOREIGN_ACTIONS: readonly ["no action", "restrict", "cascade", "set null", "set default"];
|
|
6
|
+
export declare type OnModifyForeignAction = ArrayItemType<typeof ON_MODIFY_FOREIGN_ACTIONS>;
|
|
5
7
|
export interface ReferencesNode extends OperationNode {
|
|
6
8
|
readonly kind: 'ReferencesNode';
|
|
7
9
|
readonly table: TableNode;
|
|
@@ -14,6 +14,7 @@ import { WhereNode } from './where-node.js';
|
|
|
14
14
|
import { WithNode } from './with-node.js';
|
|
15
15
|
import { UnionNode } from './union-node.js';
|
|
16
16
|
import { SelectModifierNode } from './select-modifier-node.js';
|
|
17
|
+
import { ExplainNode } from './explain-node.js';
|
|
17
18
|
export interface SelectQueryNode extends OperationNode {
|
|
18
19
|
readonly kind: 'SelectQueryNode';
|
|
19
20
|
readonly from: FromNode;
|
|
@@ -30,6 +31,7 @@ export interface SelectQueryNode extends OperationNode {
|
|
|
30
31
|
readonly with?: WithNode;
|
|
31
32
|
readonly having?: HavingNode;
|
|
32
33
|
readonly union?: ReadonlyArray<UnionNode>;
|
|
34
|
+
readonly explain?: ExplainNode;
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
35
37
|
* @internal
|
|
@@ -48,4 +50,5 @@ export declare const SelectQueryNode: Readonly<{
|
|
|
48
50
|
cloneWithHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
|
|
49
51
|
cloneWithOrHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
|
|
50
52
|
cloneWithUnion(selectNode: SelectQueryNode, union: UnionNode): SelectQueryNode;
|
|
53
|
+
cloneWithExplain(selectNode: SelectQueryNode, explain: ExplainNode): SelectQueryNode;
|
|
51
54
|
}>;
|
|
@@ -8,6 +8,7 @@ import { ValueListNode } from './value-list-node.js';
|
|
|
8
8
|
import { WhereNode } from './where-node.js';
|
|
9
9
|
import { WithNode } from './with-node.js';
|
|
10
10
|
import { FromNode } from './from-node.js';
|
|
11
|
+
import { ExplainNode } from './explain-node.js';
|
|
11
12
|
export declare type UpdateValuesNode = ValueListNode | PrimitiveValueListNode;
|
|
12
13
|
export interface UpdateQueryNode extends OperationNode {
|
|
13
14
|
readonly kind: 'UpdateQueryNode';
|
|
@@ -18,6 +19,7 @@ export interface UpdateQueryNode extends OperationNode {
|
|
|
18
19
|
readonly updates?: ReadonlyArray<ColumnUpdateNode>;
|
|
19
20
|
readonly returning?: ReturningNode;
|
|
20
21
|
readonly with?: WithNode;
|
|
22
|
+
readonly explain?: ExplainNode;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* @internal
|
|
@@ -27,4 +29,5 @@ export declare const UpdateQueryNode: Readonly<{
|
|
|
27
29
|
create(table: TableExpressionNode, withNode?: WithNode): UpdateQueryNode;
|
|
28
30
|
cloneWithFromItems(updateQuery: UpdateQueryNode, fromItems: ReadonlyArray<TableExpressionNode>): UpdateQueryNode;
|
|
29
31
|
cloneWithUpdates(updateQuery: UpdateQueryNode, updates: ReadonlyArray<ColumnUpdateNode>): UpdateQueryNode;
|
|
32
|
+
cloneWithExplain(updateQuery: UpdateQueryNode, explain: ExplainNode): UpdateQueryNode;
|
|
30
33
|
}>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="./on-commit-action-parse.d.ts" />
|
|
2
|
+
import { ON_COMMIT_ACTIONS, } from '../operation-node/create-table-node.js';
|
|
3
|
+
export function parseOnCommitAction(action) {
|
|
4
|
+
if (ON_COMMIT_ACTIONS.includes(action)) {
|
|
5
|
+
return action;
|
|
6
|
+
}
|
|
7
|
+
throw new Error(`invalid OnCommitAction ${action}`);
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="./on-modify-action-parser.d.ts" />
|
|
2
|
+
import { ON_MODIFY_FOREIGN_ACTIONS, } from '../operation-node/references-node.js';
|
|
3
|
+
export function parseOnModifyForeignAction(action) {
|
|
4
|
+
if (ON_MODIFY_FOREIGN_ACTIONS.includes(action)) {
|
|
5
|
+
return action;
|
|
6
|
+
}
|
|
7
|
+
throw new Error(`invalid OnModifyForeignAction ${action}`);
|
|
8
|
+
}
|
|
@@ -20,7 +20,8 @@ import { Selectable } from '../util/column-type.js';
|
|
|
20
20
|
import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
|
|
21
21
|
import { AliasedQueryBuilder } from './select-query-builder.js';
|
|
22
22
|
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
23
|
-
|
|
23
|
+
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
24
|
+
export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable, Explainable {
|
|
24
25
|
#private;
|
|
25
26
|
constructor(props: DeleteQueryBuilderProps);
|
|
26
27
|
/**
|
|
@@ -744,6 +745,23 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
744
745
|
* error.
|
|
745
746
|
*/
|
|
746
747
|
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<O>;
|
|
748
|
+
/**
|
|
749
|
+
* Executes query with `explain` statement before `delete` keyword.
|
|
750
|
+
*
|
|
751
|
+
* ```ts
|
|
752
|
+
* const explained = await db
|
|
753
|
+
* .deleteFrom('person')
|
|
754
|
+
* .where('id', '=', 123)
|
|
755
|
+
* .explain('json')
|
|
756
|
+
* ```
|
|
757
|
+
*
|
|
758
|
+
* The generated SQL (MySQL):
|
|
759
|
+
*
|
|
760
|
+
* ```sql
|
|
761
|
+
* explain format=json delete from `person` where `id` = ?
|
|
762
|
+
* ```
|
|
763
|
+
*/
|
|
764
|
+
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: AnyRawBuilder): Promise<ER[]>;
|
|
747
765
|
}
|
|
748
766
|
export interface DeleteQueryBuilderProps {
|
|
749
767
|
readonly queryId: QueryId;
|
|
@@ -10,6 +10,7 @@ import { DeleteResult } from './delete-result.js';
|
|
|
10
10
|
import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
|
|
11
11
|
import { LimitNode } from '../operation-node/limit-node.js';
|
|
12
12
|
import { parseOrderBy, } from '../parser/order-by-parser.js';
|
|
13
|
+
import { ExplainNode } from '../operation-node/explain-node.js';
|
|
13
14
|
export class DeleteQueryBuilder {
|
|
14
15
|
#props;
|
|
15
16
|
constructor(props) {
|
|
@@ -293,5 +294,28 @@ export class DeleteQueryBuilder {
|
|
|
293
294
|
}
|
|
294
295
|
return result;
|
|
295
296
|
}
|
|
297
|
+
/**
|
|
298
|
+
* Executes query with `explain` statement before `delete` keyword.
|
|
299
|
+
*
|
|
300
|
+
* ```ts
|
|
301
|
+
* const explained = await db
|
|
302
|
+
* .deleteFrom('person')
|
|
303
|
+
* .where('id', '=', 123)
|
|
304
|
+
* .explain('json')
|
|
305
|
+
* ```
|
|
306
|
+
*
|
|
307
|
+
* The generated SQL (MySQL):
|
|
308
|
+
*
|
|
309
|
+
* ```sql
|
|
310
|
+
* explain format=json delete from `person` where `id` = ?
|
|
311
|
+
* ```
|
|
312
|
+
*/
|
|
313
|
+
async explain(format, options) {
|
|
314
|
+
const builder = new DeleteQueryBuilder({
|
|
315
|
+
...this.#props,
|
|
316
|
+
queryNode: DeleteQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options)),
|
|
317
|
+
});
|
|
318
|
+
return await builder.execute();
|
|
319
|
+
}
|
|
296
320
|
}
|
|
297
321
|
preventAwait(DeleteQueryBuilder, "don't await DeleteQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
|
|
@@ -85,7 +85,7 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
|
85
85
|
* .execute()
|
|
86
86
|
* ```
|
|
87
87
|
*/
|
|
88
|
-
avg<O extends number | string, C extends StringReference<DB, TB> =
|
|
88
|
+
avg<O extends number | string, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: C): RawBuilder<O>;
|
|
89
89
|
/**
|
|
90
90
|
* Calls the `sum` function for the column given as the argument.
|
|
91
91
|
*
|
|
@@ -107,7 +107,7 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
|
107
107
|
* .execute()
|
|
108
108
|
* ```
|
|
109
109
|
*/
|
|
110
|
-
sum<O extends number | string | bigint, C extends StringReference<DB, TB> =
|
|
110
|
+
sum<O extends number | string | bigint, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: C): RawBuilder<O>;
|
|
111
111
|
/**
|
|
112
112
|
* Calls the `count` function for the column given as the argument.
|
|
113
113
|
*
|
|
@@ -129,5 +129,5 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
|
129
129
|
* .execute()
|
|
130
130
|
* ```
|
|
131
131
|
*/
|
|
132
|
-
count<O extends number | string | bigint, C extends StringReference<DB, TB> =
|
|
132
|
+
count<O extends number | string | bigint, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: C): RawBuilder<O>;
|
|
133
133
|
}
|
|
@@ -3,7 +3,7 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
|
3
3
|
import { SelectExpression } from '../parser/select-parser.js';
|
|
4
4
|
import { InsertObject } from '../parser/insert-values-parser.js';
|
|
5
5
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|
6
|
-
import { MergePartial, SingleResultType } from '../util/type-utils.js';
|
|
6
|
+
import { AnyRawBuilder, MergePartial, SingleResultType } from '../util/type-utils.js';
|
|
7
7
|
import { MutationObject } from '../parser/update-set-parser.js';
|
|
8
8
|
import { Compilable } from '../util/compilable.js';
|
|
9
9
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
@@ -16,7 +16,8 @@ import { ComplexExpression } from '../parser/complex-expression-parser.js';
|
|
|
16
16
|
import { ReturningInterface } from './returning-interface.js';
|
|
17
17
|
import { OnConflictBuilder, OnConflictDoNothingBuilder, OnConflictUpdateBuilder } from './on-conflict-builder.js';
|
|
18
18
|
import { Selectable } from '../util/column-type.js';
|
|
19
|
-
|
|
19
|
+
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
20
|
+
export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable, Explainable {
|
|
20
21
|
#private;
|
|
21
22
|
constructor(props: InsertQueryBuilderProps);
|
|
22
23
|
/**
|
|
@@ -43,7 +44,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
43
44
|
*
|
|
44
45
|
* Insert a row into `person`:
|
|
45
46
|
* ```ts
|
|
46
|
-
* const
|
|
47
|
+
* const result = await db
|
|
47
48
|
* .insertInto('person')
|
|
48
49
|
* .values({
|
|
49
50
|
* first_name: 'Jennifer',
|
|
@@ -541,6 +542,23 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
541
542
|
* error.
|
|
542
543
|
*/
|
|
543
544
|
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<O>;
|
|
545
|
+
/**
|
|
546
|
+
* Executes query with `explain` statement before `insert` keyword.
|
|
547
|
+
*
|
|
548
|
+
* ```ts
|
|
549
|
+
* const explained = await db
|
|
550
|
+
* .insertInto('person')
|
|
551
|
+
* .values(values)
|
|
552
|
+
* .explain('json')
|
|
553
|
+
* ```
|
|
554
|
+
*
|
|
555
|
+
* The generated SQL (MySQL):
|
|
556
|
+
*
|
|
557
|
+
* ```sql
|
|
558
|
+
* explain format=json insert into `person` (`id`, `first_name`, `last_name`) values (?, ?, ?) (?, ?, ?)
|
|
559
|
+
* ```
|
|
560
|
+
*/
|
|
561
|
+
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: AnyRawBuilder): Promise<ER[]>;
|
|
544
562
|
}
|
|
545
563
|
export interface InsertQueryBuilderProps {
|
|
546
564
|
readonly queryId: QueryId;
|
|
@@ -13,6 +13,7 @@ import { parseComplexExpression, } from '../parser/complex-expression-parser.js'
|
|
|
13
13
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
14
14
|
import { OnConflictBuilder, } from './on-conflict-builder.js';
|
|
15
15
|
import { OnConflictNode } from '../operation-node/on-conflict-node.js';
|
|
16
|
+
import { ExplainNode } from '../operation-node/explain-node.js';
|
|
16
17
|
export class InsertQueryBuilder {
|
|
17
18
|
#props;
|
|
18
19
|
constructor(props) {
|
|
@@ -444,5 +445,30 @@ export class InsertQueryBuilder {
|
|
|
444
445
|
}
|
|
445
446
|
return result;
|
|
446
447
|
}
|
|
448
|
+
/**
|
|
449
|
+
* Executes query with `explain` statement before `insert` keyword.
|
|
450
|
+
*
|
|
451
|
+
* ```ts
|
|
452
|
+
* const explained = await db
|
|
453
|
+
* .insertInto('person')
|
|
454
|
+
* .values(values)
|
|
455
|
+
* .explain('json')
|
|
456
|
+
* ```
|
|
457
|
+
*
|
|
458
|
+
* The generated SQL (MySQL):
|
|
459
|
+
*
|
|
460
|
+
* ```sql
|
|
461
|
+
* explain format=json insert into `person` (`id`, `first_name`, `last_name`) values (?, ?, ?) (?, ?, ?)
|
|
462
|
+
* ```
|
|
463
|
+
*/
|
|
464
|
+
async explain(format, options) {
|
|
465
|
+
const builder = new InsertQueryBuilder({
|
|
466
|
+
...this.#props,
|
|
467
|
+
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
468
|
+
explain: ExplainNode.create(format, options),
|
|
469
|
+
}),
|
|
470
|
+
});
|
|
471
|
+
return await builder.execute();
|
|
472
|
+
}
|
|
447
473
|
}
|
|
448
474
|
preventAwait(InsertQueryBuilder, "don't await InsertQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
|
|
@@ -18,7 +18,8 @@ import { WhereInterface } from './where-interface.js';
|
|
|
18
18
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
19
19
|
import { HavingInterface } from './having-interface.js';
|
|
20
20
|
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
21
|
-
|
|
21
|
+
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
22
|
+
export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, HavingInterface<DB, TB>, OperationNodeSource, Compilable, Explainable {
|
|
22
23
|
#private;
|
|
23
24
|
constructor(props: SelectQueryBuilderProps);
|
|
24
25
|
/**
|
|
@@ -1343,6 +1344,69 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1343
1344
|
* error.
|
|
1344
1345
|
*/
|
|
1345
1346
|
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<O>;
|
|
1347
|
+
/**
|
|
1348
|
+
* Executes the query and streams the rows.
|
|
1349
|
+
*
|
|
1350
|
+
* The optional argument `chunkSize` defines how many rows to fetch from the database
|
|
1351
|
+
* at a time. It only affects some dialects like PostgreSQL that support it.
|
|
1352
|
+
*
|
|
1353
|
+
* ### Examples
|
|
1354
|
+
*
|
|
1355
|
+
* ```ts
|
|
1356
|
+
* const stream = db.
|
|
1357
|
+
* .selectFrom('person')
|
|
1358
|
+
* .select(['first_name', 'last_name'])
|
|
1359
|
+
* .where('gender', '=', 'other')
|
|
1360
|
+
* .stream()
|
|
1361
|
+
*
|
|
1362
|
+
* for await (const person of stream) {
|
|
1363
|
+
* console.log(person.first_name)
|
|
1364
|
+
*
|
|
1365
|
+
* if (person.last_name === 'Something') {
|
|
1366
|
+
* // Breaking or returning before the stream has ended will release
|
|
1367
|
+
* // the database connection and invalidate the stream.
|
|
1368
|
+
* break
|
|
1369
|
+
* }
|
|
1370
|
+
* }
|
|
1371
|
+
* ```
|
|
1372
|
+
*/
|
|
1373
|
+
stream(chunkSize?: number): AsyncIterableIterator<O>;
|
|
1374
|
+
/**
|
|
1375
|
+
* Executes query with `explain` statement before `select` keyword.
|
|
1376
|
+
*
|
|
1377
|
+
* ```ts
|
|
1378
|
+
* const explained = await db
|
|
1379
|
+
* .selectFrom('person')
|
|
1380
|
+
* .where('gender', '=', 'female')
|
|
1381
|
+
* .selectAll()
|
|
1382
|
+
* .explain('json')
|
|
1383
|
+
* ```
|
|
1384
|
+
*
|
|
1385
|
+
* The generated SQL (MySQL):
|
|
1386
|
+
*
|
|
1387
|
+
* ```sql
|
|
1388
|
+
* explain format=json select * from `person` where `gender` = ?
|
|
1389
|
+
* ```
|
|
1390
|
+
*
|
|
1391
|
+
* You can also execute `explain analyze` statements.
|
|
1392
|
+
*
|
|
1393
|
+
* ```ts
|
|
1394
|
+
* import { sql } from 'kysely'
|
|
1395
|
+
*
|
|
1396
|
+
* const explained = await db
|
|
1397
|
+
* .selectFrom('person')
|
|
1398
|
+
* .where('gender', '=', 'female')
|
|
1399
|
+
* .selectAll()
|
|
1400
|
+
* .explain('json', sql`analyze`)
|
|
1401
|
+
* ```
|
|
1402
|
+
*
|
|
1403
|
+
* The generated SQL (PostgreSQL):
|
|
1404
|
+
*
|
|
1405
|
+
* ```sql
|
|
1406
|
+
* explain (analyze, format json) select * from "person" where "gender" = $1
|
|
1407
|
+
* ```
|
|
1408
|
+
*/
|
|
1409
|
+
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: AnyRawBuilder): Promise<ER[]>;
|
|
1346
1410
|
}
|
|
1347
1411
|
export interface SelectQueryBuilderProps {
|
|
1348
1412
|
readonly queryId: QueryId;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="./select-query-builder.d.ts" />
|
|
2
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
|
+
import { SelectModifierNode } from '../operation-node/select-modifier-node.js';
|
|
3
4
|
import { parseJoin, } from '../parser/join-parser.js';
|
|
4
5
|
import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
|
|
5
6
|
import { parseExistFilter, parseReferenceFilter, parseWhereFilter, parseHavingFilter, parseNotExistFilter, } from '../parser/filter-parser.js';
|
|
@@ -14,7 +15,7 @@ import { parseGroupBy } from '../parser/group-by-parser.js';
|
|
|
14
15
|
import { parseUnion } from '../parser/union-parser.js';
|
|
15
16
|
import { NoResultError } from './no-result-error.js';
|
|
16
17
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
17
|
-
import {
|
|
18
|
+
import { ExplainNode } from '../operation-node/explain-node.js';
|
|
18
19
|
export class SelectQueryBuilder {
|
|
19
20
|
#props;
|
|
20
21
|
constructor(props) {
|
|
@@ -627,9 +628,8 @@ export class SelectQueryBuilder {
|
|
|
627
628
|
* Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
|
|
628
629
|
*/
|
|
629
630
|
async execute() {
|
|
630
|
-
const
|
|
631
|
-
const
|
|
632
|
-
const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
|
|
631
|
+
const compiledQuery = this.compile();
|
|
632
|
+
const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
|
|
633
633
|
return result.rows;
|
|
634
634
|
}
|
|
635
635
|
/**
|
|
@@ -655,6 +655,81 @@ export class SelectQueryBuilder {
|
|
|
655
655
|
}
|
|
656
656
|
return result;
|
|
657
657
|
}
|
|
658
|
+
/**
|
|
659
|
+
* Executes the query and streams the rows.
|
|
660
|
+
*
|
|
661
|
+
* The optional argument `chunkSize` defines how many rows to fetch from the database
|
|
662
|
+
* at a time. It only affects some dialects like PostgreSQL that support it.
|
|
663
|
+
*
|
|
664
|
+
* ### Examples
|
|
665
|
+
*
|
|
666
|
+
* ```ts
|
|
667
|
+
* const stream = db.
|
|
668
|
+
* .selectFrom('person')
|
|
669
|
+
* .select(['first_name', 'last_name'])
|
|
670
|
+
* .where('gender', '=', 'other')
|
|
671
|
+
* .stream()
|
|
672
|
+
*
|
|
673
|
+
* for await (const person of stream) {
|
|
674
|
+
* console.log(person.first_name)
|
|
675
|
+
*
|
|
676
|
+
* if (person.last_name === 'Something') {
|
|
677
|
+
* // Breaking or returning before the stream has ended will release
|
|
678
|
+
* // the database connection and invalidate the stream.
|
|
679
|
+
* break
|
|
680
|
+
* }
|
|
681
|
+
* }
|
|
682
|
+
* ```
|
|
683
|
+
*/
|
|
684
|
+
async *stream(chunkSize = 100) {
|
|
685
|
+
const compildQuery = this.compile();
|
|
686
|
+
const stream = this.#props.executor.stream(compildQuery, chunkSize, this.#props.queryId);
|
|
687
|
+
for await (const item of stream) {
|
|
688
|
+
yield* item.rows;
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
/**
|
|
692
|
+
* Executes query with `explain` statement before `select` keyword.
|
|
693
|
+
*
|
|
694
|
+
* ```ts
|
|
695
|
+
* const explained = await db
|
|
696
|
+
* .selectFrom('person')
|
|
697
|
+
* .where('gender', '=', 'female')
|
|
698
|
+
* .selectAll()
|
|
699
|
+
* .explain('json')
|
|
700
|
+
* ```
|
|
701
|
+
*
|
|
702
|
+
* The generated SQL (MySQL):
|
|
703
|
+
*
|
|
704
|
+
* ```sql
|
|
705
|
+
* explain format=json select * from `person` where `gender` = ?
|
|
706
|
+
* ```
|
|
707
|
+
*
|
|
708
|
+
* You can also execute `explain analyze` statements.
|
|
709
|
+
*
|
|
710
|
+
* ```ts
|
|
711
|
+
* import { sql } from 'kysely'
|
|
712
|
+
*
|
|
713
|
+
* const explained = await db
|
|
714
|
+
* .selectFrom('person')
|
|
715
|
+
* .where('gender', '=', 'female')
|
|
716
|
+
* .selectAll()
|
|
717
|
+
* .explain('json', sql`analyze`)
|
|
718
|
+
* ```
|
|
719
|
+
*
|
|
720
|
+
* The generated SQL (PostgreSQL):
|
|
721
|
+
*
|
|
722
|
+
* ```sql
|
|
723
|
+
* explain (analyze, format json) select * from "person" where "gender" = $1
|
|
724
|
+
* ```
|
|
725
|
+
*/
|
|
726
|
+
async explain(format, options) {
|
|
727
|
+
const builder = new SelectQueryBuilder({
|
|
728
|
+
...this.#props,
|
|
729
|
+
queryNode: SelectQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options)),
|
|
730
|
+
});
|
|
731
|
+
return await builder.execute();
|
|
732
|
+
}
|
|
658
733
|
}
|
|
659
734
|
preventAwait(SelectQueryBuilder, "don't await SelectQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
|
|
660
735
|
/**
|
|
@@ -20,7 +20,8 @@ import { NoResultErrorConstructor } from './no-result-error.js';
|
|
|
20
20
|
import { Selectable } from '../util/column-type.js';
|
|
21
21
|
import { AliasedQueryBuilder } from './select-query-builder.js';
|
|
22
22
|
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
23
|
-
|
|
23
|
+
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
24
|
+
export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable, Explainable {
|
|
24
25
|
#private;
|
|
25
26
|
constructor(props: UpdateQueryBuilderProps);
|
|
26
27
|
/**
|
|
@@ -809,6 +810,24 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
809
810
|
* error.
|
|
810
811
|
*/
|
|
811
812
|
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<O>;
|
|
813
|
+
/**
|
|
814
|
+
* Executes query with `explain` statement before `update` keyword.
|
|
815
|
+
*
|
|
816
|
+
* ```ts
|
|
817
|
+
* const explained = await db
|
|
818
|
+
* .updateTable('person')
|
|
819
|
+
* .set(updates)
|
|
820
|
+
* .where('id', '=', 123)
|
|
821
|
+
* .explain('json')
|
|
822
|
+
* ```
|
|
823
|
+
*
|
|
824
|
+
* The generated SQL (MySQL):
|
|
825
|
+
*
|
|
826
|
+
* ```sql
|
|
827
|
+
* explain format=json update `person` set `first_name` = ?, `last_name` = ? where `id` = ?
|
|
828
|
+
* ```
|
|
829
|
+
*/
|
|
830
|
+
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: AnyRawBuilder): Promise<ER[]>;
|
|
812
831
|
}
|
|
813
832
|
export interface UpdateQueryBuilderProps {
|
|
814
833
|
readonly queryId: QueryId;
|