kysely 0.27.2 → 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/database-introspector.d.ts +1 -0
- 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/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 +3 -1
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/cjs/driver/database-connection.d.ts +4 -2
- 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 +31 -5
- package/dist/cjs/expression/expression-builder.js +7 -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 +31 -18
- package/dist/cjs/index.js +30 -17
- package/dist/cjs/kysely.d.ts +1 -1
- package/dist/cjs/kysely.js +3 -3
- package/dist/cjs/operation-node/add-index-node.js +1 -1
- 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/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 +2 -0
- package/dist/cjs/operation-node/data-type-node.d.ts +5 -1
- package/dist/cjs/operation-node/data-type-node.js +56 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +6 -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/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 +6 -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 +27 -0
- package/dist/cjs/operation-node/merge-query-node.js +45 -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 +12 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +62 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +6 -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 +17 -5
- package/dist/cjs/operation-node/query-node.js +24 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +6 -0
- package/dist/cjs/operation-node/select-query-node.js +12 -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 +9 -1
- package/dist/cjs/operation-node/update-query-node.js +11 -0
- package/dist/cjs/operation-node/where-node.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.js +7 -8
- package/dist/cjs/parser/data-type-parser.js +8 -5
- 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.d.ts +2 -0
- package/dist/cjs/parser/fetch-parser.js +17 -0
- 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.d.ts +3 -3
- 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.d.ts +9 -0
- package/dist/cjs/parser/merge-parser.js +31 -0
- 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.d.ts +4 -3
- package/dist/cjs/parser/table-parser.js +4 -5
- package/dist/cjs/parser/top-parser.d.ts +2 -0
- package/dist/cjs/parser/top-parser.js +19 -0
- 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/plugin/with-schema/with-schema-transformer.js +4 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +188 -5
- package/dist/cjs/query-builder/delete-query-builder.js +139 -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 +166 -10
- package/dist/cjs/query-builder/insert-query-builder.js +107 -10
- package/dist/cjs/query-builder/merge-query-builder.d.ts +721 -0
- package/dist/cjs/query-builder/merge-query-builder.js +547 -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/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 +177 -17
- package/dist/cjs/query-builder/select-query-builder.js +21 -2
- package/dist/cjs/query-builder/update-query-builder.d.ts +175 -10
- package/dist/cjs/query-builder/update-query-builder.js +119 -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 +12 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +118 -10
- package/dist/cjs/query-compiler/query-compiler.d.ts +2 -1
- package/dist/cjs/query-creator.d.ts +96 -5
- package/dist/cjs/query-creator.js +63 -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 +7 -3
- package/dist/cjs/schema/alter-table-builder.js +1 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +18 -1
- package/dist/cjs/schema/column-definition-builder.js +22 -1
- package/dist/cjs/util/assert.js +2 -3
- package/dist/cjs/util/compilable.js +1 -2
- package/dist/cjs/util/infer-result.d.ts +2 -1
- 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/cjs/util/type-utils.d.ts +3 -2
- package/dist/esm/dialect/database-introspector.d.ts +1 -0
- 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/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 +3 -1
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/driver/database-connection.d.ts +4 -2
- 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 +31 -5
- package/dist/esm/expression/expression-builder.js +5 -0
- 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 +31 -18
- package/dist/esm/index.js +30 -17
- package/dist/esm/kysely.d.ts +1 -1
- package/dist/esm/kysely.js +1 -1
- package/dist/esm/operation-node/add-index-node.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/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 +2 -0
- package/dist/esm/operation-node/data-type-node.d.ts +5 -1
- package/dist/esm/operation-node/data-type-node.js +55 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +6 -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/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 +6 -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 +27 -0
- package/dist/esm/operation-node/merge-query-node.js +43 -0
- package/dist/esm/operation-node/on-node.d.ts +1 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -0
- package/dist/esm/operation-node/operation-node-transformer.js +62 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -0
- package/dist/esm/operation-node/operation-node-visitor.js +6 -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 +17 -5
- package/dist/esm/operation-node/query-node.js +24 -1
- package/dist/esm/operation-node/select-query-node.d.ts +6 -0
- package/dist/esm/operation-node/select-query-node.js +12 -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 +9 -1
- package/dist/esm/operation-node/update-query-node.js +11 -0
- package/dist/esm/operation-node/where-node.d.ts +1 -1
- 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/returning-parser.d.ts +4 -3
- 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/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/plugin/with-schema/with-schema-transformer.js +4 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +188 -5
- package/dist/esm/query-builder/delete-query-builder.js +139 -5
- package/dist/esm/query-builder/function-module.d.ts +5 -5
- package/dist/esm/query-builder/insert-query-builder.d.ts +166 -10
- package/dist/esm/query-builder/insert-query-builder.js +107 -10
- package/dist/esm/query-builder/merge-query-builder.d.ts +721 -0
- package/dist/esm/query-builder/merge-query-builder.js +541 -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/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 +177 -17
- package/dist/esm/query-builder/select-query-builder.js +20 -0
- package/dist/esm/query-builder/update-query-builder.d.ts +175 -10
- package/dist/esm/query-builder/update-query-builder.js +119 -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 +12 -0
- package/dist/esm/query-compiler/default-query-compiler.js +118 -10
- package/dist/esm/query-compiler/query-compiler.d.ts +2 -1
- package/dist/esm/query-creator.d.ts +96 -5
- package/dist/esm/query-creator.js +64 -2
- 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 +8 -4
- package/dist/esm/schema/alter-table-builder.js +1 -2
- package/dist/esm/schema/column-definition-builder.d.ts +18 -1
- package/dist/esm/schema/column-definition-builder.js +22 -1
- package/dist/esm/util/infer-result.d.ts +2 -1
- package/dist/esm/util/object-utils.js +18 -5
- package/dist/esm/util/type-utils.d.ts +3 -2
- package/package.json +26 -24
|
@@ -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
|
}
|
|
@@ -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) {
|
|
@@ -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
|
* )
|
|
@@ -399,6 +400,46 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
399
400
|
* ```
|
|
400
401
|
*/
|
|
401
402
|
clearWhere(): DeleteQueryBuilder<DB, TB, O>;
|
|
403
|
+
/**
|
|
404
|
+
* Changes a `delete from` query into a `delete top from` query.
|
|
405
|
+
*
|
|
406
|
+
* `top` clause is only supported by some dialects like MS SQL Server.
|
|
407
|
+
*
|
|
408
|
+
* ### Examples
|
|
409
|
+
*
|
|
410
|
+
* Delete the first 5 rows:
|
|
411
|
+
*
|
|
412
|
+
* ```ts
|
|
413
|
+
* await db
|
|
414
|
+
* .deleteFrom('person')
|
|
415
|
+
* .top(5)
|
|
416
|
+
* .where('age', '>', 18)
|
|
417
|
+
* .executeTakeFirstOrThrow()
|
|
418
|
+
* ```
|
|
419
|
+
*
|
|
420
|
+
* The generated SQL (MS SQL Server):
|
|
421
|
+
*
|
|
422
|
+
* ```sql
|
|
423
|
+
* delete top(5) from "person" where "age" > @1
|
|
424
|
+
* ```
|
|
425
|
+
*
|
|
426
|
+
* Delete the first 50% of rows:
|
|
427
|
+
*
|
|
428
|
+
* ```ts
|
|
429
|
+
* await db
|
|
430
|
+
* .deleteFrom('person')
|
|
431
|
+
* .top(50, 'percent')
|
|
432
|
+
* .where('age', '>', 18)
|
|
433
|
+
* .executeTakeFirstOrThrow()
|
|
434
|
+
* ```
|
|
435
|
+
*
|
|
436
|
+
* The generated SQL (MS SQL Server):
|
|
437
|
+
*
|
|
438
|
+
* ```sql
|
|
439
|
+
* delete top(50) percent from "person" where "age" > @1
|
|
440
|
+
* ```
|
|
441
|
+
*/
|
|
442
|
+
top(expression: number | bigint, modifiers?: 'percent'): DeleteQueryBuilder<DB, TB, O>;
|
|
402
443
|
/**
|
|
403
444
|
* Adds a `using` clause to the query.
|
|
404
445
|
*
|
|
@@ -759,9 +800,151 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
759
800
|
/**
|
|
760
801
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
761
802
|
* that support `returning` such as PostgreSQL.
|
|
803
|
+
*
|
|
804
|
+
* Also see the {@link returning} method.
|
|
762
805
|
*/
|
|
763
806
|
returningAll<T extends TB>(table: T): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, T, O>>;
|
|
764
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>>;
|
|
889
|
+
/**
|
|
890
|
+
* Clears all `returning` clauses from the query.
|
|
891
|
+
*
|
|
892
|
+
* ### Examples
|
|
893
|
+
*
|
|
894
|
+
* ```ts
|
|
895
|
+
* db.deleteFrom('pet')
|
|
896
|
+
* .returningAll()
|
|
897
|
+
* .where('name', '=', 'Max')
|
|
898
|
+
* .clearReturning()
|
|
899
|
+
* ```
|
|
900
|
+
*
|
|
901
|
+
* The generated SQL(PostgreSQL):
|
|
902
|
+
*
|
|
903
|
+
* ```sql
|
|
904
|
+
* delete from "pet" where "name" = "Max"
|
|
905
|
+
* ```
|
|
906
|
+
*/
|
|
907
|
+
clearReturning(): DeleteQueryBuilder<DB, TB, DeleteResult>;
|
|
908
|
+
/**
|
|
909
|
+
* Clears the `limit` clause from the query.
|
|
910
|
+
*
|
|
911
|
+
* ### Examples
|
|
912
|
+
*
|
|
913
|
+
* ```ts
|
|
914
|
+
* db.deleteFrom('pet')
|
|
915
|
+
* .returningAll()
|
|
916
|
+
* .where('name', '=', 'Max')
|
|
917
|
+
* .limit(5)
|
|
918
|
+
* .clearLimit()
|
|
919
|
+
* ```
|
|
920
|
+
*
|
|
921
|
+
* The generated SQL(PostgreSQL):
|
|
922
|
+
*
|
|
923
|
+
* ```sql
|
|
924
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
925
|
+
* ```
|
|
926
|
+
*/
|
|
927
|
+
clearLimit(): DeleteQueryBuilder<DB, TB, O>;
|
|
928
|
+
/**
|
|
929
|
+
* Clears the `order by` clause from the query.
|
|
930
|
+
*
|
|
931
|
+
* ### Examples
|
|
932
|
+
*
|
|
933
|
+
* ```ts
|
|
934
|
+
* db.deleteFrom('pet')
|
|
935
|
+
* .returningAll()
|
|
936
|
+
* .where('name', '=', 'Max')
|
|
937
|
+
* .orderBy('id')
|
|
938
|
+
* .clearOrderBy()
|
|
939
|
+
* ```
|
|
940
|
+
*
|
|
941
|
+
* The generated SQL(PostgreSQL):
|
|
942
|
+
*
|
|
943
|
+
* ```sql
|
|
944
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
945
|
+
* ```
|
|
946
|
+
*/
|
|
947
|
+
clearOrderBy(): DeleteQueryBuilder<DB, TB, O>;
|
|
765
948
|
/**
|
|
766
949
|
* Adds an `order by` clause to the query.
|
|
767
950
|
*
|
|
@@ -927,17 +1110,17 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
927
1110
|
/**
|
|
928
1111
|
* Asserts that query's output row type equals the given type `T`.
|
|
929
1112
|
*
|
|
930
|
-
* 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
|
|
931
1114
|
* and much faster.
|
|
932
1115
|
*
|
|
933
1116
|
* Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
|
|
934
|
-
* for
|
|
1117
|
+
* for TypeScript and you get errors like this:
|
|
935
1118
|
*
|
|
936
1119
|
* ```
|
|
937
1120
|
* error TS2589: Type instantiation is excessively deep and possibly infinite.
|
|
938
1121
|
* ```
|
|
939
1122
|
*
|
|
940
|
-
* 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
|
|
941
1124
|
* method to assert the output type of a query, Kysely can drop the complex output type that
|
|
942
1125
|
* consists of multiple nested helper types and replace it with the simple asserted type.
|
|
943
1126
|
*
|
|
@@ -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,92 @@ 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
|
+
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
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Clears all `returning` clauses from the query.
|
|
142
|
+
*
|
|
143
|
+
* ### Examples
|
|
144
|
+
*
|
|
145
|
+
* ```ts
|
|
146
|
+
* db.deleteFrom('pet')
|
|
147
|
+
* .returningAll()
|
|
148
|
+
* .where('name', '=', 'Max')
|
|
149
|
+
* .clearReturning()
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* The generated SQL(PostgreSQL):
|
|
153
|
+
*
|
|
154
|
+
* ```sql
|
|
155
|
+
* delete from "pet" where "name" = "Max"
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
clearReturning() {
|
|
159
|
+
return new DeleteQueryBuilder({
|
|
160
|
+
...this.#props,
|
|
161
|
+
queryNode: query_node_js_1.QueryNode.cloneWithoutReturning(this.#props.queryNode),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Clears the `limit` clause from the query.
|
|
166
|
+
*
|
|
167
|
+
* ### Examples
|
|
168
|
+
*
|
|
169
|
+
* ```ts
|
|
170
|
+
* db.deleteFrom('pet')
|
|
171
|
+
* .returningAll()
|
|
172
|
+
* .where('name', '=', 'Max')
|
|
173
|
+
* .limit(5)
|
|
174
|
+
* .clearLimit()
|
|
175
|
+
* ```
|
|
176
|
+
*
|
|
177
|
+
* The generated SQL(PostgreSQL):
|
|
178
|
+
*
|
|
179
|
+
* ```sql
|
|
180
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
clearLimit() {
|
|
184
|
+
return new DeleteQueryBuilder({
|
|
185
|
+
...this.#props,
|
|
186
|
+
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithoutLimit(this.#props.queryNode),
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Clears the `order by` clause from the query.
|
|
191
|
+
*
|
|
192
|
+
* ### Examples
|
|
193
|
+
*
|
|
194
|
+
* ```ts
|
|
195
|
+
* db.deleteFrom('pet')
|
|
196
|
+
* .returningAll()
|
|
197
|
+
* .where('name', '=', 'Max')
|
|
198
|
+
* .orderBy('id')
|
|
199
|
+
* .clearOrderBy()
|
|
200
|
+
* ```
|
|
201
|
+
*
|
|
202
|
+
* The generated SQL(PostgreSQL):
|
|
203
|
+
*
|
|
204
|
+
* ```sql
|
|
205
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
206
|
+
* ```
|
|
207
|
+
*/
|
|
208
|
+
clearOrderBy() {
|
|
209
|
+
return new DeleteQueryBuilder({
|
|
210
|
+
...this.#props,
|
|
211
|
+
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithoutOrderBy(this.#props.queryNode),
|
|
212
|
+
});
|
|
213
|
+
}
|
|
82
214
|
/**
|
|
83
215
|
* Adds an `order by` clause to the query.
|
|
84
216
|
*
|
|
@@ -267,17 +399,17 @@ class DeleteQueryBuilder {
|
|
|
267
399
|
/**
|
|
268
400
|
* Asserts that query's output row type equals the given type `T`.
|
|
269
401
|
*
|
|
270
|
-
* 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
|
|
271
403
|
* and much faster.
|
|
272
404
|
*
|
|
273
405
|
* Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
|
|
274
|
-
* for
|
|
406
|
+
* for TypeScript and you get errors like this:
|
|
275
407
|
*
|
|
276
408
|
* ```
|
|
277
409
|
* error TS2589: Type instantiation is excessively deep and possibly infinite.
|
|
278
410
|
* ```
|
|
279
411
|
*
|
|
280
|
-
* 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
|
|
281
413
|
* method to assert the output type of a query, Kysely can drop the complex output type that
|
|
282
414
|
* consists of multiple nested helper types and replace it with the simple asserted type.
|
|
283
415
|
*
|
|
@@ -330,9 +462,11 @@ class DeleteQueryBuilder {
|
|
|
330
462
|
*/
|
|
331
463
|
async execute() {
|
|
332
464
|
const compiledQuery = this.compile();
|
|
333
|
-
const query = compiledQuery.query;
|
|
334
465
|
const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
|
|
335
|
-
|
|
466
|
+
const { adapter } = this.#props.executor;
|
|
467
|
+
const query = compiledQuery.query;
|
|
468
|
+
if ((query.returning && adapter.supportsReturning) ||
|
|
469
|
+
(query.output && adapter.supportsOutput)) {
|
|
336
470
|
return result.rows;
|
|
337
471
|
}
|
|
338
472
|
return [
|
|
@@ -106,7 +106,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
106
106
|
* ```ts
|
|
107
107
|
* db.selectFrom('person')
|
|
108
108
|
* .selectAll('person')
|
|
109
|
-
* .where(sql
|
|
109
|
+
* .where(sql<string>`upper(first_name)`, '=', 'JENNIFER')
|
|
110
110
|
* ```
|
|
111
111
|
*/
|
|
112
112
|
<O, RE extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(name: string, args?: ReadonlyArray<RE>): ExpressionWrapper<DB, TB, O>;
|
|
@@ -173,7 +173,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
173
173
|
* If this function is used in a `select` statement, the type of the selected
|
|
174
174
|
* expression will be `number | string` by default. This is because Kysely can't know the
|
|
175
175
|
* type the db driver outputs. Sometimes the output can be larger than the largest
|
|
176
|
-
*
|
|
176
|
+
* JavaScript number and a string is returned instead. Most drivers allow you
|
|
177
177
|
* to configure the output type of large numbers and Kysely can't know if you've
|
|
178
178
|
* done so.
|
|
179
179
|
*
|
|
@@ -292,7 +292,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
292
292
|
* If this function is used in a `select` statement, the type of the selected
|
|
293
293
|
* expression will be `number | string | bigint` by default. This is because
|
|
294
294
|
* Kysely can't know the type the db driver outputs. Sometimes the output can
|
|
295
|
-
* be larger than the largest
|
|
295
|
+
* be larger than the largest JavaScript number and a string is returned instead.
|
|
296
296
|
* Most drivers allow you to configure the output type of large numbers and Kysely
|
|
297
297
|
* can't know if you've done so.
|
|
298
298
|
*
|
|
@@ -344,7 +344,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
344
344
|
* If this is used in a `select` statement, the type of the selected expression
|
|
345
345
|
* will be `number | string | bigint` by default. This is because Kysely
|
|
346
346
|
* can't know the type the db driver outputs. Sometimes the output can be larger
|
|
347
|
-
* than the largest
|
|
347
|
+
* than the largest JavaScript number and a string is returned instead. Most
|
|
348
348
|
* drivers allow you to configure the output type of large numbers and Kysely
|
|
349
349
|
* can't know if you've done so.
|
|
350
350
|
*
|
|
@@ -513,7 +513,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
513
513
|
* If this function is used in a `select` statement, the type of the selected
|
|
514
514
|
* expression will be `number | string` by default. This is because Kysely can't know the
|
|
515
515
|
* type the db driver outputs. Sometimes the output can be larger than the largest
|
|
516
|
-
*
|
|
516
|
+
* JavaScript number and a string is returned instead. Most drivers allow you
|
|
517
517
|
* to configure the output type of large numbers and Kysely can't know if you've
|
|
518
518
|
* done so.
|
|
519
519
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createFunctionModule =
|
|
3
|
+
exports.createFunctionModule = createFunctionModule;
|
|
4
4
|
const expression_wrapper_js_1 = require("../expression/expression-wrapper.js");
|
|
5
5
|
const aggregate_function_node_js_1 = require("../operation-node/aggregate-function-node.js");
|
|
6
6
|
const function_node_js_1 = require("../operation-node/function-node.js");
|
|
@@ -60,4 +60,3 @@ function createFunctionModule() {
|
|
|
60
60
|
},
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
|
-
exports.createFunctionModule = createFunctionModule;
|