kysely 0.27.3 → 0.27.5
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/.renovaterc.json +3 -0
- package/CONTRIBUTING.md +2 -2
- package/README.md +7 -7
- package/deno.check.d.ts +86 -0
- package/deno.check.json +21 -0
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +13 -3
- package/dist/cjs/dialect/dialect-adapter-base.js +4 -1
- package/dist/cjs/dialect/dialect-adapter.d.ts +16 -2
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +12 -7
- package/dist/cjs/dialect/mssql/mssql-adapter.js +2 -4
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +83 -55
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +1 -0
- package/dist/cjs/dialect/mssql/mssql-driver.js +114 -48
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
- package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
- package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
- package/dist/cjs/driver/database-connection.d.ts +3 -1
- package/dist/cjs/driver/dummy-driver.d.ts +13 -12
- package/dist/cjs/driver/dummy-driver.js +13 -12
- package/dist/cjs/dynamic/dynamic-reference-builder.js +2 -2
- package/dist/cjs/dynamic/dynamic.d.ts +7 -7
- package/dist/cjs/dynamic/dynamic.js +7 -7
- package/dist/cjs/expression/expression-builder.d.ts +153 -62
- package/dist/cjs/expression/expression-builder.js +2 -3
- package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
- package/dist/cjs/expression/expression.d.ts +40 -5
- package/dist/cjs/expression/expression.js +2 -3
- package/dist/cjs/helpers/mssql.d.ts +74 -14
- package/dist/cjs/helpers/mssql.js +77 -18
- package/dist/cjs/helpers/mysql.d.ts +17 -13
- package/dist/cjs/helpers/mysql.js +20 -17
- package/dist/cjs/helpers/postgres.d.ts +11 -8
- package/dist/cjs/helpers/postgres.js +14 -12
- package/dist/cjs/helpers/sqlite.d.ts +41 -16
- package/dist/cjs/helpers/sqlite.js +44 -20
- package/dist/cjs/index.d.ts +28 -21
- package/dist/cjs/index.js +28 -21
- package/dist/cjs/kysely.d.ts +100 -42
- package/dist/cjs/kysely.js +63 -39
- package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
- package/dist/cjs/migration/file-migration-provider.js +2 -2
- package/dist/cjs/migration/migrator.d.ts +82 -14
- package/dist/cjs/migration/migrator.js +82 -14
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
- package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
- 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 +17 -3
- package/dist/cjs/operation-node/delete-query-node.d.ts +3 -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 +3 -0
- package/dist/cjs/operation-node/merge-query-node.d.ts +3 -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 +11 -3
- package/dist/cjs/operation-node/operation-node-transformer.js +26 -3
- 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 +15 -6
- package/dist/cjs/operation-node/query-node.js +17 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.js +6 -8
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -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 +54 -27
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +26 -21
- package/dist/cjs/plugin/camel-case/camel-case.js +2 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
- package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
- package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
- package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
- package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +219 -43
- package/dist/cjs/query-builder/delete-query-builder.js +95 -31
- package/dist/cjs/query-builder/function-module.d.ts +40 -93
- package/dist/cjs/query-builder/function-module.js +1 -2
- package/dist/cjs/query-builder/insert-query-builder.d.ts +326 -67
- package/dist/cjs/query-builder/insert-query-builder.js +212 -61
- package/dist/cjs/query-builder/insert-result.d.ts +10 -5
- package/dist/cjs/query-builder/insert-result.js +10 -5
- package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
- package/dist/cjs/query-builder/json-path-builder.js +8 -5
- package/dist/cjs/query-builder/merge-query-builder.d.ts +312 -10
- package/dist/cjs/query-builder/merge-query-builder.js +98 -7
- package/dist/cjs/query-builder/no-result-error.js +2 -2
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +53 -20
- package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
- package/dist/cjs/query-builder/output-interface.d.ts +138 -0
- package/dist/cjs/query-builder/output-interface.js +2 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +7 -5
- package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +370 -73
- package/dist/cjs/query-builder/select-query-builder.js +14 -9
- package/dist/cjs/query-builder/update-query-builder.d.ts +225 -31
- package/dist/cjs/query-builder/update-query-builder.js +96 -17
- 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 +6 -2
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +45 -1
- package/dist/cjs/query-creator.d.ts +122 -21
- package/dist/cjs/query-creator.js +56 -3
- package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
- package/dist/cjs/raw-builder/raw-builder.js +1 -2
- package/dist/cjs/raw-builder/sql.d.ts +31 -12
- package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
- package/dist/cjs/schema/alter-column-builder.js +20 -3
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +44 -10
- package/dist/cjs/schema/alter-table-add-index-builder.js +27 -10
- package/dist/cjs/schema/alter-table-builder.js +1 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +286 -24
- package/dist/cjs/schema/column-definition-builder.js +288 -24
- package/dist/cjs/schema/create-table-builder.d.ts +86 -33
- package/dist/cjs/schema/create-table-builder.js +86 -33
- package/dist/cjs/util/assert.js +2 -3
- package/dist/cjs/util/column-type.d.ts +5 -9
- 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.d.ts +4 -2
- package/dist/cjs/util/require-all-props.js +5 -4
- package/dist/cjs/util/stack-trace-utils.js +1 -2
- package/dist/cjs/util/streamable.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +4 -2
- package/dist/esm/dialect/dialect-adapter-base.d.ts +13 -3
- package/dist/esm/dialect/dialect-adapter-base.js +4 -1
- package/dist/esm/dialect/dialect-adapter.d.ts +16 -2
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +12 -7
- package/dist/esm/dialect/mssql/mssql-adapter.js +2 -4
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +83 -55
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +1 -0
- package/dist/esm/dialect/mssql/mssql-driver.js +114 -48
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
- package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
- package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
- package/dist/esm/driver/database-connection.d.ts +3 -1
- package/dist/esm/driver/dummy-driver.d.ts +13 -12
- package/dist/esm/driver/dummy-driver.js +13 -12
- package/dist/esm/dynamic/dynamic.d.ts +7 -7
- package/dist/esm/dynamic/dynamic.js +7 -7
- package/dist/esm/expression/expression-builder.d.ts +153 -62
- package/dist/esm/expression/expression-wrapper.d.ts +92 -23
- package/dist/esm/expression/expression.d.ts +40 -5
- package/dist/esm/helpers/mssql.d.ts +74 -14
- package/dist/esm/helpers/mssql.js +74 -14
- package/dist/esm/helpers/mysql.d.ts +17 -13
- package/dist/esm/helpers/mysql.js +17 -13
- package/dist/esm/helpers/postgres.d.ts +11 -8
- package/dist/esm/helpers/postgres.js +11 -8
- package/dist/esm/helpers/sqlite.d.ts +41 -16
- package/dist/esm/helpers/sqlite.js +41 -16
- package/dist/esm/index.d.ts +28 -21
- package/dist/esm/index.js +28 -21
- package/dist/esm/kysely.d.ts +100 -42
- package/dist/esm/kysely.js +61 -37
- package/dist/esm/migration/file-migration-provider.d.ts +2 -2
- package/dist/esm/migration/file-migration-provider.js +2 -2
- package/dist/esm/migration/migrator.d.ts +82 -14
- package/dist/esm/migration/migrator.js +82 -14
- package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
- package/dist/esm/operation-node/aggregate-function-node.js +9 -0
- 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 +15 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +3 -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 +3 -0
- package/dist/esm/operation-node/merge-query-node.d.ts +3 -0
- package/dist/esm/operation-node/on-node.d.ts +1 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +11 -3
- package/dist/esm/operation-node/operation-node-transformer.js +26 -3
- 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 +15 -6
- package/dist/esm/operation-node/query-node.js +17 -0
- package/dist/esm/operation-node/select-query-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.js +6 -8
- package/dist/esm/operation-node/update-query-node.d.ts +3 -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 +54 -27
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +26 -21
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
- package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
- package/dist/esm/plugin/noop-plugin.d.ts +28 -6
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
- package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
- package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +219 -43
- package/dist/esm/query-builder/delete-query-builder.js +95 -31
- package/dist/esm/query-builder/function-module.d.ts +40 -93
- package/dist/esm/query-builder/insert-query-builder.d.ts +326 -67
- package/dist/esm/query-builder/insert-query-builder.js +212 -61
- package/dist/esm/query-builder/insert-result.d.ts +10 -5
- package/dist/esm/query-builder/insert-result.js +10 -5
- package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
- package/dist/esm/query-builder/json-path-builder.js +8 -5
- package/dist/esm/query-builder/merge-query-builder.d.ts +312 -10
- package/dist/esm/query-builder/merge-query-builder.js +98 -7
- package/dist/esm/query-builder/on-conflict-builder.d.ts +53 -20
- package/dist/esm/query-builder/on-conflict-builder.js +41 -16
- package/dist/esm/query-builder/output-interface.d.ts +138 -0
- package/dist/esm/query-builder/output-interface.js +2 -0
- package/dist/esm/query-builder/returning-interface.d.ts +7 -5
- package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +370 -73
- package/dist/esm/query-builder/select-query-builder.js +13 -7
- package/dist/esm/query-builder/update-query-builder.d.ts +225 -31
- package/dist/esm/query-builder/update-query-builder.js +96 -17
- 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 +6 -2
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/esm/query-compiler/default-query-compiler.js +45 -1
- package/dist/esm/query-creator.d.ts +122 -21
- package/dist/esm/query-creator.js +56 -3
- package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
- package/dist/esm/raw-builder/sql.d.ts +31 -12
- package/dist/esm/schema/alter-column-builder.d.ts +17 -3
- package/dist/esm/schema/alter-column-builder.js +20 -3
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +44 -10
- package/dist/esm/schema/alter-table-add-index-builder.js +27 -10
- package/dist/esm/schema/alter-table-builder.js +1 -2
- package/dist/esm/schema/column-definition-builder.d.ts +286 -24
- package/dist/esm/schema/column-definition-builder.js +288 -24
- package/dist/esm/schema/create-table-builder.d.ts +86 -33
- package/dist/esm/schema/create-table-builder.js +86 -33
- package/dist/esm/util/column-type.d.ts +5 -9
- package/dist/esm/util/object-utils.js +18 -5
- package/dist/esm/util/require-all-props.d.ts +4 -2
- package/dist/esm/util/require-all-props.js +4 -2
- package/dist/esm/util/streamable.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +4 -2
- package/package.json +30 -24
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createSelectQueryBuilder =
|
|
3
|
+
exports.createSelectQueryBuilder = createSelectQueryBuilder;
|
|
4
4
|
const alias_node_js_1 = require("../operation-node/alias-node.js");
|
|
5
5
|
const select_modifier_node_js_1 = require("../operation-node/select-modifier-node.js");
|
|
6
6
|
const join_parser_js_1 = require("../parser/join-parser.js");
|
|
@@ -79,7 +79,7 @@ class SelectQueryBuilderImpl {
|
|
|
79
79
|
modifyEnd(modifier) {
|
|
80
80
|
return new SelectQueryBuilderImpl({
|
|
81
81
|
...this.#props,
|
|
82
|
-
queryNode:
|
|
82
|
+
queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.createWithExpression(modifier.toOperationNode())),
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
85
|
distinct() {
|
|
@@ -91,37 +91,37 @@ class SelectQueryBuilderImpl {
|
|
|
91
91
|
forUpdate(of) {
|
|
92
92
|
return new SelectQueryBuilderImpl({
|
|
93
93
|
...this.#props,
|
|
94
|
-
queryNode:
|
|
94
|
+
queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForUpdate', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
97
|
forShare(of) {
|
|
98
98
|
return new SelectQueryBuilderImpl({
|
|
99
99
|
...this.#props,
|
|
100
|
-
queryNode:
|
|
100
|
+
queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForShare', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
forKeyShare(of) {
|
|
104
104
|
return new SelectQueryBuilderImpl({
|
|
105
105
|
...this.#props,
|
|
106
|
-
queryNode:
|
|
106
|
+
queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForKeyShare', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
109
|
forNoKeyUpdate(of) {
|
|
110
110
|
return new SelectQueryBuilderImpl({
|
|
111
111
|
...this.#props,
|
|
112
|
-
queryNode:
|
|
112
|
+
queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForNoKeyUpdate', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
115
|
skipLocked() {
|
|
116
116
|
return new SelectQueryBuilderImpl({
|
|
117
117
|
...this.#props,
|
|
118
|
-
queryNode:
|
|
118
|
+
queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('SkipLocked')),
|
|
119
119
|
});
|
|
120
120
|
}
|
|
121
121
|
noWait() {
|
|
122
122
|
return new SelectQueryBuilderImpl({
|
|
123
123
|
...this.#props,
|
|
124
|
-
queryNode:
|
|
124
|
+
queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('NoWait')),
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
127
|
selectAll(table) {
|
|
@@ -271,6 +271,12 @@ class SelectQueryBuilderImpl {
|
|
|
271
271
|
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithoutOrderBy(this.#props.queryNode),
|
|
272
272
|
});
|
|
273
273
|
}
|
|
274
|
+
clearGroupBy() {
|
|
275
|
+
return new SelectQueryBuilderImpl({
|
|
276
|
+
...this.#props,
|
|
277
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithoutGroupBy(this.#props.queryNode),
|
|
278
|
+
});
|
|
279
|
+
}
|
|
274
280
|
$call(func) {
|
|
275
281
|
return func(this);
|
|
276
282
|
}
|
|
@@ -344,7 +350,6 @@ class SelectQueryBuilderImpl {
|
|
|
344
350
|
function createSelectQueryBuilder(props) {
|
|
345
351
|
return new SelectQueryBuilderImpl(props);
|
|
346
352
|
}
|
|
347
|
-
exports.createSelectQueryBuilder = createSelectQueryBuilder;
|
|
348
353
|
/**
|
|
349
354
|
* {@link SelectQueryBuilder} with an alias. The result of calling {@link SelectQueryBuilder.as}.
|
|
350
355
|
*/
|
|
@@ -3,7 +3,7 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
|
3
3
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
4
4
|
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
5
5
|
import { SelectExpression, SelectCallback } from '../parser/select-parser.js';
|
|
6
|
-
import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
6
|
+
import { ReturningAllRow, ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
7
7
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
8
8
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
9
9
|
import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '../util/type-utils.js';
|
|
@@ -17,7 +17,6 @@ import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
|
17
17
|
import { WhereInterface } from './where-interface.js';
|
|
18
18
|
import { ReturningInterface } from './returning-interface.js';
|
|
19
19
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
20
|
-
import { Selectable } from '../util/column-type.js';
|
|
21
20
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
22
21
|
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
23
22
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
@@ -25,7 +24,8 @@ import { KyselyTypeError } from '../util/type-error.js';
|
|
|
25
24
|
import { Streamable } from '../util/streamable.js';
|
|
26
25
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
27
26
|
import { ValueExpression } from '../parser/value-parser.js';
|
|
28
|
-
|
|
27
|
+
import { OutputCallback, OutputExpression, OutputInterface, OutputPrefix, SelectExpressionFromOutputCallback, SelectExpressionFromOutputExpression } from './output-interface.js';
|
|
28
|
+
export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OutputInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
|
|
29
29
|
#private;
|
|
30
30
|
constructor(props: UpdateQueryBuilderProps);
|
|
31
31
|
/**
|
|
@@ -60,6 +60,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
60
60
|
* you can always use:
|
|
61
61
|
*
|
|
62
62
|
* ```ts
|
|
63
|
+
* import { sql } from 'kysely'
|
|
64
|
+
*
|
|
63
65
|
* sql`your operator`
|
|
64
66
|
* ```
|
|
65
67
|
*
|
|
@@ -71,7 +73,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
71
73
|
* const persons = await db
|
|
72
74
|
* .selectFrom('person')
|
|
73
75
|
* .selectAll()
|
|
74
|
-
* .where('id', 'in', [
|
|
76
|
+
* .where('id', 'in', [1, 2, 3])
|
|
75
77
|
* .execute()
|
|
76
78
|
* ```
|
|
77
79
|
*
|
|
@@ -290,7 +292,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
290
292
|
* .selectFrom('person')
|
|
291
293
|
* .selectAll()
|
|
292
294
|
* .where(
|
|
293
|
-
* sql
|
|
295
|
+
* sql<string>`coalesce(first_name, last_name)`,
|
|
294
296
|
* 'like',
|
|
295
297
|
* '%' + name + '%',
|
|
296
298
|
* )
|
|
@@ -319,6 +321,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
319
321
|
* import { sql } from 'kysely'
|
|
320
322
|
* const { ref } = db.dynamic
|
|
321
323
|
*
|
|
324
|
+
* const columnFromUserInput: string = 'id'
|
|
325
|
+
*
|
|
322
326
|
* const persons = await db
|
|
323
327
|
* .selectFrom('person')
|
|
324
328
|
* .selectAll()
|
|
@@ -554,7 +558,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
554
558
|
* ```ts
|
|
555
559
|
* await db.selectFrom('person')
|
|
556
560
|
* .innerJoin(
|
|
557
|
-
*
|
|
561
|
+
* db.selectFrom('pet')
|
|
558
562
|
* .select(['owner_id', 'name'])
|
|
559
563
|
* .where('name', '=', 'Doggo')
|
|
560
564
|
* .as('doggos'),
|
|
@@ -603,15 +607,17 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
603
607
|
* Update the first 2 rows in the 'person' table:
|
|
604
608
|
*
|
|
605
609
|
* ```ts
|
|
606
|
-
*
|
|
610
|
+
* await db
|
|
607
611
|
* .updateTable('person')
|
|
608
612
|
* .set({ first_name: 'Foo' })
|
|
609
|
-
* .limit(2)
|
|
613
|
+
* .limit(2)
|
|
614
|
+
* .execute()
|
|
610
615
|
* ```
|
|
611
616
|
*
|
|
612
617
|
* The generated SQL (MySQL):
|
|
618
|
+
*
|
|
613
619
|
* ```sql
|
|
614
|
-
* update `person` set `first_name` =
|
|
620
|
+
* update `person` set `first_name` = ? limit ?
|
|
615
621
|
* ```
|
|
616
622
|
*/
|
|
617
623
|
limit(limit: ValueExpression<DB, TB, number>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
@@ -643,7 +649,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
643
649
|
* first_name: 'Jennifer',
|
|
644
650
|
* last_name: 'Aniston'
|
|
645
651
|
* })
|
|
646
|
-
* .where('id', '=',
|
|
652
|
+
* .where('id', '=', 1)
|
|
647
653
|
* .executeTakeFirst()
|
|
648
654
|
*
|
|
649
655
|
* console.log(result.numUpdatedRows)
|
|
@@ -668,7 +674,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
668
674
|
* first_name: eb.selectFrom('pet').select('name').limit(1),
|
|
669
675
|
* last_name: 'updated',
|
|
670
676
|
* }))
|
|
671
|
-
* .where('id', '=',
|
|
677
|
+
* .where('id', '=', 1)
|
|
672
678
|
* .executeTakeFirst()
|
|
673
679
|
*
|
|
674
680
|
* console.log(result.numUpdatedRows)
|
|
@@ -690,13 +696,15 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
690
696
|
* (or other target) and the second as the value:
|
|
691
697
|
*
|
|
692
698
|
* ```ts
|
|
699
|
+
* import { sql } from 'kysely'
|
|
700
|
+
*
|
|
693
701
|
* const result = await db
|
|
694
702
|
* .updateTable('person')
|
|
695
703
|
* .set('first_name', 'Foo')
|
|
696
704
|
* // As always, both arguments can be arbitrary expressions or
|
|
697
705
|
* // callbacks that give you access to an expression builder:
|
|
698
|
-
* .set(sql
|
|
699
|
-
* .where('id', '=',
|
|
706
|
+
* .set(sql<string>`address['postalCode']`, (eb) => eb.val('61710'))
|
|
707
|
+
* .where('id', '=', 1)
|
|
700
708
|
* .executeTakeFirst()
|
|
701
709
|
* ```
|
|
702
710
|
*
|
|
@@ -736,7 +744,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
736
744
|
* first_name: selectFrom('person').select('first_name').limit(1),
|
|
737
745
|
* middle_name: ref('first_name'),
|
|
738
746
|
* age: eb('age', '+', 1),
|
|
739
|
-
* last_name: sql
|
|
747
|
+
* last_name: sql<string>`${'Ani'} || ${'ston'}`,
|
|
740
748
|
* }))
|
|
741
749
|
* .where('id', '=', 1)
|
|
742
750
|
* .executeTakeFirst()
|
|
@@ -781,20 +789,20 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
781
789
|
* last_name: 'Aniston'
|
|
782
790
|
* })
|
|
783
791
|
* .returning('id')
|
|
784
|
-
* .
|
|
792
|
+
* .executeTakeFirstOrThrow()
|
|
785
793
|
* ```
|
|
786
794
|
*
|
|
787
795
|
* Return multiple columns:
|
|
788
796
|
*
|
|
789
797
|
* ```ts
|
|
790
|
-
* const { id,
|
|
798
|
+
* const { id, last_name } = await db
|
|
791
799
|
* .insertInto('person')
|
|
792
800
|
* .values({
|
|
793
801
|
* first_name: 'Jennifer',
|
|
794
802
|
* last_name: 'Aniston'
|
|
795
803
|
* })
|
|
796
804
|
* .returning(['id', 'last_name'])
|
|
797
|
-
* .
|
|
805
|
+
* .executeTakeFirstOrThrow()
|
|
798
806
|
* ```
|
|
799
807
|
*
|
|
800
808
|
* Return arbitrary expressions:
|
|
@@ -811,9 +819,9 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
811
819
|
* .returning((eb) => [
|
|
812
820
|
* 'id as id',
|
|
813
821
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
814
|
-
* eb.selectFrom('
|
|
822
|
+
* eb.selectFrom('pet').select('pet.id').limit(1).as('first_pet_id')
|
|
815
823
|
* ])
|
|
816
|
-
* .
|
|
824
|
+
* .executeTakeFirstOrThrow()
|
|
817
825
|
* ```
|
|
818
826
|
*/
|
|
819
827
|
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
|
|
@@ -822,8 +830,160 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
822
830
|
/**
|
|
823
831
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
824
832
|
* that support `returning` such as PostgreSQL.
|
|
833
|
+
*
|
|
834
|
+
* Also see the {@link returning} method.
|
|
835
|
+
*/
|
|
836
|
+
returningAll<T extends TB>(tables: ReadonlyArray<T>): UpdateQueryBuilder<DB, UT, TB, ReturningAllRow<DB, T, O>>;
|
|
837
|
+
returningAll<T extends TB>(table: T): UpdateQueryBuilder<DB, UT, TB, ReturningAllRow<DB, T, O>>;
|
|
838
|
+
returningAll(): UpdateQueryBuilder<DB, UT, TB, ReturningAllRow<DB, TB, O>>;
|
|
839
|
+
/**
|
|
840
|
+
* Allows you to return data from modified rows.
|
|
841
|
+
*
|
|
842
|
+
* On supported databases like MS SQL Server (MSSQL), this method can be chained
|
|
843
|
+
* to `insert`, `update`, `delete` and `merge` queries to return data.
|
|
844
|
+
*
|
|
845
|
+
* Also see the {@link outputAll} method.
|
|
846
|
+
*
|
|
847
|
+
* ### Examples
|
|
848
|
+
*
|
|
849
|
+
* Return one column:
|
|
850
|
+
*
|
|
851
|
+
* ```ts
|
|
852
|
+
* const { id } = await db
|
|
853
|
+
* .insertInto('person')
|
|
854
|
+
* .output('inserted.id')
|
|
855
|
+
* .values({
|
|
856
|
+
* first_name: 'Jennifer',
|
|
857
|
+
* last_name: 'Aniston',
|
|
858
|
+
* gender: 'female',
|
|
859
|
+
* })
|
|
860
|
+
* .executeTakeFirstOrThrow()
|
|
861
|
+
* ```
|
|
862
|
+
*
|
|
863
|
+
* The generated SQL (MSSQL):
|
|
864
|
+
*
|
|
865
|
+
* ```sql
|
|
866
|
+
* insert into "person" ("first_name", "last_name", "gender")
|
|
867
|
+
* output "inserted"."id"
|
|
868
|
+
* values (@1, @2, @3)
|
|
869
|
+
* ```
|
|
870
|
+
*
|
|
871
|
+
* Return multiple columns:
|
|
872
|
+
*
|
|
873
|
+
* ```ts
|
|
874
|
+
* const { old_first_name, old_last_name, new_first_name, new_last_name } = await db
|
|
875
|
+
* .updateTable('person')
|
|
876
|
+
* .set({ first_name: 'John', last_name: 'Doe' })
|
|
877
|
+
* .output([
|
|
878
|
+
* 'deleted.first_name as old_first_name',
|
|
879
|
+
* 'deleted.last_name as old_last_name',
|
|
880
|
+
* 'inserted.first_name as new_first_name',
|
|
881
|
+
* 'inserted.last_name as new_last_name',
|
|
882
|
+
* ])
|
|
883
|
+
* .where('created_at', '<', new Date())
|
|
884
|
+
* .executeTakeFirstOrThrow()
|
|
885
|
+
* ```
|
|
886
|
+
*
|
|
887
|
+
* The generated SQL (MSSQL):
|
|
888
|
+
*
|
|
889
|
+
* ```sql
|
|
890
|
+
* update "person"
|
|
891
|
+
* set "first_name" = @1, "last_name" = @2
|
|
892
|
+
* output "deleted"."first_name" as "old_first_name",
|
|
893
|
+
* "deleted"."last_name" as "old_last_name",
|
|
894
|
+
* "inserted"."first_name" as "new_first_name",
|
|
895
|
+
* "inserted"."last_name" as "new_last_name"
|
|
896
|
+
* where "created_at" < @3
|
|
897
|
+
* ```
|
|
898
|
+
*
|
|
899
|
+
* Return arbitrary expressions:
|
|
900
|
+
*
|
|
901
|
+
* ```ts
|
|
902
|
+
* import { sql } from 'kysely'
|
|
903
|
+
*
|
|
904
|
+
* const { full_name } = await db
|
|
905
|
+
* .deleteFrom('person')
|
|
906
|
+
* .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name'))
|
|
907
|
+
* .where('created_at', '<', new Date())
|
|
908
|
+
* .executeTakeFirstOrThrow()
|
|
909
|
+
* ```
|
|
910
|
+
*
|
|
911
|
+
* The generated SQL (MSSQL):
|
|
912
|
+
*
|
|
913
|
+
* ```sql
|
|
914
|
+
* delete from "person"
|
|
915
|
+
* output concat("deleted"."first_name", ' ', "deleted"."last_name") as "full_name"
|
|
916
|
+
* where "created_at" < @1
|
|
917
|
+
* ```
|
|
918
|
+
*
|
|
919
|
+
* Return the action performed on the row:
|
|
920
|
+
*
|
|
921
|
+
* ```ts
|
|
922
|
+
* await db
|
|
923
|
+
* .mergeInto('person')
|
|
924
|
+
* .using('pet', 'pet.owner_id', 'person.id')
|
|
925
|
+
* .whenMatched()
|
|
926
|
+
* .thenDelete()
|
|
927
|
+
* .whenNotMatched()
|
|
928
|
+
* .thenInsertValues({
|
|
929
|
+
* first_name: 'John',
|
|
930
|
+
* last_name: 'Doe',
|
|
931
|
+
* gender: 'male'
|
|
932
|
+
* })
|
|
933
|
+
* .output([
|
|
934
|
+
* 'inserted.id as inserted_id',
|
|
935
|
+
* 'deleted.id as deleted_id',
|
|
936
|
+
* ])
|
|
937
|
+
* .execute()
|
|
938
|
+
* ```
|
|
939
|
+
*
|
|
940
|
+
* The generated SQL (MSSQL):
|
|
941
|
+
*
|
|
942
|
+
* ```sql
|
|
943
|
+
* merge into "person"
|
|
944
|
+
* using "pet" on "pet"."owner_id" = "person"."id"
|
|
945
|
+
* when matched then delete
|
|
946
|
+
* when not matched then
|
|
947
|
+
* insert ("first_name", "last_name", "gender")
|
|
948
|
+
* values (@1, @2, @3)
|
|
949
|
+
* output "inserted"."id" as "inserted_id", "deleted"."id" as "deleted_id"
|
|
950
|
+
* ```
|
|
951
|
+
*
|
|
825
952
|
*/
|
|
826
|
-
|
|
953
|
+
output<OE extends OutputExpression<DB, UT>>(selections: readonly OE[]): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>>;
|
|
954
|
+
output<CB extends OutputCallback<DB, TB>>(callback: CB): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputCallback<CB>>>;
|
|
955
|
+
output<OE extends OutputExpression<DB, TB>>(selection: OE): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>>;
|
|
956
|
+
/**
|
|
957
|
+
* Adds an `output {prefix}.*` to an `insert`/`update`/`delete`/`merge` query on databases
|
|
958
|
+
* that support `output` such as MS SQL Server (MSSQL).
|
|
959
|
+
*
|
|
960
|
+
* Also see the {@link output} method.
|
|
961
|
+
*/
|
|
962
|
+
outputAll(table: OutputPrefix): UpdateQueryBuilder<DB, UT, TB, ReturningAllRow<DB, TB, O>>;
|
|
963
|
+
/**
|
|
964
|
+
* This can be used to add any additional SQL to the end of the query.
|
|
965
|
+
*
|
|
966
|
+
* ### Examples
|
|
967
|
+
*
|
|
968
|
+
* ```ts
|
|
969
|
+
* import { sql } from 'kysely'
|
|
970
|
+
*
|
|
971
|
+
* await db.updateTable('person')
|
|
972
|
+
* .set({ age: 39 })
|
|
973
|
+
* .where('first_name', '=', 'John')
|
|
974
|
+
* .modifyEnd(sql.raw('-- This is a comment'))
|
|
975
|
+
* .execute()
|
|
976
|
+
* ```
|
|
977
|
+
*
|
|
978
|
+
* The generated SQL (MySQL):
|
|
979
|
+
*
|
|
980
|
+
* ```sql
|
|
981
|
+
* update `person`
|
|
982
|
+
* set `age` = 39
|
|
983
|
+
* where `first_name` = "John" -- This is a comment
|
|
984
|
+
* ```
|
|
985
|
+
*/
|
|
986
|
+
modifyEnd(modifier: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
827
987
|
/**
|
|
828
988
|
* Clears all `returning` clauses from the query.
|
|
829
989
|
*
|
|
@@ -856,11 +1016,18 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
856
1016
|
* The next example uses a helper function `log` to log a query:
|
|
857
1017
|
*
|
|
858
1018
|
* ```ts
|
|
1019
|
+
* import type { Compilable } from 'kysely'
|
|
1020
|
+
* import type { PersonUpdate } from 'type-editor' // imaginary module
|
|
1021
|
+
*
|
|
859
1022
|
* function log<T extends Compilable>(qb: T): T {
|
|
860
1023
|
* console.log(qb.compile())
|
|
861
1024
|
* return qb
|
|
862
1025
|
* }
|
|
863
1026
|
*
|
|
1027
|
+
* const values = {
|
|
1028
|
+
* first_name: 'John',
|
|
1029
|
+
* } satisfies PersonUpdate
|
|
1030
|
+
*
|
|
864
1031
|
* db.updateTable('person')
|
|
865
1032
|
* .set(values)
|
|
866
1033
|
* .$call(log)
|
|
@@ -881,7 +1048,9 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
881
1048
|
* ### Examples
|
|
882
1049
|
*
|
|
883
1050
|
* ```ts
|
|
884
|
-
*
|
|
1051
|
+
* import type { PersonUpdate } from 'type-editor' // imaginary module
|
|
1052
|
+
*
|
|
1053
|
+
* async function updatePerson(id: number, updates: PersonUpdate, returnLastName: boolean) {
|
|
885
1054
|
* return await db
|
|
886
1055
|
* .updateTable('person')
|
|
887
1056
|
* .set(updates)
|
|
@@ -897,11 +1066,11 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
897
1066
|
* the code. In the example above the return type of the `updatePerson` function is:
|
|
898
1067
|
*
|
|
899
1068
|
* ```ts
|
|
900
|
-
* {
|
|
1069
|
+
* Promise<{
|
|
901
1070
|
* id: number
|
|
902
1071
|
* first_name: string
|
|
903
1072
|
* last_name?: string
|
|
904
|
-
* }
|
|
1073
|
+
* }>
|
|
905
1074
|
* ```
|
|
906
1075
|
*/
|
|
907
1076
|
$if<O2>(condition: boolean, func: (qb: this) => UpdateQueryBuilder<any, any, any, O2>): O2 extends UpdateResult ? UpdateQueryBuilder<DB, UT, TB, UpdateResult> : O2 extends O & infer E ? UpdateQueryBuilder<DB, UT, TB, O & Partial<E>> : UpdateQueryBuilder<DB, UT, TB, Partial<O2>>;
|
|
@@ -930,27 +1099,41 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
930
1099
|
* Turn this code:
|
|
931
1100
|
*
|
|
932
1101
|
* ```ts
|
|
1102
|
+
* import type { Person } from 'type-editor' // imaginary module
|
|
1103
|
+
*
|
|
1104
|
+
* const id = 1
|
|
1105
|
+
* const now = new Date().toISOString()
|
|
1106
|
+
*
|
|
933
1107
|
* const person = await db.updateTable('person')
|
|
934
|
-
* .set({
|
|
1108
|
+
* .set({ deleted_at: now })
|
|
935
1109
|
* .where('id', '=', id)
|
|
936
1110
|
* .where('nullable_column', 'is not', null)
|
|
937
1111
|
* .returningAll()
|
|
938
1112
|
* .executeTakeFirstOrThrow()
|
|
939
1113
|
*
|
|
940
|
-
* if (person
|
|
1114
|
+
* if (isWithNoNullValue(person)) {
|
|
941
1115
|
* functionThatExpectsPersonWithNonNullValue(person)
|
|
942
1116
|
* }
|
|
1117
|
+
*
|
|
1118
|
+
* function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {
|
|
1119
|
+
* return person.nullable_column != null
|
|
1120
|
+
* }
|
|
943
1121
|
* ```
|
|
944
1122
|
*
|
|
945
1123
|
* Into this:
|
|
946
1124
|
*
|
|
947
1125
|
* ```ts
|
|
1126
|
+
* import type { NotNull } from 'kysely'
|
|
1127
|
+
*
|
|
1128
|
+
* const id = 1
|
|
1129
|
+
* const now = new Date().toISOString()
|
|
1130
|
+
*
|
|
948
1131
|
* const person = await db.updateTable('person')
|
|
949
|
-
* .set({
|
|
1132
|
+
* .set({ deleted_at: now })
|
|
950
1133
|
* .where('id', '=', id)
|
|
951
1134
|
* .where('nullable_column', 'is not', null)
|
|
952
1135
|
* .returningAll()
|
|
953
|
-
* .$narrowType<{
|
|
1136
|
+
* .$narrowType<{ deleted_at: Date; nullable_column: NotNull }>()
|
|
954
1137
|
* .executeTakeFirstOrThrow()
|
|
955
1138
|
*
|
|
956
1139
|
* functionThatExpectsPersonWithNonNullValue(person)
|
|
@@ -960,17 +1143,17 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
960
1143
|
/**
|
|
961
1144
|
* Asserts that query's output row type equals the given type `T`.
|
|
962
1145
|
*
|
|
963
|
-
* This method can be used to simplify excessively complex types to make
|
|
1146
|
+
* This method can be used to simplify excessively complex types to make TypeScript happy
|
|
964
1147
|
* and much faster.
|
|
965
1148
|
*
|
|
966
1149
|
* Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
|
|
967
|
-
* for
|
|
1150
|
+
* for TypeScript and you get errors like this:
|
|
968
1151
|
*
|
|
969
1152
|
* ```
|
|
970
1153
|
* error TS2589: Type instantiation is excessively deep and possibly infinite.
|
|
971
1154
|
* ```
|
|
972
1155
|
*
|
|
973
|
-
* In these case you can often use this method to help
|
|
1156
|
+
* In these case you can often use this method to help TypeScript a little bit. When you use this
|
|
974
1157
|
* method to assert the output type of a query, Kysely can drop the complex output type that
|
|
975
1158
|
* consists of multiple nested helper types and replace it with the simple asserted type.
|
|
976
1159
|
*
|
|
@@ -980,6 +1163,17 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
980
1163
|
* ### Examples
|
|
981
1164
|
*
|
|
982
1165
|
* ```ts
|
|
1166
|
+
* import type { PersonUpdate, PetUpdate, Species } from 'type-editor' // imaginary module
|
|
1167
|
+
*
|
|
1168
|
+
* const person = {
|
|
1169
|
+
* id: 1,
|
|
1170
|
+
* gender: 'other',
|
|
1171
|
+
* } satisfies PersonUpdate
|
|
1172
|
+
*
|
|
1173
|
+
* const pet = {
|
|
1174
|
+
* name: 'Fluffy',
|
|
1175
|
+
* } satisfies PetUpdate
|
|
1176
|
+
*
|
|
983
1177
|
* const result = await db
|
|
984
1178
|
* .with('updated_person', (qb) => qb
|
|
985
1179
|
* .updateTable('person')
|
|
@@ -1036,7 +1230,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
1036
1230
|
* ### Examples
|
|
1037
1231
|
*
|
|
1038
1232
|
* ```ts
|
|
1039
|
-
* const stream = db
|
|
1233
|
+
* const stream = db
|
|
1040
1234
|
* .selectFrom('person')
|
|
1041
1235
|
* .select(['first_name', 'last_name'])
|
|
1042
1236
|
* .where('gender', '=', 'other')
|