kysely 0.27.1 → 0.27.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/dialect/database-introspector.d.ts +1 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.js +13 -2
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +4 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +8 -0
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-driver.js +2 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/cjs/driver/database-connection.d.ts +1 -1
- package/dist/cjs/expression/expression-builder.d.ts +30 -4
- package/dist/cjs/expression/expression-builder.js +5 -0
- package/dist/cjs/index.d.ts +7 -1
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/migration/migrator.d.ts +19 -2
- package/dist/cjs/migration/migrator.js +77 -43
- package/dist/cjs/operation-node/add-index-node.js +1 -1
- package/dist/cjs/operation-node/cast-node.d.ts +13 -0
- package/dist/cjs/operation-node/cast-node.js +19 -0
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
- package/dist/cjs/operation-node/data-type-node.d.ts +5 -1
- package/dist/cjs/operation-node/data-type-node.js +55 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +4 -0
- package/dist/cjs/operation-node/delete-query-node.js +12 -0
- package/dist/cjs/operation-node/fetch-node.d.ts +15 -0
- package/dist/cjs/operation-node/fetch-node.js +19 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +4 -1
- package/dist/cjs/operation-node/insert-query-node.js +5 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/matched-node.d.ts +13 -0
- package/dist/cjs/operation-node/matched-node.js +19 -0
- package/dist/cjs/operation-node/merge-query-node.d.ts +25 -0
- package/dist/cjs/operation-node/merge-query-node.js +45 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +50 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +10 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +5 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/query-node.d.ts +10 -3
- package/dist/cjs/operation-node/query-node.js +15 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -0
- package/dist/cjs/operation-node/select-query-node.js +6 -0
- package/dist/cjs/operation-node/top-node.d.ts +14 -0
- package/dist/cjs/operation-node/top-node.js +19 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +7 -1
- package/dist/cjs/operation-node/update-query-node.js +11 -0
- package/dist/cjs/parser/binary-operation-parser.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.js +2 -2
- package/dist/cjs/parser/data-type-parser.js +7 -3
- package/dist/cjs/parser/fetch-parser.d.ts +2 -0
- package/dist/cjs/parser/fetch-parser.js +18 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +3 -3
- package/dist/cjs/parser/merge-parser.d.ts +9 -0
- package/dist/cjs/parser/merge-parser.js +32 -0
- package/dist/cjs/parser/table-parser.d.ts +4 -3
- package/dist/cjs/parser/top-parser.d.ts +2 -0
- package/dist/cjs/parser/top-parser.js +20 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +4 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +99 -0
- package/dist/cjs/query-builder/delete-query-builder.js +120 -0
- package/dist/cjs/query-builder/insert-query-builder.d.ts +73 -3
- package/dist/cjs/query-builder/insert-query-builder.js +242 -0
- package/dist/cjs/query-builder/merge-query-builder.d.ts +557 -0
- package/dist/cjs/query-builder/merge-query-builder.js +518 -0
- package/dist/cjs/query-builder/merge-result.d.ts +4 -0
- package/dist/cjs/query-builder/merge-result.js +10 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +102 -7
- package/dist/cjs/query-builder/select-query-builder.js +14 -0
- package/dist/cjs/query-builder/update-query-builder.d.ts +82 -3
- package/dist/cjs/query-builder/update-query-builder.js +98 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +94 -10
- package/dist/cjs/query-compiler/query-compiler.d.ts +2 -1
- package/dist/cjs/query-creator.d.ts +40 -2
- package/dist/cjs/query-creator.js +9 -0
- package/dist/cjs/schema/alter-table-add-index-builder.js +6 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +13 -1
- package/dist/cjs/schema/column-definition-builder.js +15 -1
- package/dist/cjs/util/infer-result.d.ts +2 -1
- package/dist/cjs/util/type-utils.d.ts +3 -2
- package/dist/esm/dialect/database-introspector.d.ts +1 -0
- package/dist/esm/dialect/mssql/mssql-introspector.js +13 -2
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +4 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +8 -0
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +2 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +2 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/driver/database-connection.d.ts +1 -1
- package/dist/esm/expression/expression-builder.d.ts +30 -4
- package/dist/esm/expression/expression-builder.js +5 -0
- package/dist/esm/index.d.ts +7 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/migration/migrator.d.ts +19 -2
- package/dist/esm/migration/migrator.js +76 -42
- package/dist/esm/operation-node/add-index-node.js +1 -1
- package/dist/esm/operation-node/cast-node.d.ts +13 -0
- package/dist/esm/operation-node/cast-node.js +17 -0
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
- package/dist/esm/operation-node/data-type-node.d.ts +5 -1
- package/dist/esm/operation-node/data-type-node.js +53 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +4 -0
- package/dist/esm/operation-node/delete-query-node.js +12 -0
- package/dist/esm/operation-node/fetch-node.d.ts +15 -0
- package/dist/esm/operation-node/fetch-node.js +17 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +4 -1
- package/dist/esm/operation-node/insert-query-node.js +5 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/matched-node.d.ts +13 -0
- package/dist/esm/operation-node/matched-node.js +17 -0
- package/dist/esm/operation-node/merge-query-node.d.ts +25 -0
- package/dist/esm/operation-node/merge-query-node.js +43 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/esm/operation-node/operation-node-transformer.js +50 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +10 -0
- package/dist/esm/operation-node/operation-node-visitor.js +5 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/query-node.d.ts +10 -3
- package/dist/esm/operation-node/query-node.js +15 -1
- package/dist/esm/operation-node/select-query-node.d.ts +5 -0
- package/dist/esm/operation-node/select-query-node.js +6 -0
- package/dist/esm/operation-node/top-node.d.ts +14 -0
- package/dist/esm/operation-node/top-node.js +17 -0
- package/dist/esm/operation-node/update-query-node.d.ts +7 -1
- package/dist/esm/operation-node/update-query-node.js +11 -0
- package/dist/esm/parser/binary-operation-parser.d.ts +1 -1
- package/dist/esm/parser/binary-operation-parser.js +2 -2
- package/dist/esm/parser/data-type-parser.js +8 -4
- package/dist/esm/parser/fetch-parser.d.ts +2 -0
- package/dist/esm/parser/fetch-parser.js +15 -0
- package/dist/esm/parser/insert-values-parser.d.ts +3 -3
- package/dist/esm/parser/merge-parser.d.ts +9 -0
- package/dist/esm/parser/merge-parser.js +28 -0
- package/dist/esm/parser/table-parser.d.ts +4 -3
- package/dist/esm/parser/top-parser.d.ts +2 -0
- package/dist/esm/parser/top-parser.js +17 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +4 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +99 -0
- package/dist/esm/query-builder/delete-query-builder.js +120 -0
- package/dist/esm/query-builder/insert-query-builder.d.ts +73 -3
- package/dist/esm/query-builder/insert-query-builder.js +242 -0
- package/dist/esm/query-builder/merge-query-builder.d.ts +557 -0
- package/dist/esm/query-builder/merge-query-builder.js +512 -0
- package/dist/esm/query-builder/merge-result.d.ts +4 -0
- package/dist/esm/query-builder/merge-result.js +7 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +102 -7
- package/dist/esm/query-builder/select-query-builder.js +14 -0
- package/dist/esm/query-builder/update-query-builder.d.ts +82 -3
- package/dist/esm/query-builder/update-query-builder.js +98 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/esm/query-compiler/default-query-compiler.js +94 -10
- package/dist/esm/query-compiler/query-compiler.d.ts +2 -1
- package/dist/esm/query-creator.d.ts +40 -2
- package/dist/esm/query-creator.js +10 -1
- package/dist/esm/schema/alter-table-add-index-builder.js +7 -3
- package/dist/esm/schema/column-definition-builder.d.ts +13 -1
- package/dist/esm/schema/column-definition-builder.js +15 -1
- package/dist/esm/util/infer-result.d.ts +2 -1
- package/dist/esm/util/type-utils.d.ts +3 -2
- package/package.json +22 -21
|
@@ -86,6 +86,12 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
86
86
|
offset,
|
|
87
87
|
});
|
|
88
88
|
},
|
|
89
|
+
cloneWithFetch(selectNode, fetch) {
|
|
90
|
+
return (0, object_utils_js_1.freeze)({
|
|
91
|
+
...selectNode,
|
|
92
|
+
fetch,
|
|
93
|
+
});
|
|
94
|
+
},
|
|
89
95
|
cloneWithHaving(selectNode, operation) {
|
|
90
96
|
return (0, object_utils_js_1.freeze)({
|
|
91
97
|
...selectNode,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OperationNode } from './operation-node.js';
|
|
2
|
+
export type TopModifier = 'percent' | 'with ties' | 'percent with ties';
|
|
3
|
+
export interface TopNode extends OperationNode {
|
|
4
|
+
readonly kind: 'TopNode';
|
|
5
|
+
readonly expression: number | bigint;
|
|
6
|
+
readonly modifiers?: TopModifier;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare const TopNode: Readonly<{
|
|
12
|
+
is(node: OperationNode): node is TopNode;
|
|
13
|
+
create(expression: number | bigint, modifiers?: TopModifier): TopNode;
|
|
14
|
+
}>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TopNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.TopNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'TopNode';
|
|
11
|
+
},
|
|
12
|
+
create(expression, modifiers) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'TopNode',
|
|
15
|
+
expression,
|
|
16
|
+
modifiers,
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
});
|
|
@@ -8,10 +8,12 @@ import { WhereNode } from './where-node.js';
|
|
|
8
8
|
import { WithNode } from './with-node.js';
|
|
9
9
|
import { FromNode } from './from-node.js';
|
|
10
10
|
import { ExplainNode } from './explain-node.js';
|
|
11
|
+
import { LimitNode } from './limit-node.js';
|
|
12
|
+
import { TopNode } from './top-node.js';
|
|
11
13
|
export type UpdateValuesNode = ValueListNode | PrimitiveValueListNode;
|
|
12
14
|
export interface UpdateQueryNode extends OperationNode {
|
|
13
15
|
readonly kind: 'UpdateQueryNode';
|
|
14
|
-
readonly table
|
|
16
|
+
readonly table?: OperationNode;
|
|
15
17
|
readonly from?: FromNode;
|
|
16
18
|
readonly joins?: ReadonlyArray<JoinNode>;
|
|
17
19
|
readonly where?: WhereNode;
|
|
@@ -19,6 +21,8 @@ export interface UpdateQueryNode extends OperationNode {
|
|
|
19
21
|
readonly returning?: ReturningNode;
|
|
20
22
|
readonly with?: WithNode;
|
|
21
23
|
readonly explain?: ExplainNode;
|
|
24
|
+
readonly limit?: LimitNode;
|
|
25
|
+
readonly top?: TopNode;
|
|
22
26
|
}
|
|
23
27
|
/**
|
|
24
28
|
* @internal
|
|
@@ -26,6 +30,8 @@ export interface UpdateQueryNode extends OperationNode {
|
|
|
26
30
|
export declare const UpdateQueryNode: Readonly<{
|
|
27
31
|
is(node: OperationNode): node is UpdateQueryNode;
|
|
28
32
|
create(table: OperationNode, withNode?: WithNode): UpdateQueryNode;
|
|
33
|
+
createWithoutTable(): UpdateQueryNode;
|
|
29
34
|
cloneWithFromItems(updateQuery: UpdateQueryNode, fromItems: ReadonlyArray<OperationNode>): UpdateQueryNode;
|
|
30
35
|
cloneWithUpdates(updateQuery: UpdateQueryNode, updates: ReadonlyArray<ColumnUpdateNode>): UpdateQueryNode;
|
|
36
|
+
cloneWithLimit(updateQuery: UpdateQueryNode, limit: LimitNode): UpdateQueryNode;
|
|
31
37
|
}>;
|
|
@@ -17,6 +17,11 @@ exports.UpdateQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
17
17
|
...(withNode && { with: withNode }),
|
|
18
18
|
});
|
|
19
19
|
},
|
|
20
|
+
createWithoutTable() {
|
|
21
|
+
return (0, object_utils_js_1.freeze)({
|
|
22
|
+
kind: 'UpdateQueryNode',
|
|
23
|
+
});
|
|
24
|
+
},
|
|
20
25
|
cloneWithFromItems(updateQuery, fromItems) {
|
|
21
26
|
return (0, object_utils_js_1.freeze)({
|
|
22
27
|
...updateQuery,
|
|
@@ -33,4 +38,10 @@ exports.UpdateQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
33
38
|
: updates,
|
|
34
39
|
});
|
|
35
40
|
},
|
|
41
|
+
cloneWithLimit(updateQuery, limit) {
|
|
42
|
+
return (0, object_utils_js_1.freeze)({
|
|
43
|
+
...updateQuery,
|
|
44
|
+
limit,
|
|
45
|
+
});
|
|
46
|
+
},
|
|
36
47
|
});
|
|
@@ -18,4 +18,4 @@ export declare function parseValueBinaryOperationOrExpression(args: any[]): Oper
|
|
|
18
18
|
export declare function parseValueBinaryOperation(left: ReferenceExpression<any, any>, operator: BinaryOperatorExpression, right: OperandValueExpressionOrList<any, any, any>): BinaryOperationNode;
|
|
19
19
|
export declare function parseReferentialBinaryOperation(left: ReferenceExpression<any, any>, operator: BinaryOperatorExpression, right: OperandValueExpressionOrList<any, any, any>): BinaryOperationNode;
|
|
20
20
|
export declare function parseFilterObject(obj: Readonly<FilterObject<any, any>>, combinator: 'and' | 'or'): OperationNode;
|
|
21
|
-
export declare function parseFilterList(list: ReadonlyArray<OperationNodeSource | OperationNode>, combinator: 'and' | 'or'): OperationNode;
|
|
21
|
+
export declare function parseFilterList(list: ReadonlyArray<OperationNodeSource | OperationNode>, combinator: 'and' | 'or', withParens?: boolean): OperationNode;
|
|
@@ -38,7 +38,7 @@ function parseFilterObject(obj, combinator) {
|
|
|
38
38
|
.map(([k, v]) => parseValueBinaryOperation(k, needsIsOperator(v) ? 'is' : '=', v)), combinator);
|
|
39
39
|
}
|
|
40
40
|
exports.parseFilterObject = parseFilterObject;
|
|
41
|
-
function parseFilterList(list, combinator) {
|
|
41
|
+
function parseFilterList(list, combinator, withParens = true) {
|
|
42
42
|
const combine = combinator === 'and' ? and_node_js_1.AndNode.create : or_node_js_1.OrNode.create;
|
|
43
43
|
if (list.length === 0) {
|
|
44
44
|
return binary_operation_node_js_1.BinaryOperationNode.create(value_node_js_1.ValueNode.createImmediate(1), operator_node_js_1.OperatorNode.create('='), value_node_js_1.ValueNode.createImmediate(combinator === 'and' ? 1 : 0));
|
|
@@ -47,7 +47,7 @@ function parseFilterList(list, combinator) {
|
|
|
47
47
|
for (let i = 1; i < list.length; ++i) {
|
|
48
48
|
node = combine(node, toOperationNode(list[i]));
|
|
49
49
|
}
|
|
50
|
-
if (list.length > 1) {
|
|
50
|
+
if (list.length > 1 && withParens) {
|
|
51
51
|
return parens_node_js_1.ParensNode.create(node);
|
|
52
52
|
}
|
|
53
53
|
return node;
|
|
@@ -4,8 +4,12 @@ exports.parseDataTypeExpression = void 0;
|
|
|
4
4
|
const data_type_node_js_1 = require("../operation-node/data-type-node.js");
|
|
5
5
|
const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
|
|
6
6
|
function parseDataTypeExpression(dataType) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
if ((0, operation_node_source_js_1.isOperationNodeSource)(dataType)) {
|
|
8
|
+
return dataType.toOperationNode();
|
|
9
|
+
}
|
|
10
|
+
if ((0, data_type_node_js_1.isColumnDataType)(dataType)) {
|
|
11
|
+
return data_type_node_js_1.DataTypeNode.create(dataType);
|
|
12
|
+
}
|
|
13
|
+
throw new Error(`invalid column data type ${JSON.stringify(dataType)}`);
|
|
10
14
|
}
|
|
11
15
|
exports.parseDataTypeExpression = parseDataTypeExpression;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseFetch = void 0;
|
|
4
|
+
const fetch_node_js_1 = require("../operation-node/fetch-node.js");
|
|
5
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
6
|
+
function parseFetch(rowCount, modifier) {
|
|
7
|
+
if (!(0, object_utils_js_1.isNumber)(rowCount) && !(0, object_utils_js_1.isBigInt)(rowCount)) {
|
|
8
|
+
throw new Error(`Invalid fetch row count: ${rowCount}`);
|
|
9
|
+
}
|
|
10
|
+
if (!isFetchModifier(modifier)) {
|
|
11
|
+
throw new Error(`Invalid fetch modifier: ${modifier}`);
|
|
12
|
+
}
|
|
13
|
+
return fetch_node_js_1.FetchNode.create(rowCount, modifier);
|
|
14
|
+
}
|
|
15
|
+
exports.parseFetch = parseFetch;
|
|
16
|
+
function isFetchModifier(value) {
|
|
17
|
+
return value === 'only' || value === 'with ties';
|
|
18
|
+
}
|
|
@@ -9,6 +9,6 @@ export type InsertObject<DB, TB extends keyof DB> = {
|
|
|
9
9
|
[C in NullableInsertKeys<DB[TB]>]?: ValueExpression<DB, TB, InsertType<DB[TB][C]>> | undefined;
|
|
10
10
|
};
|
|
11
11
|
export type InsertObjectOrList<DB, TB extends keyof DB> = InsertObject<DB, TB> | ReadonlyArray<InsertObject<DB, TB>>;
|
|
12
|
-
export type InsertObjectOrListFactory<DB, TB extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => InsertObjectOrList<DB, TB>;
|
|
13
|
-
export type InsertExpression<DB, TB extends keyof DB> = InsertObjectOrList<DB, TB> | InsertObjectOrListFactory<DB, TB>;
|
|
14
|
-
export declare function parseInsertExpression(arg: InsertExpression<any, any>): [ReadonlyArray<ColumnNode>, ValuesNode];
|
|
12
|
+
export type InsertObjectOrListFactory<DB, TB extends keyof DB, UT extends keyof DB = never> = (eb: ExpressionBuilder<DB, TB | UT>) => InsertObjectOrList<DB, TB>;
|
|
13
|
+
export type InsertExpression<DB, TB extends keyof DB, UT extends keyof DB = never> = InsertObjectOrList<DB, TB> | InsertObjectOrListFactory<DB, TB, UT>;
|
|
14
|
+
export declare function parseInsertExpression(arg: InsertExpression<any, any, any>): [ReadonlyArray<ColumnNode>, ValuesNode];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|
2
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
|
+
import { OperationNode } from '../operation-node/operation-node.js';
|
|
4
|
+
import { WhenNode } from '../operation-node/when-node.js';
|
|
5
|
+
export declare function parseMergeWhen(type: {
|
|
6
|
+
isMatched: boolean;
|
|
7
|
+
bySource?: boolean;
|
|
8
|
+
}, args?: any[], refRight?: boolean): WhenNode;
|
|
9
|
+
export declare function parseMergeThen(result: 'delete' | 'do nothing' | OperationNodeSource | InsertQueryNode): OperationNode;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseMergeThen = exports.parseMergeWhen = void 0;
|
|
4
|
+
const matched_node_js_1 = require("../operation-node/matched-node.js");
|
|
5
|
+
const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
|
|
6
|
+
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
7
|
+
const when_node_js_1 = require("../operation-node/when-node.js");
|
|
8
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
9
|
+
const binary_operation_parser_js_1 = require("./binary-operation-parser.js");
|
|
10
|
+
function parseMergeWhen(type, args, refRight) {
|
|
11
|
+
return when_node_js_1.WhenNode.create((0, binary_operation_parser_js_1.parseFilterList)([
|
|
12
|
+
matched_node_js_1.MatchedNode.create(!type.isMatched, type.bySource),
|
|
13
|
+
...(args && args.length > 0
|
|
14
|
+
? [
|
|
15
|
+
args.length === 3 && refRight
|
|
16
|
+
? (0, binary_operation_parser_js_1.parseReferentialBinaryOperation)(args[0], args[1], args[2])
|
|
17
|
+
: (0, binary_operation_parser_js_1.parseValueBinaryOperationOrExpression)(args),
|
|
18
|
+
]
|
|
19
|
+
: []),
|
|
20
|
+
], 'and', false));
|
|
21
|
+
}
|
|
22
|
+
exports.parseMergeWhen = parseMergeWhen;
|
|
23
|
+
function parseMergeThen(result) {
|
|
24
|
+
if ((0, object_utils_js_1.isString)(result)) {
|
|
25
|
+
return raw_node_js_1.RawNode.create([result], []);
|
|
26
|
+
}
|
|
27
|
+
if ((0, operation_node_source_js_1.isOperationNodeSource)(result)) {
|
|
28
|
+
return result.toOperationNode();
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
exports.parseMergeThen = parseMergeThen;
|
|
@@ -6,16 +6,17 @@ import { AliasedExpression } from '../expression/expression.js';
|
|
|
6
6
|
import { DrainOuterGeneric, ShallowRecord } from '../util/type-utils.js';
|
|
7
7
|
export type TableExpression<DB, TB extends keyof DB> = AnyAliasedTable<DB> | AnyTable<DB> | AliasedExpressionOrFactory<DB, TB>;
|
|
8
8
|
export type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
|
|
9
|
-
export type TableReference<DB> =
|
|
9
|
+
export type TableReference<DB> = SimpleTableReference<DB> | AliasedExpression<any, any>;
|
|
10
|
+
export type SimpleTableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB>;
|
|
10
11
|
export type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
|
|
11
12
|
export type TableReferenceOrList<DB> = TableReference<DB> | ReadonlyArray<TableReference<DB>>;
|
|
12
13
|
export type From<DB, TE> = DrainOuterGeneric<{
|
|
13
14
|
[C in keyof DB | ExtractAliasFromTableExpression<DB, TE>]: C extends ExtractAliasFromTableExpression<DB, TE> ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? DB[C] : never;
|
|
14
15
|
}>;
|
|
15
16
|
export type FromTables<DB, TB extends keyof DB, TE> = DrainOuterGeneric<TB | ExtractAliasFromTableExpression<DB, TE>>;
|
|
16
|
-
export type ExtractTableAlias<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : never;
|
|
17
|
+
export type ExtractTableAlias<DB, TE> = TE extends `${string} as ${infer TA}` ? TA extends keyof DB ? TA : never : TE extends keyof DB ? TE : never;
|
|
17
18
|
export type PickTableWithAlias<DB, T extends AnyAliasedTable<DB>> = T extends `${infer TB} as ${infer A}` ? TB extends keyof DB ? ShallowRecord<A, DB[TB]> : never : never;
|
|
18
|
-
type ExtractAliasFromTableExpression<DB, TE> = TE extends string ?
|
|
19
|
+
type ExtractAliasFromTableExpression<DB, TE> = TE extends string ? TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : never : TE extends AliasedExpression<any, infer QA> ? QA : TE extends (qb: any) => AliasedExpression<any, infer QA> ? QA : never;
|
|
19
20
|
type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : never;
|
|
20
21
|
type AnyTable<DB> = keyof DB & string;
|
|
21
22
|
export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): OperationNode[];
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseTop = void 0;
|
|
4
|
+
const top_node_js_1 = require("../operation-node/top-node.js");
|
|
5
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
6
|
+
function parseTop(expression, modifiers) {
|
|
7
|
+
if (!(0, object_utils_js_1.isNumber)(expression) && !(0, object_utils_js_1.isBigInt)(expression)) {
|
|
8
|
+
throw new Error(`Invalid top expression: ${expression}`);
|
|
9
|
+
}
|
|
10
|
+
if (!(0, object_utils_js_1.isUndefined)(modifiers) && !isTopModifiers(modifiers)) {
|
|
11
|
+
throw new Error(`Invalid top modifiers: ${modifiers}`);
|
|
12
|
+
}
|
|
13
|
+
return top_node_js_1.TopNode.create(expression, modifiers);
|
|
14
|
+
}
|
|
15
|
+
exports.parseTop = parseTop;
|
|
16
|
+
function isTopModifiers(modifiers) {
|
|
17
|
+
return (modifiers === 'percent' ||
|
|
18
|
+
modifiers === 'with ties' ||
|
|
19
|
+
modifiers === 'percent with ties');
|
|
20
|
+
}
|
|
@@ -29,6 +29,7 @@ const ROOT_OPERATION_NODES = (0, object_utils_js_1.freeze)({
|
|
|
29
29
|
RawNode: true,
|
|
30
30
|
SelectQueryNode: true,
|
|
31
31
|
UpdateQueryNode: true,
|
|
32
|
+
MergeQueryNode: true,
|
|
32
33
|
});
|
|
33
34
|
class WithSchemaTransformer extends operation_node_transformer_js_1.OperationNodeTransformer {
|
|
34
35
|
#schema;
|
|
@@ -103,6 +104,9 @@ class WithSchemaTransformer extends operation_node_transformer_js_1.OperationNod
|
|
|
103
104
|
this.#collectSchemableIdsFromTableExpr(join.table, schemableIds);
|
|
104
105
|
}
|
|
105
106
|
}
|
|
107
|
+
if ('using' in node && node.using) {
|
|
108
|
+
this.#collectSchemableIdsFromTableExpr(node.using, schemableIds);
|
|
109
|
+
}
|
|
106
110
|
return schemableIds;
|
|
107
111
|
}
|
|
108
112
|
#collectCTEs(node) {
|
|
@@ -399,6 +399,46 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
399
399
|
* ```
|
|
400
400
|
*/
|
|
401
401
|
clearWhere(): DeleteQueryBuilder<DB, TB, O>;
|
|
402
|
+
/**
|
|
403
|
+
* Changes a `delete from` query into a `delete top from` query.
|
|
404
|
+
*
|
|
405
|
+
* `top` clause is only supported by some dialects like MS SQL Server.
|
|
406
|
+
*
|
|
407
|
+
* ### Examples
|
|
408
|
+
*
|
|
409
|
+
* Delete the first 5 rows:
|
|
410
|
+
*
|
|
411
|
+
* ```ts
|
|
412
|
+
* await db
|
|
413
|
+
* .deleteFrom('person')
|
|
414
|
+
* .top(5)
|
|
415
|
+
* .where('age', '>', 18)
|
|
416
|
+
* .executeTakeFirstOrThrow()
|
|
417
|
+
* ```
|
|
418
|
+
*
|
|
419
|
+
* The generated SQL (MS SQL Server):
|
|
420
|
+
*
|
|
421
|
+
* ```sql
|
|
422
|
+
* delete top(5) from "person" where "age" > @1
|
|
423
|
+
* ```
|
|
424
|
+
*
|
|
425
|
+
* Delete the first 50% of rows:
|
|
426
|
+
*
|
|
427
|
+
* ```ts
|
|
428
|
+
* await db
|
|
429
|
+
* .deleteFrom('person')
|
|
430
|
+
* .top(50, 'percent')
|
|
431
|
+
* .where('age', '>', 18)
|
|
432
|
+
* .executeTakeFirstOrThrow()
|
|
433
|
+
* ```
|
|
434
|
+
*
|
|
435
|
+
* The generated SQL (MS SQL Server):
|
|
436
|
+
*
|
|
437
|
+
* ```sql
|
|
438
|
+
* delete top(50) percent from "person" where "age" > @1
|
|
439
|
+
* ```
|
|
440
|
+
*/
|
|
441
|
+
top(expression: number | bigint, modifiers?: 'percent'): DeleteQueryBuilder<DB, TB, O>;
|
|
402
442
|
/**
|
|
403
443
|
* Adds a `using` clause to the query.
|
|
404
444
|
*
|
|
@@ -762,6 +802,65 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
762
802
|
*/
|
|
763
803
|
returningAll<T extends TB>(table: T): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, T, O>>;
|
|
764
804
|
returningAll(): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, TB, O>>;
|
|
805
|
+
/**
|
|
806
|
+
* Clears all `returning` clauses from the query.
|
|
807
|
+
*
|
|
808
|
+
* ### Examples
|
|
809
|
+
*
|
|
810
|
+
* ```ts
|
|
811
|
+
* db.deleteFrom('pet')
|
|
812
|
+
* .returningAll()
|
|
813
|
+
* .where('name', '=', 'Max')
|
|
814
|
+
* .clearReturning()
|
|
815
|
+
* ```
|
|
816
|
+
*
|
|
817
|
+
* The generated SQL(PostgreSQL):
|
|
818
|
+
*
|
|
819
|
+
* ```sql
|
|
820
|
+
* delete from "pet" where "name" = "Max"
|
|
821
|
+
* ```
|
|
822
|
+
*/
|
|
823
|
+
clearReturning(): DeleteQueryBuilder<DB, TB, DeleteResult>;
|
|
824
|
+
/**
|
|
825
|
+
* Clears the `limit` clause from the query.
|
|
826
|
+
*
|
|
827
|
+
* ### Examples
|
|
828
|
+
*
|
|
829
|
+
* ```ts
|
|
830
|
+
* db.deleteFrom('pet')
|
|
831
|
+
* .returningAll()
|
|
832
|
+
* .where('name', '=', 'Max')
|
|
833
|
+
* .limit(5)
|
|
834
|
+
* .clearLimit()
|
|
835
|
+
* ```
|
|
836
|
+
*
|
|
837
|
+
* The generated SQL(PostgreSQL):
|
|
838
|
+
*
|
|
839
|
+
* ```sql
|
|
840
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
841
|
+
* ```
|
|
842
|
+
*/
|
|
843
|
+
clearLimit(): DeleteQueryBuilder<DB, TB, O>;
|
|
844
|
+
/**
|
|
845
|
+
* Clears the `order by` clause from the query.
|
|
846
|
+
*
|
|
847
|
+
* ### Examples
|
|
848
|
+
*
|
|
849
|
+
* ```ts
|
|
850
|
+
* db.deleteFrom('pet')
|
|
851
|
+
* .returningAll()
|
|
852
|
+
* .where('name', '=', 'Max')
|
|
853
|
+
* .orderBy('id')
|
|
854
|
+
* .clearOrderBy()
|
|
855
|
+
* ```
|
|
856
|
+
*
|
|
857
|
+
* The generated SQL(PostgreSQL):
|
|
858
|
+
*
|
|
859
|
+
* ```sql
|
|
860
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
861
|
+
* ```
|
|
862
|
+
*/
|
|
863
|
+
clearOrderBy(): DeleteQueryBuilder<DB, TB, O>;
|
|
765
864
|
/**
|
|
766
865
|
* Adds an `order by` clause to the query.
|
|
767
866
|
*
|
|
@@ -14,6 +14,7 @@ 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
15
|
const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
|
|
16
16
|
const value_parser_js_1 = require("../parser/value-parser.js");
|
|
17
|
+
const top_parser_js_1 = require("../parser/top-parser.js");
|
|
17
18
|
class DeleteQueryBuilder {
|
|
18
19
|
#props;
|
|
19
20
|
constructor(props) {
|
|
@@ -37,6 +38,51 @@ class DeleteQueryBuilder {
|
|
|
37
38
|
queryNode: query_node_js_1.QueryNode.cloneWithoutWhere(this.#props.queryNode),
|
|
38
39
|
});
|
|
39
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Changes a `delete from` query into a `delete top from` query.
|
|
43
|
+
*
|
|
44
|
+
* `top` clause is only supported by some dialects like MS SQL Server.
|
|
45
|
+
*
|
|
46
|
+
* ### Examples
|
|
47
|
+
*
|
|
48
|
+
* Delete the first 5 rows:
|
|
49
|
+
*
|
|
50
|
+
* ```ts
|
|
51
|
+
* await db
|
|
52
|
+
* .deleteFrom('person')
|
|
53
|
+
* .top(5)
|
|
54
|
+
* .where('age', '>', 18)
|
|
55
|
+
* .executeTakeFirstOrThrow()
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* The generated SQL (MS SQL Server):
|
|
59
|
+
*
|
|
60
|
+
* ```sql
|
|
61
|
+
* delete top(5) from "person" where "age" > @1
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* Delete the first 50% of rows:
|
|
65
|
+
*
|
|
66
|
+
* ```ts
|
|
67
|
+
* await db
|
|
68
|
+
* .deleteFrom('person')
|
|
69
|
+
* .top(50, 'percent')
|
|
70
|
+
* .where('age', '>', 18)
|
|
71
|
+
* .executeTakeFirstOrThrow()
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* The generated SQL (MS SQL Server):
|
|
75
|
+
*
|
|
76
|
+
* ```sql
|
|
77
|
+
* delete top(50) percent from "person" where "age" > @1
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
top(expression, modifiers) {
|
|
81
|
+
return new DeleteQueryBuilder({
|
|
82
|
+
...this.#props,
|
|
83
|
+
queryNode: query_node_js_1.QueryNode.cloneWithTop(this.#props.queryNode, (0, top_parser_js_1.parseTop)(expression, modifiers)),
|
|
84
|
+
});
|
|
85
|
+
}
|
|
40
86
|
using(tables) {
|
|
41
87
|
return new DeleteQueryBuilder({
|
|
42
88
|
...this.#props,
|
|
@@ -79,6 +125,80 @@ class DeleteQueryBuilder {
|
|
|
79
125
|
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
|
|
80
126
|
});
|
|
81
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Clears all `returning` clauses from the query.
|
|
130
|
+
*
|
|
131
|
+
* ### Examples
|
|
132
|
+
*
|
|
133
|
+
* ```ts
|
|
134
|
+
* db.deleteFrom('pet')
|
|
135
|
+
* .returningAll()
|
|
136
|
+
* .where('name', '=', 'Max')
|
|
137
|
+
* .clearReturning()
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* The generated SQL(PostgreSQL):
|
|
141
|
+
*
|
|
142
|
+
* ```sql
|
|
143
|
+
* delete from "pet" where "name" = "Max"
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
clearReturning() {
|
|
147
|
+
return new DeleteQueryBuilder({
|
|
148
|
+
...this.#props,
|
|
149
|
+
queryNode: query_node_js_1.QueryNode.cloneWithoutReturning(this.#props.queryNode),
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Clears the `limit` clause from the query.
|
|
154
|
+
*
|
|
155
|
+
* ### Examples
|
|
156
|
+
*
|
|
157
|
+
* ```ts
|
|
158
|
+
* db.deleteFrom('pet')
|
|
159
|
+
* .returningAll()
|
|
160
|
+
* .where('name', '=', 'Max')
|
|
161
|
+
* .limit(5)
|
|
162
|
+
* .clearLimit()
|
|
163
|
+
* ```
|
|
164
|
+
*
|
|
165
|
+
* The generated SQL(PostgreSQL):
|
|
166
|
+
*
|
|
167
|
+
* ```sql
|
|
168
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
clearLimit() {
|
|
172
|
+
return new DeleteQueryBuilder({
|
|
173
|
+
...this.#props,
|
|
174
|
+
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithoutLimit(this.#props.queryNode),
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Clears the `order by` clause from the query.
|
|
179
|
+
*
|
|
180
|
+
* ### Examples
|
|
181
|
+
*
|
|
182
|
+
* ```ts
|
|
183
|
+
* db.deleteFrom('pet')
|
|
184
|
+
* .returningAll()
|
|
185
|
+
* .where('name', '=', 'Max')
|
|
186
|
+
* .orderBy('id')
|
|
187
|
+
* .clearOrderBy()
|
|
188
|
+
* ```
|
|
189
|
+
*
|
|
190
|
+
* The generated SQL(PostgreSQL):
|
|
191
|
+
*
|
|
192
|
+
* ```sql
|
|
193
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
clearOrderBy() {
|
|
197
|
+
return new DeleteQueryBuilder({
|
|
198
|
+
...this.#props,
|
|
199
|
+
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithoutOrderBy(this.#props.queryNode),
|
|
200
|
+
});
|
|
201
|
+
}
|
|
82
202
|
/**
|
|
83
203
|
* Adds an `order by` clause to the query.
|
|
84
204
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
2
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
3
|
import { SelectExpression, SelectCallback } from '../parser/select-parser.js';
|
|
4
|
-
import {
|
|
4
|
+
import { InsertExpression } from '../parser/insert-values-parser.js';
|
|
5
5
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|
6
6
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
7
7
|
import { NarrowPartial, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
|
|
@@ -184,8 +184,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
184
184
|
* }))
|
|
185
185
|
* ```
|
|
186
186
|
*/
|
|
187
|
-
values(insert:
|
|
188
|
-
values(insert: InsertObjectOrListFactory<DB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
187
|
+
values(insert: InsertExpression<DB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
189
188
|
/**
|
|
190
189
|
* Sets the columns to insert.
|
|
191
190
|
*
|
|
@@ -242,6 +241,14 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
242
241
|
expression(expression: ExpressionOrFactory<DB, TB, any>): InsertQueryBuilder<DB, TB, O>;
|
|
243
242
|
/**
|
|
244
243
|
* Creates an `insert into "person" default values` query.
|
|
244
|
+
*
|
|
245
|
+
* ### Examples
|
|
246
|
+
*
|
|
247
|
+
* ```ts
|
|
248
|
+
* await db.insertInto('person')
|
|
249
|
+
* .defaultValues()
|
|
250
|
+
* .execute()
|
|
251
|
+
* ```
|
|
245
252
|
*/
|
|
246
253
|
defaultValues(): InsertQueryBuilder<DB, TB, O>;
|
|
247
254
|
/**
|
|
@@ -266,6 +273,50 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
266
273
|
* ```
|
|
267
274
|
*/
|
|
268
275
|
ignore(): InsertQueryBuilder<DB, TB, O>;
|
|
276
|
+
/**
|
|
277
|
+
* Changes an `insert into` query to an `insert top into` query.
|
|
278
|
+
*
|
|
279
|
+
* `top` clause is only supported by some dialects like MS SQL Server.
|
|
280
|
+
*
|
|
281
|
+
* ### Examples
|
|
282
|
+
*
|
|
283
|
+
* Insert the first 5 rows:
|
|
284
|
+
*
|
|
285
|
+
* ```ts
|
|
286
|
+
* await db.insertInto('person')
|
|
287
|
+
* .top(5)
|
|
288
|
+
* .columns(['first_name', 'gender'])
|
|
289
|
+
* .expression(
|
|
290
|
+
* (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])
|
|
291
|
+
* )
|
|
292
|
+
* .execute()
|
|
293
|
+
* ```
|
|
294
|
+
*
|
|
295
|
+
* The generated SQL (MS SQL Server):
|
|
296
|
+
*
|
|
297
|
+
* ```sql
|
|
298
|
+
* insert top(5) into "person" ("first_name", "gender") select "name", 'other' as "gender" from "pet"
|
|
299
|
+
* ```
|
|
300
|
+
*
|
|
301
|
+
* Insert the first 50 percent of rows:
|
|
302
|
+
*
|
|
303
|
+
* ```ts
|
|
304
|
+
* await db.insertInto('person')
|
|
305
|
+
* .top(50, 'percent')
|
|
306
|
+
* .columns(['first_name', 'gender'])
|
|
307
|
+
* .expression(
|
|
308
|
+
* (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])
|
|
309
|
+
* )
|
|
310
|
+
* .execute()
|
|
311
|
+
* ```
|
|
312
|
+
*
|
|
313
|
+
* The generated SQL (MS SQL Server):
|
|
314
|
+
*
|
|
315
|
+
* ```sql
|
|
316
|
+
* insert top(50) percent into "person" ("first_name", "gender") select "name", 'other' as "gender" from "pet"
|
|
317
|
+
* ```
|
|
318
|
+
*/
|
|
319
|
+
top(expression: number | bigint, modifiers?: 'percent'): InsertQueryBuilder<DB, TB, O>;
|
|
269
320
|
/**
|
|
270
321
|
* Adds an `on conflict` clause to the query.
|
|
271
322
|
*
|
|
@@ -504,6 +555,25 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
504
555
|
* that support `returning` such as PostgreSQL.
|
|
505
556
|
*/
|
|
506
557
|
returningAll(): InsertQueryBuilder<DB, TB, Selectable<DB[TB]>>;
|
|
558
|
+
/**
|
|
559
|
+
* Clears all `returning` clauses from the query.
|
|
560
|
+
*
|
|
561
|
+
* ### Examples
|
|
562
|
+
*
|
|
563
|
+
* ```ts
|
|
564
|
+
* db.insertInto('person')
|
|
565
|
+
* .values({ first_name: 'James', last_name: 'Smith', age: 42 })
|
|
566
|
+
* .returning(['first_name'])
|
|
567
|
+
* .clearReturning()
|
|
568
|
+
* ```
|
|
569
|
+
*
|
|
570
|
+
* The generated SQL(PostgreSQL):
|
|
571
|
+
*
|
|
572
|
+
* ```sql
|
|
573
|
+
* insert into "person" ("James", "Smith", 42)
|
|
574
|
+
* ```
|
|
575
|
+
*/
|
|
576
|
+
clearReturning(): InsertQueryBuilder<DB, TB, InsertResult>;
|
|
507
577
|
/**
|
|
508
578
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
509
579
|
* what the provided function returns.
|