kysely 0.27.3 → 0.27.4
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/CONTRIBUTING.md +1 -1
- package/README.md +7 -7
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +2 -1
- package/dist/cjs/dialect/dialect-adapter-base.js +4 -1
- package/dist/cjs/dialect/dialect-adapter.d.ts +5 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +1 -5
- package/dist/cjs/dialect/mssql/mssql-adapter.js +2 -4
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +46 -26
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +1 -0
- package/dist/cjs/dialect/mssql/mssql-driver.js +95 -36
- package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -1
- package/dist/cjs/driver/database-connection.d.ts +3 -1
- package/dist/cjs/dynamic/dynamic-reference-builder.js +2 -2
- package/dist/cjs/dynamic/dynamic.d.ts +1 -1
- package/dist/cjs/dynamic/dynamic.js +1 -1
- package/dist/cjs/expression/expression-builder.d.ts +2 -2
- package/dist/cjs/expression/expression-builder.js +2 -3
- package/dist/cjs/expression/expression.js +2 -3
- package/dist/cjs/helpers/mssql.js +3 -4
- package/dist/cjs/helpers/mysql.d.ts +3 -3
- package/dist/cjs/helpers/mysql.js +6 -7
- package/dist/cjs/helpers/postgres.d.ts +4 -4
- package/dist/cjs/helpers/postgres.js +7 -8
- package/dist/cjs/helpers/sqlite.js +3 -4
- package/dist/cjs/index.d.ts +28 -21
- package/dist/cjs/index.js +28 -21
- package/dist/cjs/kysely.d.ts +1 -1
- package/dist/cjs/kysely.js +3 -3
- package/dist/cjs/operation-node/alter-column-node.d.ts +1 -1
- package/dist/cjs/operation-node/case-node.d.ts +1 -1
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
- package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
- package/dist/cjs/operation-node/data-type-node.js +5 -3
- package/dist/cjs/operation-node/delete-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -4
- package/dist/cjs/operation-node/having-node.d.ts +1 -1
- package/dist/cjs/operation-node/insert-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/on-node.d.ts +1 -1
- package/dist/cjs/operation-node/operation-node-source.js +1 -2
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +12 -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/operator-node.d.ts +3 -3
- package/dist/cjs/operation-node/operator-node.js +8 -6
- package/dist/cjs/operation-node/output-node.d.ts +13 -0
- package/dist/cjs/operation-node/output-node.js +26 -0
- package/dist/cjs/operation-node/query-node.d.ts +11 -6
- package/dist/cjs/operation-node/query-node.js +9 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/select-query-node.js +6 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/where-node.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.js +5 -6
- package/dist/cjs/parser/data-type-parser.js +1 -2
- package/dist/cjs/parser/default-value-parser.js +1 -2
- package/dist/cjs/parser/expression-parser.js +3 -4
- package/dist/cjs/parser/fetch-parser.js +1 -2
- package/dist/cjs/parser/group-by-parser.js +1 -2
- package/dist/cjs/parser/identifier-parser.js +1 -2
- package/dist/cjs/parser/insert-values-parser.js +1 -2
- package/dist/cjs/parser/join-parser.js +1 -2
- package/dist/cjs/parser/merge-parser.js +2 -3
- package/dist/cjs/parser/on-commit-action-parse.js +1 -2
- package/dist/cjs/parser/on-modify-action-parser.js +1 -2
- package/dist/cjs/parser/order-by-parser.js +3 -4
- package/dist/cjs/parser/parse-utils.js +4 -5
- package/dist/cjs/parser/partition-by-parser.js +1 -2
- package/dist/cjs/parser/reference-parser.js +8 -9
- package/dist/cjs/parser/returning-parser.d.ts +4 -3
- package/dist/cjs/parser/select-parser.js +2 -3
- package/dist/cjs/parser/set-operation-parser.js +1 -2
- package/dist/cjs/parser/table-parser.js +4 -5
- package/dist/cjs/parser/top-parser.js +1 -2
- package/dist/cjs/parser/unary-operation-parser.js +3 -4
- package/dist/cjs/parser/update-set-parser.js +2 -3
- package/dist/cjs/parser/value-parser.js +4 -5
- package/dist/cjs/parser/with-parser.js +1 -2
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +2 -2
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +2 -2
- package/dist/cjs/plugin/camel-case/camel-case.js +2 -3
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +18 -0
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +19 -11
- package/dist/cjs/query-builder/delete-query-builder.d.ts +89 -5
- package/dist/cjs/query-builder/delete-query-builder.js +19 -5
- package/dist/cjs/query-builder/function-module.d.ts +5 -5
- package/dist/cjs/query-builder/function-module.js +1 -2
- package/dist/cjs/query-builder/insert-query-builder.d.ts +95 -10
- package/dist/cjs/query-builder/insert-query-builder.js +25 -10
- package/dist/cjs/query-builder/merge-query-builder.d.ts +167 -3
- package/dist/cjs/query-builder/merge-query-builder.js +30 -1
- package/dist/cjs/query-builder/no-result-error.js +2 -2
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +2 -2
- package/dist/cjs/query-builder/output-interface.d.ts +95 -0
- package/dist/cjs/query-builder/output-interface.js +2 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +2 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +76 -11
- package/dist/cjs/query-builder/select-query-builder.js +7 -2
- package/dist/cjs/query-builder/update-query-builder.d.ts +95 -10
- package/dist/cjs/query-builder/update-query-builder.js +21 -7
- package/dist/cjs/query-builder/update-result.d.ts +9 -0
- package/dist/cjs/query-builder/update-result.js +9 -0
- package/dist/cjs/query-builder/where-interface.d.ts +1 -1
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +25 -1
- package/dist/cjs/query-creator.d.ts +56 -3
- package/dist/cjs/query-creator.js +54 -1
- package/dist/cjs/raw-builder/raw-builder.js +1 -2
- package/dist/cjs/raw-builder/sql.d.ts +5 -5
- package/dist/cjs/schema/alter-column-builder.js +3 -0
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +1 -1
- package/dist/cjs/schema/alter-table-add-index-builder.js +1 -1
- package/dist/cjs/schema/alter-table-builder.js +1 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +5 -0
- package/dist/cjs/schema/column-definition-builder.js +7 -0
- package/dist/cjs/util/assert.js +2 -3
- package/dist/cjs/util/compilable.js +1 -2
- package/dist/cjs/util/json-object-args.js +1 -2
- package/dist/cjs/util/log-once.js +1 -2
- package/dist/cjs/util/object-utils.js +38 -26
- package/dist/cjs/util/performance-now.js +1 -2
- package/dist/cjs/util/prevent-await.js +1 -2
- package/dist/cjs/util/query-id.js +1 -2
- package/dist/cjs/util/random-string.js +1 -2
- package/dist/cjs/util/require-all-props.js +1 -2
- package/dist/cjs/util/stack-trace-utils.js +1 -2
- package/dist/esm/dialect/dialect-adapter-base.d.ts +2 -1
- package/dist/esm/dialect/dialect-adapter-base.js +4 -1
- package/dist/esm/dialect/dialect-adapter.d.ts +5 -0
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +1 -5
- package/dist/esm/dialect/mssql/mssql-adapter.js +2 -4
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +46 -26
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +1 -0
- package/dist/esm/dialect/mssql/mssql-driver.js +95 -36
- package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
- package/dist/esm/driver/database-connection.d.ts +3 -1
- package/dist/esm/dynamic/dynamic.d.ts +1 -1
- package/dist/esm/dynamic/dynamic.js +1 -1
- package/dist/esm/expression/expression-builder.d.ts +2 -2
- package/dist/esm/helpers/mysql.d.ts +3 -3
- package/dist/esm/helpers/mysql.js +3 -3
- package/dist/esm/helpers/postgres.d.ts +4 -4
- package/dist/esm/helpers/postgres.js +4 -4
- package/dist/esm/index.d.ts +28 -21
- package/dist/esm/index.js +28 -21
- package/dist/esm/kysely.d.ts +1 -1
- package/dist/esm/kysely.js +1 -1
- package/dist/esm/operation-node/alter-column-node.d.ts +1 -1
- package/dist/esm/operation-node/case-node.d.ts +1 -1
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
- package/dist/esm/operation-node/data-type-node.d.ts +2 -2
- package/dist/esm/operation-node/data-type-node.js +3 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +2 -0
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -4
- package/dist/esm/operation-node/having-node.d.ts +1 -1
- package/dist/esm/operation-node/insert-query-node.d.ts +2 -0
- package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
- package/dist/esm/operation-node/on-node.d.ts +1 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +12 -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/operator-node.d.ts +3 -3
- package/dist/esm/operation-node/operator-node.js +2 -0
- package/dist/esm/operation-node/output-node.d.ts +13 -0
- package/dist/esm/operation-node/output-node.js +24 -0
- package/dist/esm/operation-node/query-node.d.ts +11 -6
- package/dist/esm/operation-node/query-node.js +9 -0
- package/dist/esm/operation-node/select-query-node.d.ts +1 -0
- package/dist/esm/operation-node/select-query-node.js +6 -0
- package/dist/esm/operation-node/update-query-node.d.ts +2 -0
- package/dist/esm/operation-node/where-node.d.ts +1 -1
- package/dist/esm/parser/returning-parser.d.ts +4 -3
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +2 -2
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +18 -0
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +19 -11
- package/dist/esm/query-builder/delete-query-builder.d.ts +89 -5
- package/dist/esm/query-builder/delete-query-builder.js +19 -5
- package/dist/esm/query-builder/function-module.d.ts +5 -5
- package/dist/esm/query-builder/insert-query-builder.d.ts +95 -10
- package/dist/esm/query-builder/insert-query-builder.js +25 -10
- package/dist/esm/query-builder/merge-query-builder.d.ts +167 -3
- package/dist/esm/query-builder/merge-query-builder.js +30 -1
- package/dist/esm/query-builder/on-conflict-builder.d.ts +2 -2
- package/dist/esm/query-builder/output-interface.d.ts +95 -0
- package/dist/esm/query-builder/output-interface.js +2 -0
- package/dist/esm/query-builder/returning-interface.d.ts +2 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +76 -11
- package/dist/esm/query-builder/select-query-builder.js +6 -0
- package/dist/esm/query-builder/update-query-builder.d.ts +95 -10
- package/dist/esm/query-builder/update-query-builder.js +21 -7
- package/dist/esm/query-builder/update-result.d.ts +9 -0
- package/dist/esm/query-builder/update-result.js +9 -0
- package/dist/esm/query-builder/where-interface.d.ts +1 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/esm/query-compiler/default-query-compiler.js +25 -1
- package/dist/esm/query-creator.d.ts +56 -3
- package/dist/esm/query-creator.js +54 -1
- package/dist/esm/raw-builder/sql.d.ts +5 -5
- package/dist/esm/schema/alter-column-builder.js +3 -0
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +1 -1
- package/dist/esm/schema/alter-table-add-index-builder.js +1 -1
- package/dist/esm/schema/alter-table-builder.js +1 -2
- package/dist/esm/schema/column-definition-builder.d.ts +5 -0
- package/dist/esm/schema/column-definition-builder.js +7 -0
- package/dist/esm/util/object-utils.js +18 -5
- package/package.json +7 -6
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parsePartitionBy =
|
|
3
|
+
exports.parsePartitionBy = parsePartitionBy;
|
|
4
4
|
const partition_by_item_node_js_1 = require("../operation-node/partition-by-item-node.js");
|
|
5
5
|
const reference_parser_js_1 = require("./reference-parser.js");
|
|
6
6
|
function parsePartitionBy(partitionBy) {
|
|
7
7
|
return (0, reference_parser_js_1.parseReferenceExpressionOrList)(partitionBy).map(partition_by_item_node_js_1.PartitionByItemNode.create);
|
|
8
8
|
}
|
|
9
|
-
exports.parsePartitionBy = parsePartitionBy;
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseSimpleReferenceExpression = parseSimpleReferenceExpression;
|
|
4
|
+
exports.parseReferenceExpressionOrList = parseReferenceExpressionOrList;
|
|
5
|
+
exports.parseReferenceExpression = parseReferenceExpression;
|
|
6
|
+
exports.parseJSONReference = parseJSONReference;
|
|
7
|
+
exports.parseStringReference = parseStringReference;
|
|
8
|
+
exports.parseAliasedStringReference = parseAliasedStringReference;
|
|
9
|
+
exports.parseColumnName = parseColumnName;
|
|
10
|
+
exports.parseOrderedColumnName = parseOrderedColumnName;
|
|
4
11
|
const alias_node_js_1 = require("../operation-node/alias-node.js");
|
|
5
12
|
const column_node_js_1 = require("../operation-node/column-node.js");
|
|
6
13
|
const reference_node_js_1 = require("../operation-node/reference-node.js");
|
|
@@ -19,7 +26,6 @@ function parseSimpleReferenceExpression(exp) {
|
|
|
19
26
|
}
|
|
20
27
|
return exp.toOperationNode();
|
|
21
28
|
}
|
|
22
|
-
exports.parseSimpleReferenceExpression = parseSimpleReferenceExpression;
|
|
23
29
|
function parseReferenceExpressionOrList(arg) {
|
|
24
30
|
if ((0, object_utils_js_1.isReadonlyArray)(arg)) {
|
|
25
31
|
return arg.map((it) => parseReferenceExpression(it));
|
|
@@ -28,14 +34,12 @@ function parseReferenceExpressionOrList(arg) {
|
|
|
28
34
|
return [parseReferenceExpression(arg)];
|
|
29
35
|
}
|
|
30
36
|
}
|
|
31
|
-
exports.parseReferenceExpressionOrList = parseReferenceExpressionOrList;
|
|
32
37
|
function parseReferenceExpression(exp) {
|
|
33
38
|
if ((0, expression_parser_js_1.isExpressionOrFactory)(exp)) {
|
|
34
39
|
return (0, expression_parser_js_1.parseExpression)(exp);
|
|
35
40
|
}
|
|
36
41
|
return parseSimpleReferenceExpression(exp);
|
|
37
42
|
}
|
|
38
|
-
exports.parseReferenceExpression = parseReferenceExpression;
|
|
39
43
|
function parseJSONReference(ref, op) {
|
|
40
44
|
const referenceNode = parseStringReference(ref);
|
|
41
45
|
if ((0, operator_node_js_1.isJSONOperator)(op)) {
|
|
@@ -47,7 +51,6 @@ function parseJSONReference(ref, op) {
|
|
|
47
51
|
}
|
|
48
52
|
throw new Error(`Invalid JSON operator: ${op}`);
|
|
49
53
|
}
|
|
50
|
-
exports.parseJSONReference = parseJSONReference;
|
|
51
54
|
function parseStringReference(ref) {
|
|
52
55
|
const COLUMN_SEPARATOR = '.';
|
|
53
56
|
if (!ref.includes(COLUMN_SEPARATOR)) {
|
|
@@ -62,7 +65,6 @@ function parseStringReference(ref) {
|
|
|
62
65
|
}
|
|
63
66
|
throw new Error(`invalid column reference ${ref}`);
|
|
64
67
|
}
|
|
65
|
-
exports.parseStringReference = parseStringReference;
|
|
66
68
|
function parseAliasedStringReference(ref) {
|
|
67
69
|
const ALIAS_SEPARATOR = ' as ';
|
|
68
70
|
if (ref.includes(ALIAS_SEPARATOR)) {
|
|
@@ -73,11 +75,9 @@ function parseAliasedStringReference(ref) {
|
|
|
73
75
|
return parseStringReference(ref);
|
|
74
76
|
}
|
|
75
77
|
}
|
|
76
|
-
exports.parseAliasedStringReference = parseAliasedStringReference;
|
|
77
78
|
function parseColumnName(column) {
|
|
78
79
|
return column_node_js_1.ColumnNode.create(column);
|
|
79
80
|
}
|
|
80
|
-
exports.parseColumnName = parseColumnName;
|
|
81
81
|
function parseOrderedColumnName(column) {
|
|
82
82
|
const ORDER_SEPARATOR = ' ';
|
|
83
83
|
if (column.includes(ORDER_SEPARATOR)) {
|
|
@@ -91,7 +91,6 @@ function parseOrderedColumnName(column) {
|
|
|
91
91
|
return parseColumnName(column);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
exports.parseOrderedColumnName = parseOrderedColumnName;
|
|
95
94
|
function parseStringReferenceWithTableAndSchema(parts) {
|
|
96
95
|
const [schema, table, column] = parts;
|
|
97
96
|
return reference_node_js_1.ReferenceNode.create(column_node_js_1.ColumnNode.create(column), table_node_js_1.TableNode.createWithSchema(schema, table));
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
2
2
|
import { InsertResult } from '../query-builder/insert-result.js';
|
|
3
|
+
import { MergeResult } from '../query-builder/merge-result.js';
|
|
3
4
|
import { UpdateResult } from '../query-builder/update-result.js';
|
|
4
5
|
import { Selection, AllSelection, CallbackSelection } from './select-parser.js';
|
|
5
|
-
export type ReturningRow<DB, TB extends keyof DB, O, SE> = O extends InsertResult
|
|
6
|
-
export type ReturningCallbackRow<DB, TB extends keyof DB, O, CB> = O extends InsertResult
|
|
7
|
-
export type ReturningAllRow<DB, TB extends keyof DB, O> = O extends InsertResult
|
|
6
|
+
export type ReturningRow<DB, TB extends keyof DB, O, SE> = O extends InsertResult | DeleteResult | UpdateResult | MergeResult ? Selection<DB, TB, SE> : O & Selection<DB, TB, SE>;
|
|
7
|
+
export type ReturningCallbackRow<DB, TB extends keyof DB, O, CB> = O extends InsertResult | DeleteResult | UpdateResult | MergeResult ? CallbackSelection<DB, TB, CB> : O & CallbackSelection<DB, TB, CB>;
|
|
8
|
+
export type ReturningAllRow<DB, TB extends keyof DB, O> = O extends InsertResult | DeleteResult | UpdateResult | MergeResult ? AllSelection<DB, TB> : O & AllSelection<DB, TB>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseSelectArg = parseSelectArg;
|
|
4
|
+
exports.parseSelectAll = parseSelectAll;
|
|
4
5
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
6
|
const selection_node_js_1 = require("../operation-node/selection-node.js");
|
|
6
7
|
const reference_parser_js_1 = require("./reference-parser.js");
|
|
@@ -19,7 +20,6 @@ function parseSelectArg(selection) {
|
|
|
19
20
|
return [parseSelectExpression(selection)];
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
|
-
exports.parseSelectArg = parseSelectArg;
|
|
23
23
|
function parseSelectExpression(selection) {
|
|
24
24
|
if ((0, object_utils_js_1.isString)(selection)) {
|
|
25
25
|
return selection_node_js_1.SelectionNode.create((0, reference_parser_js_1.parseAliasedStringReference)(selection));
|
|
@@ -42,7 +42,6 @@ function parseSelectAll(table) {
|
|
|
42
42
|
return [parseSelectAllArg(table)];
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
exports.parseSelectAll = parseSelectAll;
|
|
46
45
|
function parseSelectAllArg(table) {
|
|
47
46
|
if ((0, object_utils_js_1.isString)(table)) {
|
|
48
47
|
return selection_node_js_1.SelectionNode.createSelectAllFromTable((0, table_parser_js_1.parseTable)(table));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseSetOperations =
|
|
3
|
+
exports.parseSetOperations = parseSetOperations;
|
|
4
4
|
const expression_builder_js_1 = require("../expression/expression-builder.js");
|
|
5
5
|
const set_operation_node_js_1 = require("../operation-node/set-operation-node.js");
|
|
6
6
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
@@ -14,4 +14,3 @@ function parseSetOperations(operator, expression, all) {
|
|
|
14
14
|
}
|
|
15
15
|
return expression.map((expr) => set_operation_node_js_1.SetOperationNode.create(operator, (0, expression_parser_js_1.parseExpression)(expr), all));
|
|
16
16
|
}
|
|
17
|
-
exports.parseSetOperations = parseSetOperations;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseTableExpressionOrList = parseTableExpressionOrList;
|
|
4
|
+
exports.parseTableExpression = parseTableExpression;
|
|
5
|
+
exports.parseAliasedTable = parseAliasedTable;
|
|
6
|
+
exports.parseTable = parseTable;
|
|
4
7
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
8
|
const alias_node_js_1 = require("../operation-node/alias-node.js");
|
|
6
9
|
const table_node_js_1 = require("../operation-node/table-node.js");
|
|
@@ -14,7 +17,6 @@ function parseTableExpressionOrList(table) {
|
|
|
14
17
|
return [parseTableExpression(table)];
|
|
15
18
|
}
|
|
16
19
|
}
|
|
17
|
-
exports.parseTableExpressionOrList = parseTableExpressionOrList;
|
|
18
20
|
function parseTableExpression(table) {
|
|
19
21
|
if ((0, object_utils_js_1.isString)(table)) {
|
|
20
22
|
return parseAliasedTable(table);
|
|
@@ -23,7 +25,6 @@ function parseTableExpression(table) {
|
|
|
23
25
|
return (0, expression_parser_js_1.parseAliasedExpression)(table);
|
|
24
26
|
}
|
|
25
27
|
}
|
|
26
|
-
exports.parseTableExpression = parseTableExpression;
|
|
27
28
|
function parseAliasedTable(from) {
|
|
28
29
|
const ALIAS_SEPARATOR = ' as ';
|
|
29
30
|
if (from.includes(ALIAS_SEPARATOR)) {
|
|
@@ -34,7 +35,6 @@ function parseAliasedTable(from) {
|
|
|
34
35
|
return parseTable(from);
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
|
-
exports.parseAliasedTable = parseAliasedTable;
|
|
38
38
|
function parseTable(from) {
|
|
39
39
|
const SCHEMA_SEPARATOR = '.';
|
|
40
40
|
if (from.includes(SCHEMA_SEPARATOR)) {
|
|
@@ -45,7 +45,6 @@ function parseTable(from) {
|
|
|
45
45
|
return table_node_js_1.TableNode.create(from);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
exports.parseTable = parseTable;
|
|
49
48
|
function trim(str) {
|
|
50
49
|
return str.trim();
|
|
51
50
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseTop =
|
|
3
|
+
exports.parseTop = parseTop;
|
|
4
4
|
const top_node_js_1 = require("../operation-node/top-node.js");
|
|
5
5
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
6
6
|
function parseTop(expression, modifiers) {
|
|
@@ -12,7 +12,6 @@ function parseTop(expression, modifiers) {
|
|
|
12
12
|
}
|
|
13
13
|
return top_node_js_1.TopNode.create(expression, modifiers);
|
|
14
14
|
}
|
|
15
|
-
exports.parseTop = parseTop;
|
|
16
15
|
function isTopModifiers(modifiers) {
|
|
17
16
|
return (modifiers === 'percent' ||
|
|
18
17
|
modifiers === 'with ties' ||
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseExists = parseExists;
|
|
4
|
+
exports.parseNotExists = parseNotExists;
|
|
5
|
+
exports.parseUnaryOperation = parseUnaryOperation;
|
|
4
6
|
const operator_node_js_1 = require("../operation-node/operator-node.js");
|
|
5
7
|
const unary_operation_node_js_1 = require("../operation-node/unary-operation-node.js");
|
|
6
8
|
const reference_parser_js_1 = require("./reference-parser.js");
|
|
7
9
|
function parseExists(operand) {
|
|
8
10
|
return parseUnaryOperation('exists', operand);
|
|
9
11
|
}
|
|
10
|
-
exports.parseExists = parseExists;
|
|
11
12
|
function parseNotExists(operand) {
|
|
12
13
|
return parseUnaryOperation('not exists', operand);
|
|
13
14
|
}
|
|
14
|
-
exports.parseNotExists = parseNotExists;
|
|
15
15
|
function parseUnaryOperation(operator, operand) {
|
|
16
16
|
return unary_operation_node_js_1.UnaryOperationNode.create(operator_node_js_1.OperatorNode.create(operator), (0, reference_parser_js_1.parseReferenceExpression)(operand));
|
|
17
17
|
}
|
|
18
|
-
exports.parseUnaryOperation = parseUnaryOperation;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseUpdate = parseUpdate;
|
|
4
|
+
exports.parseUpdateObjectExpression = parseUpdateObjectExpression;
|
|
4
5
|
const column_node_js_1 = require("../operation-node/column-node.js");
|
|
5
6
|
const column_update_node_js_1 = require("../operation-node/column-update-node.js");
|
|
6
7
|
const expression_builder_js_1 = require("../expression/expression-builder.js");
|
|
@@ -15,7 +16,6 @@ function parseUpdate(...args) {
|
|
|
15
16
|
}
|
|
16
17
|
return parseUpdateObjectExpression(args[0]);
|
|
17
18
|
}
|
|
18
|
-
exports.parseUpdate = parseUpdate;
|
|
19
19
|
function parseUpdateObjectExpression(update) {
|
|
20
20
|
const updateObj = (0, object_utils_js_1.isFunction)(update) ? update((0, expression_builder_js_1.expressionBuilder)()) : update;
|
|
21
21
|
return Object.entries(updateObj)
|
|
@@ -24,4 +24,3 @@ function parseUpdateObjectExpression(update) {
|
|
|
24
24
|
return column_update_node_js_1.ColumnUpdateNode.create(column_node_js_1.ColumnNode.create(key), (0, value_parser_js_1.parseValueExpression)(value));
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
-
exports.parseUpdateObjectExpression = parseUpdateObjectExpression;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseValueExpressionOrList = parseValueExpressionOrList;
|
|
4
|
+
exports.parseValueExpression = parseValueExpression;
|
|
5
|
+
exports.isSafeImmediateValue = isSafeImmediateValue;
|
|
6
|
+
exports.parseSafeImmediateValue = parseSafeImmediateValue;
|
|
4
7
|
const primitive_value_list_node_js_1 = require("../operation-node/primitive-value-list-node.js");
|
|
5
8
|
const value_list_node_js_1 = require("../operation-node/value-list-node.js");
|
|
6
9
|
const value_node_js_1 = require("../operation-node/value-node.js");
|
|
@@ -12,25 +15,21 @@ function parseValueExpressionOrList(arg) {
|
|
|
12
15
|
}
|
|
13
16
|
return parseValueExpression(arg);
|
|
14
17
|
}
|
|
15
|
-
exports.parseValueExpressionOrList = parseValueExpressionOrList;
|
|
16
18
|
function parseValueExpression(exp) {
|
|
17
19
|
if ((0, expression_parser_js_1.isExpressionOrFactory)(exp)) {
|
|
18
20
|
return (0, expression_parser_js_1.parseExpression)(exp);
|
|
19
21
|
}
|
|
20
22
|
return value_node_js_1.ValueNode.create(exp);
|
|
21
23
|
}
|
|
22
|
-
exports.parseValueExpression = parseValueExpression;
|
|
23
24
|
function isSafeImmediateValue(value) {
|
|
24
25
|
return (0, object_utils_js_1.isNumber)(value) || (0, object_utils_js_1.isBoolean)(value) || (0, object_utils_js_1.isNull)(value);
|
|
25
26
|
}
|
|
26
|
-
exports.isSafeImmediateValue = isSafeImmediateValue;
|
|
27
27
|
function parseSafeImmediateValue(value) {
|
|
28
28
|
if (!isSafeImmediateValue(value)) {
|
|
29
29
|
throw new Error(`unsafe immediate value ${JSON.stringify(value)}`);
|
|
30
30
|
}
|
|
31
31
|
return value_node_js_1.ValueNode.createImmediate(value);
|
|
32
32
|
}
|
|
33
|
-
exports.parseSafeImmediateValue = parseSafeImmediateValue;
|
|
34
33
|
function parseValueExpressionList(arg) {
|
|
35
34
|
if (arg.some(expression_parser_js_1.isExpressionOrFactory)) {
|
|
36
35
|
return value_list_node_js_1.ValueListNode.create(arg.map((it) => parseValueExpression(it)));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseCommonTableExpression =
|
|
3
|
+
exports.parseCommonTableExpression = parseCommonTableExpression;
|
|
4
4
|
const common_table_expression_name_node_js_1 = require("../operation-node/common-table-expression-name-node.js");
|
|
5
5
|
const parse_utils_js_1 = require("./parse-utils.js");
|
|
6
6
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
@@ -13,7 +13,6 @@ function parseCommonTableExpression(nameOrBuilderCallback, expression) {
|
|
|
13
13
|
}
|
|
14
14
|
return common_table_expression_node_js_1.CommonTableExpressionNode.create(parseCommonTableExpressionName(nameOrBuilderCallback), expressionNode);
|
|
15
15
|
}
|
|
16
|
-
exports.parseCommonTableExpression = parseCommonTableExpression;
|
|
17
16
|
function cteBuilderFactory(expressionNode) {
|
|
18
17
|
return (name) => {
|
|
19
18
|
return new cte_builder_js_1.CTEBuilder({
|
|
@@ -35,7 +35,7 @@ export interface CamelCasePluginOptions {
|
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* A plugin that converts snake_case identifiers in the database into
|
|
38
|
-
* camelCase in the
|
|
38
|
+
* camelCase in the JavaScript side.
|
|
39
39
|
*
|
|
40
40
|
* For example let's assume we have a table called `person_table`
|
|
41
41
|
* with columns `first_name` and `last_name` in the database. When
|
|
@@ -75,7 +75,7 @@ export interface CamelCasePluginOptions {
|
|
|
75
75
|
* ```
|
|
76
76
|
*
|
|
77
77
|
* As you can see from the example, __everything__ needs to be defined
|
|
78
|
-
* in camelCase in the
|
|
78
|
+
* in camelCase in the TypeScript code: table names, columns, schemas,
|
|
79
79
|
* __everything__. When using the `CamelCasePlugin` Kysely works as if
|
|
80
80
|
* the database was defined in camelCase.
|
|
81
81
|
*
|
|
@@ -6,7 +6,7 @@ const camel_case_transformer_js_1 = require("./camel-case-transformer.js");
|
|
|
6
6
|
const camel_case_js_1 = require("./camel-case.js");
|
|
7
7
|
/**
|
|
8
8
|
* A plugin that converts snake_case identifiers in the database into
|
|
9
|
-
* camelCase in the
|
|
9
|
+
* camelCase in the JavaScript side.
|
|
10
10
|
*
|
|
11
11
|
* For example let's assume we have a table called `person_table`
|
|
12
12
|
* with columns `first_name` and `last_name` in the database. When
|
|
@@ -46,7 +46,7 @@ const camel_case_js_1 = require("./camel-case.js");
|
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
48
|
* As you can see from the example, __everything__ needs to be defined
|
|
49
|
-
* in camelCase in the
|
|
49
|
+
* in camelCase in the TypeScript code: table names, columns, schemas,
|
|
50
50
|
* __everything__. When using the `CamelCasePlugin` Kysely works as if
|
|
51
51
|
* the database was defined in camelCase.
|
|
52
52
|
*
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createSnakeCaseMapper = createSnakeCaseMapper;
|
|
4
|
+
exports.createCamelCaseMapper = createCamelCaseMapper;
|
|
4
5
|
/**
|
|
5
6
|
* Creates a function that transforms camel case strings to snake case.
|
|
6
7
|
*/
|
|
@@ -52,7 +53,6 @@ function createSnakeCaseMapper({ upperCase = false, underscoreBeforeDigits = fal
|
|
|
52
53
|
}
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
|
-
exports.createSnakeCaseMapper = createSnakeCaseMapper;
|
|
56
56
|
/**
|
|
57
57
|
* Creates a function that transforms snake case strings to camel case.
|
|
58
58
|
*/
|
|
@@ -83,7 +83,6 @@ function createCamelCaseMapper({ upperCase = false, } = {}) {
|
|
|
83
83
|
return out;
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
|
-
exports.createCamelCaseMapper = createCamelCaseMapper;
|
|
87
86
|
function isAllUpperCaseSnakeCase(str) {
|
|
88
87
|
for (let i = 1, l = str.length; i < l; ++i) {
|
|
89
88
|
const char = str[i];
|
|
@@ -2,6 +2,20 @@ import { QueryResult } from '../../driver/database-connection.js';
|
|
|
2
2
|
import { RootOperationNode } from '../../query-compiler/query-compiler.js';
|
|
3
3
|
import { UnknownRow } from '../../util/type-utils.js';
|
|
4
4
|
import { KyselyPlugin, PluginTransformQueryArgs, PluginTransformResultArgs } from '../kysely-plugin.js';
|
|
5
|
+
export interface ParseJSONResultsPluginOptions {
|
|
6
|
+
/**
|
|
7
|
+
* When `'in-place'`, arrays' and objects' values are parsed in-place. This is
|
|
8
|
+
* the most time and space efficient option.
|
|
9
|
+
*
|
|
10
|
+
* This can result in runtime errors if some objects/arrays are readonly.
|
|
11
|
+
*
|
|
12
|
+
* When `'create'`, new arrays and objects are created to avoid such errors.
|
|
13
|
+
*
|
|
14
|
+
* Defaults to `'in-place'`.
|
|
15
|
+
*/
|
|
16
|
+
objectStrategy?: ObjectStrategy;
|
|
17
|
+
}
|
|
18
|
+
type ObjectStrategy = 'in-place' | 'create';
|
|
5
19
|
/**
|
|
6
20
|
* Parses JSON strings in query results into JSON objects.
|
|
7
21
|
*
|
|
@@ -16,6 +30,9 @@ import { KyselyPlugin, PluginTransformQueryArgs, PluginTransformResultArgs } fro
|
|
|
16
30
|
* ```
|
|
17
31
|
*/
|
|
18
32
|
export declare class ParseJSONResultsPlugin implements KyselyPlugin {
|
|
33
|
+
#private;
|
|
34
|
+
readonly opt: ParseJSONResultsPluginOptions;
|
|
35
|
+
constructor(opt?: ParseJSONResultsPluginOptions);
|
|
19
36
|
/**
|
|
20
37
|
* This is called for each query before it is executed. You can modify the query by
|
|
21
38
|
* transforming its {@link OperationNode} tree provided in {@link PluginTransformQueryArgs.node | args.node}
|
|
@@ -53,3 +70,4 @@ export declare class ParseJSONResultsPlugin implements KyselyPlugin {
|
|
|
53
70
|
*/
|
|
54
71
|
transformResult(args: PluginTransformResultArgs): Promise<QueryResult<UnknownRow>>;
|
|
55
72
|
}
|
|
73
|
+
export {};
|
|
@@ -16,6 +16,12 @@ const object_utils_js_1 = require("../../util/object-utils.js");
|
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
18
|
class ParseJSONResultsPlugin {
|
|
19
|
+
opt;
|
|
20
|
+
#objectStrategy;
|
|
21
|
+
constructor(opt = {}) {
|
|
22
|
+
this.opt = opt;
|
|
23
|
+
this.#objectStrategy = opt.objectStrategy || 'in-place';
|
|
24
|
+
}
|
|
19
25
|
// noop
|
|
20
26
|
transformQuery(args) {
|
|
21
27
|
return args.node;
|
|
@@ -23,33 +29,34 @@ class ParseJSONResultsPlugin {
|
|
|
23
29
|
async transformResult(args) {
|
|
24
30
|
return {
|
|
25
31
|
...args.result,
|
|
26
|
-
rows: parseArray(args.result.rows),
|
|
32
|
+
rows: parseArray(args.result.rows, this.#objectStrategy),
|
|
27
33
|
};
|
|
28
34
|
}
|
|
29
35
|
}
|
|
30
36
|
exports.ParseJSONResultsPlugin = ParseJSONResultsPlugin;
|
|
31
|
-
function parseArray(arr) {
|
|
37
|
+
function parseArray(arr, objectStrategy) {
|
|
38
|
+
const target = objectStrategy === 'create' ? new Array(arr.length) : arr;
|
|
32
39
|
for (let i = 0; i < arr.length; ++i) {
|
|
33
|
-
|
|
40
|
+
target[i] = parse(arr[i], objectStrategy);
|
|
34
41
|
}
|
|
35
|
-
return
|
|
42
|
+
return target;
|
|
36
43
|
}
|
|
37
|
-
function parse(obj) {
|
|
44
|
+
function parse(obj, objectStrategy) {
|
|
38
45
|
if ((0, object_utils_js_1.isString)(obj)) {
|
|
39
46
|
return parseString(obj);
|
|
40
47
|
}
|
|
41
48
|
if (Array.isArray(obj)) {
|
|
42
|
-
return parseArray(obj);
|
|
49
|
+
return parseArray(obj, objectStrategy);
|
|
43
50
|
}
|
|
44
51
|
if ((0, object_utils_js_1.isPlainObject)(obj)) {
|
|
45
|
-
return parseObject(obj);
|
|
52
|
+
return parseObject(obj, objectStrategy);
|
|
46
53
|
}
|
|
47
54
|
return obj;
|
|
48
55
|
}
|
|
49
56
|
function parseString(str) {
|
|
50
57
|
if (maybeJson(str)) {
|
|
51
58
|
try {
|
|
52
|
-
return parse(JSON.parse(str));
|
|
59
|
+
return parse(JSON.parse(str), 'in-place');
|
|
53
60
|
}
|
|
54
61
|
catch (err) {
|
|
55
62
|
// this catch block is intentionally empty.
|
|
@@ -60,9 +67,10 @@ function parseString(str) {
|
|
|
60
67
|
function maybeJson(value) {
|
|
61
68
|
return value.match(/^[\[\{]/) != null;
|
|
62
69
|
}
|
|
63
|
-
function parseObject(obj) {
|
|
70
|
+
function parseObject(obj, objectStrategy) {
|
|
71
|
+
const target = objectStrategy === 'create' ? {} : obj;
|
|
64
72
|
for (const key in obj) {
|
|
65
|
-
|
|
73
|
+
target[key] = parse(obj[key], objectStrategy);
|
|
66
74
|
}
|
|
67
|
-
return
|
|
75
|
+
return target;
|
|
68
76
|
}
|
|
@@ -24,7 +24,8 @@ import { KyselyTypeError } from '../util/type-error.js';
|
|
|
24
24
|
import { Streamable } from '../util/streamable.js';
|
|
25
25
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
26
26
|
import { ValueExpression } from '../parser/value-parser.js';
|
|
27
|
-
|
|
27
|
+
import { OutputCallback, OutputExpression, OutputInterface, SelectExpressionFromOutputCallback, SelectExpressionFromOutputExpression } from './output-interface.js';
|
|
28
|
+
export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OutputInterface<DB, TB, O, 'deleted'>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
|
|
28
29
|
#private;
|
|
29
30
|
constructor(props: DeleteQueryBuilderProps);
|
|
30
31
|
/**
|
|
@@ -289,7 +290,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
289
290
|
* .selectFrom('person')
|
|
290
291
|
* .selectAll()
|
|
291
292
|
* .where(
|
|
292
|
-
* sql
|
|
293
|
+
* sql<string>`coalesce(first_name, last_name)`,
|
|
293
294
|
* 'like',
|
|
294
295
|
* '%' + name + '%',
|
|
295
296
|
* )
|
|
@@ -799,9 +800,92 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
799
800
|
/**
|
|
800
801
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
801
802
|
* that support `returning` such as PostgreSQL.
|
|
803
|
+
*
|
|
804
|
+
* Also see the {@link returning} method.
|
|
802
805
|
*/
|
|
803
806
|
returningAll<T extends TB>(table: T): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, T, O>>;
|
|
804
807
|
returningAll(): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, TB, O>>;
|
|
808
|
+
/**
|
|
809
|
+
* Allows you to return data from modified rows.
|
|
810
|
+
*
|
|
811
|
+
* On supported databases like MS SQL Server (MSSQL), this method can be chained
|
|
812
|
+
* to `insert`, `update`, `delete` and `merge` queries to return data.
|
|
813
|
+
*
|
|
814
|
+
* Also see the {@link outputAll} method.
|
|
815
|
+
*
|
|
816
|
+
* ### Examples
|
|
817
|
+
*
|
|
818
|
+
* Return one column:
|
|
819
|
+
*
|
|
820
|
+
* ```ts
|
|
821
|
+
* const { id } = await db
|
|
822
|
+
* .insertInto('person')
|
|
823
|
+
* .output('inserted.id')
|
|
824
|
+
* .values({
|
|
825
|
+
* first_name: 'Jennifer',
|
|
826
|
+
* last_name: 'Aniston'
|
|
827
|
+
* })
|
|
828
|
+
* .executeTakeFirst()
|
|
829
|
+
* ```
|
|
830
|
+
*
|
|
831
|
+
* Return multiple columns:
|
|
832
|
+
*
|
|
833
|
+
* ```ts
|
|
834
|
+
* const { id, first_name } = await db
|
|
835
|
+
* .updateTable('person')
|
|
836
|
+
* .set({ first_name: 'John', last_name: 'Doe' })
|
|
837
|
+
* .output([
|
|
838
|
+
* 'deleted.first_name as old_first_name',
|
|
839
|
+
* 'deleted.last_name as old_last_name',
|
|
840
|
+
* 'inserted.first_name as new_first_name',
|
|
841
|
+
* 'inserted.last_name as new_last_name',
|
|
842
|
+
* ])
|
|
843
|
+
* .where('created_at', '<', new Date())
|
|
844
|
+
* .executeTakeFirst()
|
|
845
|
+
* ```
|
|
846
|
+
*
|
|
847
|
+
* Return arbitrary expressions:
|
|
848
|
+
*
|
|
849
|
+
* ```ts
|
|
850
|
+
* import { sql } from 'kysely'
|
|
851
|
+
*
|
|
852
|
+
* const { id, full_name } = await db
|
|
853
|
+
* .deleteFrom('person')
|
|
854
|
+
* .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name')
|
|
855
|
+
* .where('created_at', '<', new Date())
|
|
856
|
+
* .executeTakeFirst()
|
|
857
|
+
* ```
|
|
858
|
+
*
|
|
859
|
+
* Return the action performed on the row:
|
|
860
|
+
*
|
|
861
|
+
* ```ts
|
|
862
|
+
* await db
|
|
863
|
+
* .mergeInto('person')
|
|
864
|
+
* .using('pet', 'pet.owner_id', 'person.id')
|
|
865
|
+
* .whenMatched()
|
|
866
|
+
* .thenDelete()
|
|
867
|
+
* .whenNotMatched()
|
|
868
|
+
* .thenInsertValues({
|
|
869
|
+
* first_name: 'John',
|
|
870
|
+
* last_name: 'Doe',
|
|
871
|
+
* gender: 'male'
|
|
872
|
+
* })
|
|
873
|
+
* .output([
|
|
874
|
+
* 'inserted.id as inserted_id',
|
|
875
|
+
* 'deleted.id as deleted_id',
|
|
876
|
+
* ])
|
|
877
|
+
* ```
|
|
878
|
+
*/
|
|
879
|
+
output<OE extends OutputExpression<DB, TB, 'deleted'>>(selections: readonly OE[]): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>>;
|
|
880
|
+
output<CB extends OutputCallback<DB, TB, 'deleted'>>(callback: CB): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputCallback<CB>>>;
|
|
881
|
+
output<OE extends OutputExpression<DB, TB, 'deleted'>>(selection: OE): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>>;
|
|
882
|
+
/**
|
|
883
|
+
* Adds an `output {prefix}.*` to an `insert`/`update`/`delete`/`merge` query on databases
|
|
884
|
+
* that support `output` such as MS SQL Server (MSSQL).
|
|
885
|
+
*
|
|
886
|
+
* Also see the {@link output} method.
|
|
887
|
+
*/
|
|
888
|
+
outputAll(table: 'deleted'): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, TB, O>>;
|
|
805
889
|
/**
|
|
806
890
|
* Clears all `returning` clauses from the query.
|
|
807
891
|
*
|
|
@@ -1026,17 +1110,17 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1026
1110
|
/**
|
|
1027
1111
|
* Asserts that query's output row type equals the given type `T`.
|
|
1028
1112
|
*
|
|
1029
|
-
* This method can be used to simplify excessively complex types to make
|
|
1113
|
+
* This method can be used to simplify excessively complex types to make TypeScript happy
|
|
1030
1114
|
* and much faster.
|
|
1031
1115
|
*
|
|
1032
1116
|
* Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
|
|
1033
|
-
* for
|
|
1117
|
+
* for TypeScript and you get errors like this:
|
|
1034
1118
|
*
|
|
1035
1119
|
* ```
|
|
1036
1120
|
* error TS2589: Type instantiation is excessively deep and possibly infinite.
|
|
1037
1121
|
* ```
|
|
1038
1122
|
*
|
|
1039
|
-
* In these case you can often use this method to help
|
|
1123
|
+
* In these case you can often use this method to help TypeScript a little bit. When you use this
|
|
1040
1124
|
* method to assert the output type of a query, Kysely can drop the complex output type that
|
|
1041
1125
|
* consists of multiple nested helper types and replace it with the simple asserted type.
|
|
1042
1126
|
*
|
|
@@ -125,6 +125,18 @@ class DeleteQueryBuilder {
|
|
|
125
125
|
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
|
|
126
126
|
});
|
|
127
127
|
}
|
|
128
|
+
output(args) {
|
|
129
|
+
return new DeleteQueryBuilder({
|
|
130
|
+
...this.#props,
|
|
131
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectArg)(args)),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
outputAll(table) {
|
|
135
|
+
return new DeleteQueryBuilder({
|
|
136
|
+
...this.#props,
|
|
137
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
|
|
138
|
+
});
|
|
139
|
+
}
|
|
128
140
|
/**
|
|
129
141
|
* Clears all `returning` clauses from the query.
|
|
130
142
|
*
|
|
@@ -387,17 +399,17 @@ class DeleteQueryBuilder {
|
|
|
387
399
|
/**
|
|
388
400
|
* Asserts that query's output row type equals the given type `T`.
|
|
389
401
|
*
|
|
390
|
-
* This method can be used to simplify excessively complex types to make
|
|
402
|
+
* This method can be used to simplify excessively complex types to make TypeScript happy
|
|
391
403
|
* and much faster.
|
|
392
404
|
*
|
|
393
405
|
* Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
|
|
394
|
-
* for
|
|
406
|
+
* for TypeScript and you get errors like this:
|
|
395
407
|
*
|
|
396
408
|
* ```
|
|
397
409
|
* error TS2589: Type instantiation is excessively deep and possibly infinite.
|
|
398
410
|
* ```
|
|
399
411
|
*
|
|
400
|
-
* In these case you can often use this method to help
|
|
412
|
+
* In these case you can often use this method to help TypeScript a little bit. When you use this
|
|
401
413
|
* method to assert the output type of a query, Kysely can drop the complex output type that
|
|
402
414
|
* consists of multiple nested helper types and replace it with the simple asserted type.
|
|
403
415
|
*
|
|
@@ -450,9 +462,11 @@ class DeleteQueryBuilder {
|
|
|
450
462
|
*/
|
|
451
463
|
async execute() {
|
|
452
464
|
const compiledQuery = this.compile();
|
|
453
|
-
const query = compiledQuery.query;
|
|
454
465
|
const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
|
|
455
|
-
|
|
466
|
+
const { adapter } = this.#props.executor;
|
|
467
|
+
const query = compiledQuery.query;
|
|
468
|
+
if ((query.returning && adapter.supportsReturning) ||
|
|
469
|
+
(query.output && adapter.supportsOutput)) {
|
|
456
470
|
return result.rows;
|
|
457
471
|
}
|
|
458
472
|
return [
|