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
|
@@ -18,9 +18,12 @@ export declare class JSONPathBuilder<S, O = S> {
|
|
|
18
18
|
* ### Examples
|
|
19
19
|
*
|
|
20
20
|
* ```ts
|
|
21
|
-
* db.selectFrom('person')
|
|
22
|
-
*
|
|
23
|
-
* )
|
|
21
|
+
* await db.selectFrom('person')
|
|
22
|
+
* .select(eb =>
|
|
23
|
+
* eb.ref('nicknames', '->').at(0).as('primary_nickname')
|
|
24
|
+
* )
|
|
25
|
+
* .execute()
|
|
26
|
+
* ```
|
|
24
27
|
*
|
|
25
28
|
* The generated SQL (PostgreSQL):
|
|
26
29
|
*
|
|
@@ -130,11 +133,19 @@ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O
|
|
|
130
133
|
* All expressions need to have this getter for complicated type-related reasons.
|
|
131
134
|
* Simply add this getter for your expression and always return `undefined` from it:
|
|
132
135
|
*
|
|
136
|
+
* ### Examples
|
|
137
|
+
*
|
|
133
138
|
* ```ts
|
|
139
|
+
* import { type Expression, type OperationNode, sql } from 'kysely'
|
|
140
|
+
*
|
|
134
141
|
* class SomeExpression<T> implements Expression<T> {
|
|
135
142
|
* get expressionType(): T | undefined {
|
|
136
143
|
* return undefined
|
|
137
144
|
* }
|
|
145
|
+
*
|
|
146
|
+
* toOperationNode(): OperationNode {
|
|
147
|
+
* return sql`some sql here`.toOperationNode()
|
|
148
|
+
* }
|
|
138
149
|
* }
|
|
139
150
|
* ```
|
|
140
151
|
*
|
|
@@ -163,7 +174,7 @@ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O
|
|
|
163
174
|
*
|
|
164
175
|
* The generated SQL (PostgreSQL):
|
|
165
176
|
*
|
|
166
|
-
* ```
|
|
177
|
+
* ```sql
|
|
167
178
|
* select "first_name" = $1 as "is_jennifer"
|
|
168
179
|
* from "person"
|
|
169
180
|
* ```
|
|
@@ -172,6 +183,8 @@ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O
|
|
|
172
183
|
/**
|
|
173
184
|
* Returns an aliased version of the expression.
|
|
174
185
|
*
|
|
186
|
+
* ### Examples
|
|
187
|
+
*
|
|
175
188
|
* In addition to slapping `as "the_alias"` at the end of the expression,
|
|
176
189
|
* this method also provides strict typing:
|
|
177
190
|
*
|
|
@@ -180,7 +193,7 @@ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O
|
|
|
180
193
|
* .selectFrom('person')
|
|
181
194
|
* .select((eb) =>
|
|
182
195
|
* // `eb.fn<string>` returns an AliasableExpression<string>
|
|
183
|
-
* eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
|
|
196
|
+
* eb.fn<string>('concat', ['first_name', eb.val(' '), 'last_name']).as('full_name')
|
|
184
197
|
* )
|
|
185
198
|
* .executeTakeFirstOrThrow()
|
|
186
199
|
*
|
|
@@ -190,7 +203,7 @@ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O
|
|
|
190
203
|
*
|
|
191
204
|
* The generated SQL (PostgreSQL):
|
|
192
205
|
*
|
|
193
|
-
* ```
|
|
206
|
+
* ```sql
|
|
194
207
|
* select
|
|
195
208
|
* concat("first_name", $1, "last_name") as "full_name"
|
|
196
209
|
* from
|
|
@@ -201,6 +214,8 @@ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O
|
|
|
201
214
|
* provide the alias as the only type argument:
|
|
202
215
|
*
|
|
203
216
|
* ```ts
|
|
217
|
+
* import { sql } from 'kysely'
|
|
218
|
+
*
|
|
204
219
|
* const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
|
|
205
220
|
*
|
|
206
221
|
* // The alias is `t(a, b)` which specifies the column names
|
|
@@ -215,11 +230,12 @@ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O
|
|
|
215
230
|
* .expression(
|
|
216
231
|
* db.selectFrom(aliasedValues).select(['t.a', 't.b'])
|
|
217
232
|
* )
|
|
233
|
+
* .execute()
|
|
218
234
|
* ```
|
|
219
235
|
*
|
|
220
236
|
* The generated SQL (PostgreSQL):
|
|
221
237
|
*
|
|
222
|
-
* ```
|
|
238
|
+
* ```sql
|
|
223
239
|
* insert into "person" ("first_name", "last_name")
|
|
224
240
|
* from (values (1, 'foo')) as t(a, b)
|
|
225
241
|
* select "t"."a", "t"."b"
|
|
@@ -232,16 +248,24 @@ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O
|
|
|
232
248
|
* This method call doesn't change the SQL in any way. This methods simply
|
|
233
249
|
* returns a copy of this `JSONPathBuilder` with a new output type.
|
|
234
250
|
*/
|
|
235
|
-
$castTo<
|
|
236
|
-
$notNull():
|
|
251
|
+
$castTo<O2>(): TraversedJSONPathBuilder<S, O2>;
|
|
252
|
+
$notNull(): TraversedJSONPathBuilder<S, Exclude<O, null>>;
|
|
237
253
|
/**
|
|
238
254
|
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
239
255
|
*
|
|
256
|
+
* ### Examples
|
|
257
|
+
*
|
|
240
258
|
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
241
259
|
* template tag to build the node:
|
|
242
260
|
*
|
|
243
261
|
* ```ts
|
|
262
|
+
* import { type Expression, type OperationNode, sql } from 'kysely'
|
|
263
|
+
*
|
|
244
264
|
* class SomeExpression<T> implements Expression<T> {
|
|
265
|
+
* get expressionType(): T | undefined {
|
|
266
|
+
* return undefined
|
|
267
|
+
* }
|
|
268
|
+
*
|
|
245
269
|
* toOperationNode(): OperationNode {
|
|
246
270
|
* return sql`some sql here`.toOperationNode()
|
|
247
271
|
* }
|
|
@@ -24,9 +24,12 @@ export class JSONPathBuilder {
|
|
|
24
24
|
* ### Examples
|
|
25
25
|
*
|
|
26
26
|
* ```ts
|
|
27
|
-
* db.selectFrom('person')
|
|
28
|
-
*
|
|
29
|
-
* )
|
|
27
|
+
* await db.selectFrom('person')
|
|
28
|
+
* .select(eb =>
|
|
29
|
+
* eb.ref('nicknames', '->').at(0).as('primary_nickname')
|
|
30
|
+
* )
|
|
31
|
+
* .execute()
|
|
32
|
+
* ```
|
|
30
33
|
*
|
|
31
34
|
* The generated SQL (PostgreSQL):
|
|
32
35
|
*
|
|
@@ -160,10 +163,10 @@ export class TraversedJSONPathBuilder extends JSONPathBuilder {
|
|
|
160
163
|
* returns a copy of this `JSONPathBuilder` with a new output type.
|
|
161
164
|
*/
|
|
162
165
|
$castTo() {
|
|
163
|
-
return new
|
|
166
|
+
return new TraversedJSONPathBuilder(this.#node);
|
|
164
167
|
}
|
|
165
168
|
$notNull() {
|
|
166
|
-
return new
|
|
169
|
+
return new TraversedJSONPathBuilder(this.#node);
|
|
167
170
|
}
|
|
168
171
|
toOperationNode() {
|
|
169
172
|
return this.#node;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AliasedExpression } from '../expression/expression.js';
|
|
1
|
+
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
2
2
|
import { MergeQueryNode } from '../operation-node/merge-query-node.js';
|
|
3
3
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
4
4
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
@@ -7,6 +7,7 @@ import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
|
7
7
|
import { InsertObjectOrList, InsertObjectOrListFactory } from '../parser/insert-values-parser.js';
|
|
8
8
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
9
9
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
10
|
+
import { ReturningAllRow, ReturningRow } from '../parser/returning-parser.js';
|
|
10
11
|
import { TableExpression } from '../parser/table-parser.js';
|
|
11
12
|
import { ExtractUpdateTypeFromReferenceExpression, UpdateObject, UpdateObjectFactory } from '../parser/update-set-parser.js';
|
|
12
13
|
import { ValueExpression } from '../parser/value-parser.js';
|
|
@@ -17,10 +18,35 @@ import { QueryId } from '../util/query-id.js';
|
|
|
17
18
|
import { ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '../util/type-utils.js';
|
|
18
19
|
import { MergeResult } from './merge-result.js';
|
|
19
20
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
21
|
+
import { OutputCallback, OutputExpression, OutputInterface, OutputPrefix, SelectExpressionFromOutputCallback, SelectExpressionFromOutputExpression } from './output-interface.js';
|
|
20
22
|
import { UpdateQueryBuilder } from './update-query-builder.js';
|
|
21
|
-
export declare class MergeQueryBuilder<DB, TT extends keyof DB, O> {
|
|
23
|
+
export declare class MergeQueryBuilder<DB, TT extends keyof DB, O> implements OutputInterface<DB, TT, O> {
|
|
22
24
|
#private;
|
|
23
25
|
constructor(props: MergeQueryBuilderProps);
|
|
26
|
+
/**
|
|
27
|
+
* This can be used to add any additional SQL to the end of the query.
|
|
28
|
+
*
|
|
29
|
+
* ### Examples
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { sql } from 'kysely'
|
|
33
|
+
*
|
|
34
|
+
* await db
|
|
35
|
+
* .mergeInto('person')
|
|
36
|
+
* .using('pet', 'pet.owner_id', 'person.id')
|
|
37
|
+
* .whenMatched()
|
|
38
|
+
* .thenDelete()
|
|
39
|
+
* .modifyEnd(sql.raw('-- this is a comment'))
|
|
40
|
+
* .execute()
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* The generated SQL (PostgreSQL):
|
|
44
|
+
*
|
|
45
|
+
* ```sql
|
|
46
|
+
* merge into "person" using "pet" on "pet"."owner_id" = "person"."id" when matched then delete -- this is a comment
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
modifyEnd(modifier: Expression<any>): MergeQueryBuilder<DB, TT, O>;
|
|
24
50
|
/**
|
|
25
51
|
* Changes a `merge into` query to an `merge top into` query.
|
|
26
52
|
*
|
|
@@ -96,15 +122,163 @@ export declare class MergeQueryBuilder<DB, TT extends keyof DB, O> {
|
|
|
96
122
|
*/
|
|
97
123
|
using<TE extends TableExpression<DB, TT>, K1 extends JoinReferenceExpression<DB, TT, TE>, K2 extends JoinReferenceExpression<DB, TT, TE>>(sourceTable: TE, k1: K1, k2: K2): ExtractWheneableMergeQueryBuilder<DB, TT, TE, O>;
|
|
98
124
|
using<TE extends TableExpression<DB, TT>, FN extends JoinCallbackExpression<DB, TT, TE>>(sourceTable: TE, callback: FN): ExtractWheneableMergeQueryBuilder<DB, TT, TE, O>;
|
|
125
|
+
/**
|
|
126
|
+
* Allows you to return data from modified rows.
|
|
127
|
+
*
|
|
128
|
+
* On supported databases like MS SQL Server (MSSQL), this method can be chained
|
|
129
|
+
* to `insert`, `update`, `delete` and `merge` queries to return data.
|
|
130
|
+
*
|
|
131
|
+
* Also see the {@link outputAll} method.
|
|
132
|
+
*
|
|
133
|
+
* ### Examples
|
|
134
|
+
*
|
|
135
|
+
* Return one column:
|
|
136
|
+
*
|
|
137
|
+
* ```ts
|
|
138
|
+
* const { id } = await db
|
|
139
|
+
* .insertInto('person')
|
|
140
|
+
* .output('inserted.id')
|
|
141
|
+
* .values({
|
|
142
|
+
* first_name: 'Jennifer',
|
|
143
|
+
* last_name: 'Aniston',
|
|
144
|
+
* gender: 'female',
|
|
145
|
+
* })
|
|
146
|
+
* .executeTakeFirstOrThrow()
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* The generated SQL (MSSQL):
|
|
150
|
+
*
|
|
151
|
+
* ```sql
|
|
152
|
+
* insert into "person" ("first_name", "last_name", "gender")
|
|
153
|
+
* output "inserted"."id"
|
|
154
|
+
* values (@1, @2, @3)
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* Return multiple columns:
|
|
158
|
+
*
|
|
159
|
+
* ```ts
|
|
160
|
+
* const { old_first_name, old_last_name, new_first_name, new_last_name } = await db
|
|
161
|
+
* .updateTable('person')
|
|
162
|
+
* .set({ first_name: 'John', last_name: 'Doe' })
|
|
163
|
+
* .output([
|
|
164
|
+
* 'deleted.first_name as old_first_name',
|
|
165
|
+
* 'deleted.last_name as old_last_name',
|
|
166
|
+
* 'inserted.first_name as new_first_name',
|
|
167
|
+
* 'inserted.last_name as new_last_name',
|
|
168
|
+
* ])
|
|
169
|
+
* .where('created_at', '<', new Date())
|
|
170
|
+
* .executeTakeFirstOrThrow()
|
|
171
|
+
* ```
|
|
172
|
+
*
|
|
173
|
+
* The generated SQL (MSSQL):
|
|
174
|
+
*
|
|
175
|
+
* ```sql
|
|
176
|
+
* update "person"
|
|
177
|
+
* set "first_name" = @1, "last_name" = @2
|
|
178
|
+
* output "deleted"."first_name" as "old_first_name",
|
|
179
|
+
* "deleted"."last_name" as "old_last_name",
|
|
180
|
+
* "inserted"."first_name" as "new_first_name",
|
|
181
|
+
* "inserted"."last_name" as "new_last_name"
|
|
182
|
+
* where "created_at" < @3
|
|
183
|
+
* ```
|
|
184
|
+
*
|
|
185
|
+
* Return arbitrary expressions:
|
|
186
|
+
*
|
|
187
|
+
* ```ts
|
|
188
|
+
* import { sql } from 'kysely'
|
|
189
|
+
*
|
|
190
|
+
* const { full_name } = await db
|
|
191
|
+
* .deleteFrom('person')
|
|
192
|
+
* .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name'))
|
|
193
|
+
* .where('created_at', '<', new Date())
|
|
194
|
+
* .executeTakeFirstOrThrow()
|
|
195
|
+
* ```
|
|
196
|
+
*
|
|
197
|
+
* The generated SQL (MSSQL):
|
|
198
|
+
*
|
|
199
|
+
* ```sql
|
|
200
|
+
* delete from "person"
|
|
201
|
+
* output concat("deleted"."first_name", ' ', "deleted"."last_name") as "full_name"
|
|
202
|
+
* where "created_at" < @1
|
|
203
|
+
* ```
|
|
204
|
+
*
|
|
205
|
+
* Return the action performed on the row:
|
|
206
|
+
*
|
|
207
|
+
* ```ts
|
|
208
|
+
* await db
|
|
209
|
+
* .mergeInto('person')
|
|
210
|
+
* .using('pet', 'pet.owner_id', 'person.id')
|
|
211
|
+
* .whenMatched()
|
|
212
|
+
* .thenDelete()
|
|
213
|
+
* .whenNotMatched()
|
|
214
|
+
* .thenInsertValues({
|
|
215
|
+
* first_name: 'John',
|
|
216
|
+
* last_name: 'Doe',
|
|
217
|
+
* gender: 'male'
|
|
218
|
+
* })
|
|
219
|
+
* .output([
|
|
220
|
+
* 'inserted.id as inserted_id',
|
|
221
|
+
* 'deleted.id as deleted_id',
|
|
222
|
+
* ])
|
|
223
|
+
* .execute()
|
|
224
|
+
* ```
|
|
225
|
+
*
|
|
226
|
+
* The generated SQL (MSSQL):
|
|
227
|
+
*
|
|
228
|
+
* ```sql
|
|
229
|
+
* merge into "person"
|
|
230
|
+
* using "pet" on "pet"."owner_id" = "person"."id"
|
|
231
|
+
* when matched then delete
|
|
232
|
+
* when not matched then
|
|
233
|
+
* insert ("first_name", "last_name", "gender")
|
|
234
|
+
* values (@1, @2, @3)
|
|
235
|
+
* output "inserted"."id" as "inserted_id", "deleted"."id" as "deleted_id"
|
|
236
|
+
* ```
|
|
237
|
+
*
|
|
238
|
+
*/
|
|
239
|
+
output<OE extends OutputExpression<DB, TT>>(selections: readonly OE[]): MergeQueryBuilder<DB, TT, ReturningRow<DB, TT, O, SelectExpressionFromOutputExpression<OE>>>;
|
|
240
|
+
output<CB extends OutputCallback<DB, TT>>(callback: CB): MergeQueryBuilder<DB, TT, ReturningRow<DB, TT, O, SelectExpressionFromOutputCallback<CB>>>;
|
|
241
|
+
output<OE extends OutputExpression<DB, TT>>(selection: OE): MergeQueryBuilder<DB, TT, ReturningRow<DB, TT, O, SelectExpressionFromOutputExpression<OE>>>;
|
|
242
|
+
/**
|
|
243
|
+
* Adds an `output {prefix}.*` to an `insert`/`update`/`delete`/`merge` query on databases
|
|
244
|
+
* that support `output` such as MS SQL Server (MSSQL).
|
|
245
|
+
*
|
|
246
|
+
* Also see the {@link output} method.
|
|
247
|
+
*/
|
|
248
|
+
outputAll(table: OutputPrefix): MergeQueryBuilder<DB, TT, ReturningAllRow<DB, TT, O>>;
|
|
99
249
|
}
|
|
100
250
|
export interface MergeQueryBuilderProps {
|
|
101
251
|
readonly queryId: QueryId;
|
|
102
252
|
readonly queryNode: MergeQueryNode;
|
|
103
253
|
readonly executor: QueryExecutor;
|
|
104
254
|
}
|
|
105
|
-
export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST extends keyof DB, O> implements Compilable<O>, OperationNodeSource {
|
|
255
|
+
export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST extends keyof DB, O> implements Compilable<O>, OutputInterface<DB, TT, O>, OperationNodeSource {
|
|
106
256
|
#private;
|
|
107
257
|
constructor(props: MergeQueryBuilderProps);
|
|
258
|
+
/**
|
|
259
|
+
* This can be used to add any additional SQL to the end of the query.
|
|
260
|
+
*
|
|
261
|
+
* ### Examples
|
|
262
|
+
*
|
|
263
|
+
* ```ts
|
|
264
|
+
* import { sql } from 'kysely'
|
|
265
|
+
*
|
|
266
|
+
* await db
|
|
267
|
+
* .mergeInto('person')
|
|
268
|
+
* .using('pet', 'pet.owner_id', 'person.id')
|
|
269
|
+
* .whenMatched()
|
|
270
|
+
* .thenDelete()
|
|
271
|
+
* .modifyEnd(sql.raw('-- this is a comment'))
|
|
272
|
+
* .execute()
|
|
273
|
+
* ```
|
|
274
|
+
*
|
|
275
|
+
* The generated SQL (PostgreSQL):
|
|
276
|
+
*
|
|
277
|
+
* ```sql
|
|
278
|
+
* merge into "person" using "pet" on "pet"."owner_id" = "person"."id" when matched then delete -- this is a comment
|
|
279
|
+
* ```
|
|
280
|
+
*/
|
|
281
|
+
modifyEnd(modifier: Expression<any>): WheneableMergeQueryBuilder<DB, TT, ST, O>;
|
|
108
282
|
/**
|
|
109
283
|
* See {@link MergeQueryBuilder.top}.
|
|
110
284
|
*/
|
|
@@ -275,6 +449,130 @@ export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST exte
|
|
|
275
449
|
* the target table, and not from source table and returns a {@link MatchedThenableMergeQueryBuilder}.
|
|
276
450
|
*/
|
|
277
451
|
whenNotMatchedBySourceAndRef<LRE extends ReferenceExpression<DB, TT>, RRE extends ReferenceExpression<DB, TT>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): MatchedThenableMergeQueryBuilder<DB, TT, ST, TT, O>;
|
|
452
|
+
/**
|
|
453
|
+
* Allows you to return data from modified rows.
|
|
454
|
+
*
|
|
455
|
+
* On supported databases like MS SQL Server (MSSQL), this method can be chained
|
|
456
|
+
* to `insert`, `update`, `delete` and `merge` queries to return data.
|
|
457
|
+
*
|
|
458
|
+
* Also see the {@link outputAll} method.
|
|
459
|
+
*
|
|
460
|
+
* ### Examples
|
|
461
|
+
*
|
|
462
|
+
* Return one column:
|
|
463
|
+
*
|
|
464
|
+
* ```ts
|
|
465
|
+
* const { id } = await db
|
|
466
|
+
* .insertInto('person')
|
|
467
|
+
* .output('inserted.id')
|
|
468
|
+
* .values({
|
|
469
|
+
* first_name: 'Jennifer',
|
|
470
|
+
* last_name: 'Aniston',
|
|
471
|
+
* gender: 'female',
|
|
472
|
+
* })
|
|
473
|
+
* .executeTakeFirstOrThrow()
|
|
474
|
+
* ```
|
|
475
|
+
*
|
|
476
|
+
* The generated SQL (MSSQL):
|
|
477
|
+
*
|
|
478
|
+
* ```sql
|
|
479
|
+
* insert into "person" ("first_name", "last_name", "gender")
|
|
480
|
+
* output "inserted"."id"
|
|
481
|
+
* values (@1, @2, @3)
|
|
482
|
+
* ```
|
|
483
|
+
*
|
|
484
|
+
* Return multiple columns:
|
|
485
|
+
*
|
|
486
|
+
* ```ts
|
|
487
|
+
* const { old_first_name, old_last_name, new_first_name, new_last_name } = await db
|
|
488
|
+
* .updateTable('person')
|
|
489
|
+
* .set({ first_name: 'John', last_name: 'Doe' })
|
|
490
|
+
* .output([
|
|
491
|
+
* 'deleted.first_name as old_first_name',
|
|
492
|
+
* 'deleted.last_name as old_last_name',
|
|
493
|
+
* 'inserted.first_name as new_first_name',
|
|
494
|
+
* 'inserted.last_name as new_last_name',
|
|
495
|
+
* ])
|
|
496
|
+
* .where('created_at', '<', new Date())
|
|
497
|
+
* .executeTakeFirstOrThrow()
|
|
498
|
+
* ```
|
|
499
|
+
*
|
|
500
|
+
* The generated SQL (MSSQL):
|
|
501
|
+
*
|
|
502
|
+
* ```sql
|
|
503
|
+
* update "person"
|
|
504
|
+
* set "first_name" = @1, "last_name" = @2
|
|
505
|
+
* output "deleted"."first_name" as "old_first_name",
|
|
506
|
+
* "deleted"."last_name" as "old_last_name",
|
|
507
|
+
* "inserted"."first_name" as "new_first_name",
|
|
508
|
+
* "inserted"."last_name" as "new_last_name"
|
|
509
|
+
* where "created_at" < @3
|
|
510
|
+
* ```
|
|
511
|
+
*
|
|
512
|
+
* Return arbitrary expressions:
|
|
513
|
+
*
|
|
514
|
+
* ```ts
|
|
515
|
+
* import { sql } from 'kysely'
|
|
516
|
+
*
|
|
517
|
+
* const { full_name } = await db
|
|
518
|
+
* .deleteFrom('person')
|
|
519
|
+
* .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name'))
|
|
520
|
+
* .where('created_at', '<', new Date())
|
|
521
|
+
* .executeTakeFirstOrThrow()
|
|
522
|
+
* ```
|
|
523
|
+
*
|
|
524
|
+
* The generated SQL (MSSQL):
|
|
525
|
+
*
|
|
526
|
+
* ```sql
|
|
527
|
+
* delete from "person"
|
|
528
|
+
* output concat("deleted"."first_name", ' ', "deleted"."last_name") as "full_name"
|
|
529
|
+
* where "created_at" < @1
|
|
530
|
+
* ```
|
|
531
|
+
*
|
|
532
|
+
* Return the action performed on the row:
|
|
533
|
+
*
|
|
534
|
+
* ```ts
|
|
535
|
+
* await db
|
|
536
|
+
* .mergeInto('person')
|
|
537
|
+
* .using('pet', 'pet.owner_id', 'person.id')
|
|
538
|
+
* .whenMatched()
|
|
539
|
+
* .thenDelete()
|
|
540
|
+
* .whenNotMatched()
|
|
541
|
+
* .thenInsertValues({
|
|
542
|
+
* first_name: 'John',
|
|
543
|
+
* last_name: 'Doe',
|
|
544
|
+
* gender: 'male'
|
|
545
|
+
* })
|
|
546
|
+
* .output([
|
|
547
|
+
* 'inserted.id as inserted_id',
|
|
548
|
+
* 'deleted.id as deleted_id',
|
|
549
|
+
* ])
|
|
550
|
+
* .execute()
|
|
551
|
+
* ```
|
|
552
|
+
*
|
|
553
|
+
* The generated SQL (MSSQL):
|
|
554
|
+
*
|
|
555
|
+
* ```sql
|
|
556
|
+
* merge into "person"
|
|
557
|
+
* using "pet" on "pet"."owner_id" = "person"."id"
|
|
558
|
+
* when matched then delete
|
|
559
|
+
* when not matched then
|
|
560
|
+
* insert ("first_name", "last_name", "gender")
|
|
561
|
+
* values (@1, @2, @3)
|
|
562
|
+
* output "inserted"."id" as "inserted_id", "deleted"."id" as "deleted_id"
|
|
563
|
+
* ```
|
|
564
|
+
*
|
|
565
|
+
*/
|
|
566
|
+
output<OE extends OutputExpression<DB, TT>>(selections: readonly OE[]): WheneableMergeQueryBuilder<DB, TT, ST, ReturningRow<DB, TT, O, SelectExpressionFromOutputExpression<OE>>>;
|
|
567
|
+
output<CB extends OutputCallback<DB, TT>>(callback: CB): WheneableMergeQueryBuilder<DB, TT, ST, ReturningRow<DB, TT, O, SelectExpressionFromOutputCallback<CB>>>;
|
|
568
|
+
output<OE extends OutputExpression<DB, TT>>(selection: OE): WheneableMergeQueryBuilder<DB, TT, ST, ReturningRow<DB, TT, O, SelectExpressionFromOutputExpression<OE>>>;
|
|
569
|
+
/**
|
|
570
|
+
* Adds an `output {prefix}.*` to an `insert`/`update`/`delete`/`merge` query on databases
|
|
571
|
+
* that support `output` such as MS SQL Server (MSSQL).
|
|
572
|
+
*
|
|
573
|
+
* Also see the {@link output} method.
|
|
574
|
+
*/
|
|
575
|
+
outputAll(table: OutputPrefix): WheneableMergeQueryBuilder<DB, TT, ST, ReturningAllRow<DB, TT, O>>;
|
|
278
576
|
/**
|
|
279
577
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
280
578
|
* what the provided function returns.
|
|
@@ -287,13 +585,15 @@ export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST exte
|
|
|
287
585
|
* The next example uses a helper function `log` to log a query:
|
|
288
586
|
*
|
|
289
587
|
* ```ts
|
|
588
|
+
* import type { Compilable } from 'kysely'
|
|
589
|
+
*
|
|
290
590
|
* function log<T extends Compilable>(qb: T): T {
|
|
291
591
|
* console.log(qb.compile())
|
|
292
592
|
* return qb
|
|
293
593
|
* }
|
|
294
594
|
*
|
|
295
|
-
* db.updateTable('person')
|
|
296
|
-
* .set(
|
|
595
|
+
* await db.updateTable('person')
|
|
596
|
+
* .set({ first_name: 'John' })
|
|
297
597
|
* .$call(log)
|
|
298
598
|
* .execute()
|
|
299
599
|
* ```
|
|
@@ -312,7 +612,9 @@ export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST exte
|
|
|
312
612
|
* ### Examples
|
|
313
613
|
*
|
|
314
614
|
* ```ts
|
|
315
|
-
*
|
|
615
|
+
* import type { PersonUpdate } from 'type-editor' // imaginary module
|
|
616
|
+
*
|
|
617
|
+
* async function updatePerson(id: number, updates: PersonUpdate, returnLastName: boolean) {
|
|
316
618
|
* return await db
|
|
317
619
|
* .updateTable('person')
|
|
318
620
|
* .set(updates)
|
|
@@ -328,16 +630,16 @@ export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST exte
|
|
|
328
630
|
* the code. In the example above the return type of the `updatePerson` function is:
|
|
329
631
|
*
|
|
330
632
|
* ```ts
|
|
331
|
-
* {
|
|
633
|
+
* Promise<{
|
|
332
634
|
* id: number
|
|
333
635
|
* first_name: string
|
|
334
636
|
* last_name?: string
|
|
335
|
-
* }
|
|
637
|
+
* }>
|
|
336
638
|
* ```
|
|
337
639
|
*/
|
|
338
640
|
$if<O2>(condition: boolean, func: (qb: this) => WheneableMergeQueryBuilder<any, any, any, O2>): O2 extends MergeResult ? WheneableMergeQueryBuilder<DB, TT, ST, MergeResult> : O2 extends O & infer E ? WheneableMergeQueryBuilder<DB, TT, ST, O & Partial<E>> : WheneableMergeQueryBuilder<DB, TT, ST, Partial<O2>>;
|
|
339
641
|
toOperationNode(): MergeQueryNode;
|
|
340
|
-
compile(): CompiledQuery<
|
|
642
|
+
compile(): CompiledQuery<O>;
|
|
341
643
|
/**
|
|
342
644
|
* Executes the query and returns an array of rows.
|
|
343
645
|
*
|
|
@@ -439,7 +741,7 @@ export declare class MatchedThenableMergeQueryBuilder<DB, TT extends keyof DB, S
|
|
|
439
741
|
* .thenUpdate((ub) => ub
|
|
440
742
|
* .set(sql`metadata['has_pets']`, 'Y')
|
|
441
743
|
* .set({
|
|
442
|
-
* updated_at: Date.
|
|
744
|
+
* updated_at: new Date().toISOString(),
|
|
443
745
|
* })
|
|
444
746
|
* )
|
|
445
747
|
* .execute()
|