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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ExplainFormat } from '../util/explainable.js';
|
|
2
|
+
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
3
|
+
import { OperationNode } from './operation-node.js';
|
|
4
|
+
import { RawNode } from './raw-node.js';
|
|
5
|
+
export interface ExplainNode extends OperationNode {
|
|
6
|
+
readonly kind: 'ExplainNode';
|
|
7
|
+
readonly format?: ExplainFormat;
|
|
8
|
+
readonly options?: RawNode;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare const ExplainNode: Readonly<{
|
|
14
|
+
is(node: OperationNode): node is ExplainNode;
|
|
15
|
+
create(format?: ExplainFormat, options?: AnyRawBuilder): ExplainNode;
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExplainNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.ExplainNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'ExplainNode';
|
|
11
|
+
},
|
|
12
|
+
create(format, options) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'ExplainNode',
|
|
15
|
+
format,
|
|
16
|
+
options: options?.toOperationNode(),
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
});
|
|
@@ -20,8 +20,8 @@ export declare const ForeignKeyConstraintNode: Readonly<{
|
|
|
20
20
|
create(sourceColumns: ReadonlyArray<ColumnNode>, targetTable: TableNode, targetColumns: ReadonlyArray<ColumnNode>, constraintName?: string): ForeignKeyConstraintNode;
|
|
21
21
|
cloneWith(node: ForeignKeyConstraintNode, props: ForeignKeyConstraintNodeProps): Readonly<{
|
|
22
22
|
name?: IdentifierNode | undefined;
|
|
23
|
-
onDelete?:
|
|
24
|
-
onUpdate?:
|
|
23
|
+
onDelete?: "no action" | "restrict" | "cascade" | "set null" | "set default" | undefined;
|
|
24
|
+
onUpdate?: "no action" | "restrict" | "cascade" | "set null" | "set default" | undefined;
|
|
25
25
|
kind: 'ForeignKeyConstraintNode';
|
|
26
26
|
columns: ReadonlyArray<ColumnNode>;
|
|
27
27
|
references: ReferencesNode;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ColumnNode } from './column-node.js';
|
|
2
|
+
import { ExplainNode } from './explain-node.js';
|
|
2
3
|
import { OnConflictNode } from './on-conflict-node.js';
|
|
3
4
|
import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
|
|
4
5
|
import { OperationNode } from './operation-node.js';
|
|
@@ -19,12 +20,14 @@ export interface InsertQueryNode extends OperationNode {
|
|
|
19
20
|
readonly onDuplicateKey?: OnDuplicateKeyNode;
|
|
20
21
|
readonly with?: WithNode;
|
|
21
22
|
readonly ignore?: boolean;
|
|
23
|
+
readonly replace?: boolean;
|
|
24
|
+
readonly explain?: ExplainNode;
|
|
22
25
|
}
|
|
23
26
|
/**
|
|
24
27
|
* @internal
|
|
25
28
|
*/
|
|
26
29
|
export declare const InsertQueryNode: Readonly<{
|
|
27
30
|
is(node: OperationNode): node is InsertQueryNode;
|
|
28
|
-
create(into: TableNode, withNode?: WithNode): InsertQueryNode;
|
|
31
|
+
create(into: TableNode, withNode?: WithNode, replace?: boolean): InsertQueryNode;
|
|
29
32
|
cloneWith(insertQuery: InsertQueryNode, props: InsertQueryNodeProps): InsertQueryNode;
|
|
30
33
|
}>;
|
|
@@ -9,11 +9,12 @@ exports.InsertQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
9
9
|
is(node) {
|
|
10
10
|
return node.kind === 'InsertQueryNode';
|
|
11
11
|
},
|
|
12
|
-
create(into, withNode) {
|
|
12
|
+
create(into, withNode, replace) {
|
|
13
13
|
return (0, object_utils_js_1.freeze)({
|
|
14
14
|
kind: 'InsertQueryNode',
|
|
15
15
|
into,
|
|
16
16
|
...(withNode && { with: withNode }),
|
|
17
|
+
replace,
|
|
17
18
|
});
|
|
18
19
|
},
|
|
19
20
|
cloneWith(insertQuery, props) {
|
|
@@ -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
|
/**
|
|
72
73
|
* Transforms an operation node tree into another one.
|
|
73
74
|
*
|
|
@@ -172,4 +173,5 @@ export declare class OperationNodeTransformer {
|
|
|
172
173
|
protected transformValue(node: ValueNode): ValueNode;
|
|
173
174
|
protected transformPrimitiveValueList(node: PrimitiveValueListNode): PrimitiveValueListNode;
|
|
174
175
|
protected transformOperator(node: OperatorNode): OperatorNode;
|
|
176
|
+
protected transformExplain(node: ExplainNode): ExplainNode;
|
|
175
177
|
}
|
|
@@ -104,6 +104,7 @@ class OperationNodeTransformer {
|
|
|
104
104
|
SelectModifierNode: this.transformSelectModifier.bind(this),
|
|
105
105
|
CreateTypeNode: this.transformCreateType.bind(this),
|
|
106
106
|
DropTypeNode: this.transformDropType.bind(this),
|
|
107
|
+
ExplainNode: this.transformExplain.bind(this),
|
|
107
108
|
});
|
|
108
109
|
transformNode = (node) => {
|
|
109
110
|
if (!node) {
|
|
@@ -137,6 +138,7 @@ class OperationNodeTransformer {
|
|
|
137
138
|
with: this.transformNode(node.with),
|
|
138
139
|
having: this.transformNode(node.having),
|
|
139
140
|
union: this.transformNodeList(node.union),
|
|
141
|
+
explain: this.transformNode(node.explain),
|
|
140
142
|
});
|
|
141
143
|
}
|
|
142
144
|
transformSelection(node) {
|
|
@@ -244,6 +246,8 @@ class OperationNodeTransformer {
|
|
|
244
246
|
onDuplicateKey: this.transformNode(node.onDuplicateKey),
|
|
245
247
|
with: this.transformNode(node.with),
|
|
246
248
|
ignore: node.ignore,
|
|
249
|
+
replace: node.replace,
|
|
250
|
+
explain: this.transformNode(node.explain),
|
|
247
251
|
});
|
|
248
252
|
}
|
|
249
253
|
transformValues(node) {
|
|
@@ -262,6 +266,7 @@ class OperationNodeTransformer {
|
|
|
262
266
|
with: this.transformNode(node.with),
|
|
263
267
|
orderBy: this.transformNode(node.orderBy),
|
|
264
268
|
limit: this.transformNode(node.limit),
|
|
269
|
+
explain: this.transformNode(node.explain),
|
|
265
270
|
});
|
|
266
271
|
}
|
|
267
272
|
transformReturning(node) {
|
|
@@ -279,6 +284,8 @@ class OperationNodeTransformer {
|
|
|
279
284
|
temporary: node.temporary,
|
|
280
285
|
ifNotExists: node.ifNotExists,
|
|
281
286
|
onCommit: node.onCommit,
|
|
287
|
+
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|
288
|
+
endModifiers: this.transformNodeList(node.endModifiers),
|
|
282
289
|
});
|
|
283
290
|
}
|
|
284
291
|
transformColumnDefinition(node) {
|
|
@@ -345,6 +352,7 @@ class OperationNodeTransformer {
|
|
|
345
352
|
updates: this.transformNodeList(node.updates),
|
|
346
353
|
returning: this.transformNode(node.returning),
|
|
347
354
|
with: this.transformNode(node.with),
|
|
355
|
+
explain: this.transformNode(node.explain),
|
|
348
356
|
});
|
|
349
357
|
}
|
|
350
358
|
transformColumnUpdate(node) {
|
|
@@ -643,5 +651,12 @@ class OperationNodeTransformer {
|
|
|
643
651
|
// An Object.freezed leaf node. No need to clone.
|
|
644
652
|
return node;
|
|
645
653
|
}
|
|
654
|
+
transformExplain(node) {
|
|
655
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
656
|
+
kind: 'ExplainNode',
|
|
657
|
+
format: node.format,
|
|
658
|
+
options: this.transformNode(node.options),
|
|
659
|
+
});
|
|
660
|
+
}
|
|
646
661
|
}
|
|
647
662
|
exports.OperationNodeTransformer = OperationNodeTransformer;
|
|
@@ -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
|
}
|
|
@@ -77,6 +77,7 @@ class OperationNodeVisitor {
|
|
|
77
77
|
SelectModifierNode: this.visitSelectModifier.bind(this),
|
|
78
78
|
CreateTypeNode: this.visitCreateType.bind(this),
|
|
79
79
|
DropTypeNode: this.visitDropType.bind(this),
|
|
80
|
+
ExplainNode: this.visitExplain.bind(this),
|
|
80
81
|
});
|
|
81
82
|
visitNode = (node) => {
|
|
82
83
|
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;
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReferencesNode = void 0;
|
|
3
|
+
exports.ReferencesNode = exports.ON_MODIFY_FOREIGN_ACTIONS = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
exports.ON_MODIFY_FOREIGN_ACTIONS = [
|
|
6
|
+
'no action',
|
|
7
|
+
'restrict',
|
|
8
|
+
'cascade',
|
|
9
|
+
'set null',
|
|
10
|
+
'set default',
|
|
11
|
+
];
|
|
5
12
|
/**
|
|
6
13
|
* @internal
|
|
7
14
|
*/
|
|
@@ -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
|
}>;
|
|
@@ -104,4 +104,10 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
104
104
|
: (0, object_utils_js_1.freeze)([union]),
|
|
105
105
|
});
|
|
106
106
|
},
|
|
107
|
+
cloneWithExplain(selectNode, explain) {
|
|
108
|
+
return (0, object_utils_js_1.freeze)({
|
|
109
|
+
...selectNode,
|
|
110
|
+
explain,
|
|
111
|
+
});
|
|
112
|
+
},
|
|
107
113
|
});
|
|
@@ -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,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseOnCommitAction = void 0;
|
|
4
|
+
const create_table_node_js_1 = require("../operation-node/create-table-node.js");
|
|
5
|
+
function parseOnCommitAction(action) {
|
|
6
|
+
if (create_table_node_js_1.ON_COMMIT_ACTIONS.includes(action)) {
|
|
7
|
+
return action;
|
|
8
|
+
}
|
|
9
|
+
throw new Error(`invalid OnCommitAction ${action}`);
|
|
10
|
+
}
|
|
11
|
+
exports.parseOnCommitAction = parseOnCommitAction;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseOnModifyForeignAction = void 0;
|
|
4
|
+
const references_node_js_1 = require("../operation-node/references-node.js");
|
|
5
|
+
function parseOnModifyForeignAction(action) {
|
|
6
|
+
if (references_node_js_1.ON_MODIFY_FOREIGN_ACTIONS.includes(action)) {
|
|
7
|
+
return action;
|
|
8
|
+
}
|
|
9
|
+
throw new Error(`invalid OnModifyForeignAction ${action}`);
|
|
10
|
+
}
|
|
11
|
+
exports.parseOnModifyForeignAction = parseOnModifyForeignAction;
|
|
@@ -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;
|
|
@@ -12,6 +12,7 @@ const delete_result_js_1 = require("./delete-result.js");
|
|
|
12
12
|
const delete_query_node_js_1 = require("../operation-node/delete-query-node.js");
|
|
13
13
|
const limit_node_js_1 = require("../operation-node/limit-node.js");
|
|
14
14
|
const order_by_parser_js_1 = require("../parser/order-by-parser.js");
|
|
15
|
+
const explain_node_js_1 = require("../operation-node/explain-node.js");
|
|
15
16
|
class DeleteQueryBuilder {
|
|
16
17
|
#props;
|
|
17
18
|
constructor(props) {
|
|
@@ -295,6 +296,29 @@ class DeleteQueryBuilder {
|
|
|
295
296
|
}
|
|
296
297
|
return result;
|
|
297
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Executes query with `explain` statement before `delete` keyword.
|
|
301
|
+
*
|
|
302
|
+
* ```ts
|
|
303
|
+
* const explained = await db
|
|
304
|
+
* .deleteFrom('person')
|
|
305
|
+
* .where('id', '=', 123)
|
|
306
|
+
* .explain('json')
|
|
307
|
+
* ```
|
|
308
|
+
*
|
|
309
|
+
* The generated SQL (MySQL):
|
|
310
|
+
*
|
|
311
|
+
* ```sql
|
|
312
|
+
* explain format=json delete from `person` where `id` = ?
|
|
313
|
+
* ```
|
|
314
|
+
*/
|
|
315
|
+
async explain(format, options) {
|
|
316
|
+
const builder = new DeleteQueryBuilder({
|
|
317
|
+
...this.#props,
|
|
318
|
+
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithExplain(this.#props.queryNode, explain_node_js_1.ExplainNode.create(format, options)),
|
|
319
|
+
});
|
|
320
|
+
return await builder.execute();
|
|
321
|
+
}
|
|
298
322
|
}
|
|
299
323
|
exports.DeleteQueryBuilder = DeleteQueryBuilder;
|
|
300
324
|
(0, prevent_await_js_1.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;
|
|
@@ -15,6 +15,7 @@ const complex_expression_parser_js_1 = require("../parser/complex-expression-par
|
|
|
15
15
|
const column_node_js_1 = require("../operation-node/column-node.js");
|
|
16
16
|
const on_conflict_builder_js_1 = require("./on-conflict-builder.js");
|
|
17
17
|
const on_conflict_node_js_1 = require("../operation-node/on-conflict-node.js");
|
|
18
|
+
const explain_node_js_1 = require("../operation-node/explain-node.js");
|
|
18
19
|
class InsertQueryBuilder {
|
|
19
20
|
#props;
|
|
20
21
|
constructor(props) {
|
|
@@ -446,6 +447,31 @@ class InsertQueryBuilder {
|
|
|
446
447
|
}
|
|
447
448
|
return result;
|
|
448
449
|
}
|
|
450
|
+
/**
|
|
451
|
+
* Executes query with `explain` statement before `insert` keyword.
|
|
452
|
+
*
|
|
453
|
+
* ```ts
|
|
454
|
+
* const explained = await db
|
|
455
|
+
* .insertInto('person')
|
|
456
|
+
* .values(values)
|
|
457
|
+
* .explain('json')
|
|
458
|
+
* ```
|
|
459
|
+
*
|
|
460
|
+
* The generated SQL (MySQL):
|
|
461
|
+
*
|
|
462
|
+
* ```sql
|
|
463
|
+
* explain format=json insert into `person` (`id`, `first_name`, `last_name`) values (?, ?, ?) (?, ?, ?)
|
|
464
|
+
* ```
|
|
465
|
+
*/
|
|
466
|
+
async explain(format, options) {
|
|
467
|
+
const builder = new InsertQueryBuilder({
|
|
468
|
+
...this.#props,
|
|
469
|
+
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
470
|
+
explain: explain_node_js_1.ExplainNode.create(format, options),
|
|
471
|
+
}),
|
|
472
|
+
});
|
|
473
|
+
return await builder.execute();
|
|
474
|
+
}
|
|
449
475
|
}
|
|
450
476
|
exports.InsertQueryBuilder = InsertQueryBuilder;
|
|
451
477
|
(0, prevent_await_js_1.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;
|