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
|
@@ -140,11 +140,10 @@ class InsertQueryBuilder {
|
|
|
140
140
|
* .insertInto('person')
|
|
141
141
|
* .values(({ ref, selectFrom, fn }) => ({
|
|
142
142
|
* first_name: 'Jennifer',
|
|
143
|
-
* last_name: sql
|
|
143
|
+
* last_name: sql<string>`concat(${ani}, ${ston})`,
|
|
144
144
|
* middle_name: ref('first_name'),
|
|
145
145
|
* age: selectFrom('person')
|
|
146
|
-
* .select(fn.avg<number>('age')
|
|
147
|
-
* .as('avg_age')),
|
|
146
|
+
* .select(fn.avg<number>('age').as('avg_age')),
|
|
148
147
|
* }))
|
|
149
148
|
* .executeTakeFirst()
|
|
150
149
|
* ```
|
|
@@ -169,7 +168,7 @@ class InsertQueryBuilder {
|
|
|
169
168
|
* You can also use the callback version of subqueries or raw expressions:
|
|
170
169
|
*
|
|
171
170
|
* ```ts
|
|
172
|
-
* db.with('jennifer', (db) => db
|
|
171
|
+
* await db.with('jennifer', (db) => db
|
|
173
172
|
* .selectFrom('person')
|
|
174
173
|
* .where('first_name', '=', 'Jennifer')
|
|
175
174
|
* .select(['id', 'first_name', 'gender'])
|
|
@@ -179,6 +178,24 @@ class InsertQueryBuilder {
|
|
|
179
178
|
* name: eb.selectFrom('jennifer').select('first_name'),
|
|
180
179
|
* species: 'cat',
|
|
181
180
|
* }))
|
|
181
|
+
* .execute()
|
|
182
|
+
* ```
|
|
183
|
+
*
|
|
184
|
+
* The generated SQL (PostgreSQL):
|
|
185
|
+
*
|
|
186
|
+
* ```sql
|
|
187
|
+
* with "jennifer" as (
|
|
188
|
+
* select "id", "first_name", "gender"
|
|
189
|
+
* from "person"
|
|
190
|
+
* where "first_name" = $1
|
|
191
|
+
* limit $2
|
|
192
|
+
* )
|
|
193
|
+
* insert into "pet" ("owner_id", "name", "species")
|
|
194
|
+
* values (
|
|
195
|
+
* (select "id" from "jennifer"),
|
|
196
|
+
* (select "first_name" from "jennifer"),
|
|
197
|
+
* $3
|
|
198
|
+
* )
|
|
182
199
|
* ```
|
|
183
200
|
*/
|
|
184
201
|
values(insert) {
|
|
@@ -201,9 +218,10 @@ class InsertQueryBuilder {
|
|
|
201
218
|
* ### Examples
|
|
202
219
|
*
|
|
203
220
|
* ```ts
|
|
204
|
-
* db.insertInto('person')
|
|
221
|
+
* await db.insertInto('person')
|
|
205
222
|
* .columns(['first_name'])
|
|
206
223
|
* .expression((eb) => eb.selectFrom('pet').select('pet.name'))
|
|
224
|
+
* .execute()
|
|
207
225
|
* ```
|
|
208
226
|
*
|
|
209
227
|
* The generated SQL (PostgreSQL):
|
|
@@ -228,7 +246,9 @@ class InsertQueryBuilder {
|
|
|
228
246
|
*
|
|
229
247
|
* <!-- siteExample("insert", "Insert subquery", 50) -->
|
|
230
248
|
*
|
|
231
|
-
* You can create an `INSERT INTO SELECT FROM` query using the `expression` method
|
|
249
|
+
* You can create an `INSERT INTO SELECT FROM` query using the `expression` method.
|
|
250
|
+
* This API doesn't follow our WYSIWYG principles and might be a bit difficult to
|
|
251
|
+
* remember. The reasons for this design stem from implementation difficulties.
|
|
232
252
|
*
|
|
233
253
|
* ```ts
|
|
234
254
|
* const result = await db.insertInto('person')
|
|
@@ -269,6 +289,12 @@ class InsertQueryBuilder {
|
|
|
269
289
|
* .defaultValues()
|
|
270
290
|
* .execute()
|
|
271
291
|
* ```
|
|
292
|
+
*
|
|
293
|
+
* The generated SQL (PostgreSQL):
|
|
294
|
+
*
|
|
295
|
+
* ```sql
|
|
296
|
+
* insert into "person" default values
|
|
297
|
+
* ```
|
|
272
298
|
*/
|
|
273
299
|
defaultValues() {
|
|
274
300
|
return new InsertQueryBuilder({
|
|
@@ -278,6 +304,37 @@ class InsertQueryBuilder {
|
|
|
278
304
|
}),
|
|
279
305
|
});
|
|
280
306
|
}
|
|
307
|
+
/**
|
|
308
|
+
* This can be used to add any additional SQL to the end of the query.
|
|
309
|
+
*
|
|
310
|
+
* ### Examples
|
|
311
|
+
*
|
|
312
|
+
* ```ts
|
|
313
|
+
* import { sql } from 'kysely'
|
|
314
|
+
*
|
|
315
|
+
* await db.insertInto('person')
|
|
316
|
+
* .values({
|
|
317
|
+
* first_name: 'John',
|
|
318
|
+
* last_name: 'Doe',
|
|
319
|
+
* gender: 'male',
|
|
320
|
+
* })
|
|
321
|
+
* .modifyEnd(sql`-- This is a comment`)
|
|
322
|
+
* .execute()
|
|
323
|
+
* ```
|
|
324
|
+
*
|
|
325
|
+
* The generated SQL (MySQL):
|
|
326
|
+
*
|
|
327
|
+
* ```sql
|
|
328
|
+
* insert into `person` ("first_name", "last_name", "gender")
|
|
329
|
+
* values (?, ?, ?) -- This is a comment
|
|
330
|
+
* ```
|
|
331
|
+
*/
|
|
332
|
+
modifyEnd(modifier) {
|
|
333
|
+
return new InsertQueryBuilder({
|
|
334
|
+
...this.#props,
|
|
335
|
+
queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),
|
|
336
|
+
});
|
|
337
|
+
}
|
|
281
338
|
/**
|
|
282
339
|
* Changes an `insert into` query to an `insert ignore into` query.
|
|
283
340
|
*
|
|
@@ -295,9 +352,19 @@ class InsertQueryBuilder {
|
|
|
295
352
|
* ```ts
|
|
296
353
|
* await db.insertInto('person')
|
|
297
354
|
* .ignore()
|
|
298
|
-
* .values(
|
|
355
|
+
* .values({
|
|
356
|
+
* first_name: 'John',
|
|
357
|
+
* last_name: 'Doe',
|
|
358
|
+
* gender: 'female',
|
|
359
|
+
* })
|
|
299
360
|
* .execute()
|
|
300
361
|
* ```
|
|
362
|
+
*
|
|
363
|
+
* The generated SQL (MySQL):
|
|
364
|
+
*
|
|
365
|
+
* ```sql
|
|
366
|
+
* insert ignore into `person` ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
367
|
+
* ```
|
|
301
368
|
*/
|
|
302
369
|
ignore() {
|
|
303
370
|
return new InsertQueryBuilder({
|
|
@@ -317,6 +384,8 @@ class InsertQueryBuilder {
|
|
|
317
384
|
* Insert the first 5 rows:
|
|
318
385
|
*
|
|
319
386
|
* ```ts
|
|
387
|
+
* import { sql } from 'kysely'
|
|
388
|
+
*
|
|
320
389
|
* await db.insertInto('person')
|
|
321
390
|
* .top(5)
|
|
322
391
|
* .columns(['first_name', 'gender'])
|
|
@@ -335,6 +404,8 @@ class InsertQueryBuilder {
|
|
|
335
404
|
* Insert the first 50 percent of rows:
|
|
336
405
|
*
|
|
337
406
|
* ```ts
|
|
407
|
+
* import { sql } from 'kysely'
|
|
408
|
+
*
|
|
338
409
|
* await db.insertInto('person')
|
|
339
410
|
* .top(50, 'percent')
|
|
340
411
|
* .columns(['first_name', 'gender'])
|
|
@@ -370,6 +441,7 @@ class InsertQueryBuilder {
|
|
|
370
441
|
* .values({
|
|
371
442
|
* name: 'Catto',
|
|
372
443
|
* species: 'cat',
|
|
444
|
+
* owner_id: 3,
|
|
373
445
|
* })
|
|
374
446
|
* .onConflict((oc) => oc
|
|
375
447
|
* .column('name')
|
|
@@ -381,10 +453,10 @@ class InsertQueryBuilder {
|
|
|
381
453
|
* The generated SQL (PostgreSQL):
|
|
382
454
|
*
|
|
383
455
|
* ```sql
|
|
384
|
-
* insert into "pet" ("name", "species")
|
|
385
|
-
* values ($1, $2)
|
|
456
|
+
* insert into "pet" ("name", "species", "owner_id")
|
|
457
|
+
* values ($1, $2, $3)
|
|
386
458
|
* on conflict ("name")
|
|
387
|
-
* do update set "species" = $
|
|
459
|
+
* do update set "species" = $4
|
|
388
460
|
* ```
|
|
389
461
|
*
|
|
390
462
|
* You can provide the name of the constraint instead of a column name:
|
|
@@ -395,6 +467,7 @@ class InsertQueryBuilder {
|
|
|
395
467
|
* .values({
|
|
396
468
|
* name: 'Catto',
|
|
397
469
|
* species: 'cat',
|
|
470
|
+
* owner_id: 3,
|
|
398
471
|
* })
|
|
399
472
|
* .onConflict((oc) => oc
|
|
400
473
|
* .constraint('pet_name_key')
|
|
@@ -406,10 +479,10 @@ class InsertQueryBuilder {
|
|
|
406
479
|
* The generated SQL (PostgreSQL):
|
|
407
480
|
*
|
|
408
481
|
* ```sql
|
|
409
|
-
* insert into "pet" ("name", "species")
|
|
410
|
-
* values ($1, $2)
|
|
482
|
+
* insert into "pet" ("name", "species", "owner_id")
|
|
483
|
+
* values ($1, $2, $3)
|
|
411
484
|
* on conflict on constraint "pet_name_key"
|
|
412
|
-
* do update set "species" = $
|
|
485
|
+
* do update set "species" = $4
|
|
413
486
|
* ```
|
|
414
487
|
*
|
|
415
488
|
* You can also specify an expression as the conflict target in case
|
|
@@ -423,9 +496,10 @@ class InsertQueryBuilder {
|
|
|
423
496
|
* .values({
|
|
424
497
|
* name: 'Catto',
|
|
425
498
|
* species: 'cat',
|
|
499
|
+
* owner_id: 3,
|
|
426
500
|
* })
|
|
427
501
|
* .onConflict((oc) => oc
|
|
428
|
-
* .expression(sql
|
|
502
|
+
* .expression(sql<string>`lower(name)`)
|
|
429
503
|
* .doUpdateSet({ species: 'hamster' })
|
|
430
504
|
* )
|
|
431
505
|
* .execute()
|
|
@@ -434,10 +508,10 @@ class InsertQueryBuilder {
|
|
|
434
508
|
* The generated SQL (PostgreSQL):
|
|
435
509
|
*
|
|
436
510
|
* ```sql
|
|
437
|
-
* insert into "pet" ("name", "species")
|
|
438
|
-
* values ($1, $2)
|
|
511
|
+
* insert into "pet" ("name", "species", "owner_id")
|
|
512
|
+
* values ($1, $2, $3)
|
|
439
513
|
* on conflict (lower(name))
|
|
440
|
-
* do update set "species" = $
|
|
514
|
+
* do update set "species" = $4
|
|
441
515
|
* ```
|
|
442
516
|
*
|
|
443
517
|
* You can add a filter for the update statement like this:
|
|
@@ -448,11 +522,12 @@ class InsertQueryBuilder {
|
|
|
448
522
|
* .values({
|
|
449
523
|
* name: 'Catto',
|
|
450
524
|
* species: 'cat',
|
|
525
|
+
* owner_id: 3,
|
|
451
526
|
* })
|
|
452
527
|
* .onConflict((oc) => oc
|
|
453
528
|
* .column('name')
|
|
454
529
|
* .doUpdateSet({ species: 'hamster' })
|
|
455
|
-
* .where('excluded.name', '!=', 'Catto'
|
|
530
|
+
* .where('excluded.name', '!=', 'Catto')
|
|
456
531
|
* )
|
|
457
532
|
* .execute()
|
|
458
533
|
* ```
|
|
@@ -460,11 +535,11 @@ class InsertQueryBuilder {
|
|
|
460
535
|
* The generated SQL (PostgreSQL):
|
|
461
536
|
*
|
|
462
537
|
* ```sql
|
|
463
|
-
* insert into "pet" ("name", "species")
|
|
464
|
-
* values ($1, $2)
|
|
538
|
+
* insert into "pet" ("name", "species", "owner_id")
|
|
539
|
+
* values ($1, $2, $3)
|
|
465
540
|
* on conflict ("name")
|
|
466
|
-
* do update set "species" = $
|
|
467
|
-
* where "excluded"."name" != $
|
|
541
|
+
* do update set "species" = $4
|
|
542
|
+
* where "excluded"."name" != $5
|
|
468
543
|
* ```
|
|
469
544
|
*
|
|
470
545
|
* You can create an `on conflict do nothing` clauses like this:
|
|
@@ -475,6 +550,7 @@ class InsertQueryBuilder {
|
|
|
475
550
|
* .values({
|
|
476
551
|
* name: 'Catto',
|
|
477
552
|
* species: 'cat',
|
|
553
|
+
* owner_id: 3,
|
|
478
554
|
* })
|
|
479
555
|
* .onConflict((oc) => oc
|
|
480
556
|
* .column('name')
|
|
@@ -486,8 +562,8 @@ class InsertQueryBuilder {
|
|
|
486
562
|
* The generated SQL (PostgreSQL):
|
|
487
563
|
*
|
|
488
564
|
* ```sql
|
|
489
|
-
* insert into "pet" ("name", "species")
|
|
490
|
-
* values ($1, $2)
|
|
565
|
+
* insert into "pet" ("name", "species", "owner_id")
|
|
566
|
+
* values ($1, $2, $3)
|
|
491
567
|
* on conflict ("name") do nothing
|
|
492
568
|
* ```
|
|
493
569
|
*
|
|
@@ -496,8 +572,13 @@ class InsertQueryBuilder {
|
|
|
496
572
|
* `ExpressionBuilder`:
|
|
497
573
|
*
|
|
498
574
|
* ```ts
|
|
499
|
-
* db.insertInto('person')
|
|
500
|
-
* .values(
|
|
575
|
+
* await db.insertInto('person')
|
|
576
|
+
* .values({
|
|
577
|
+
* id: 1,
|
|
578
|
+
* first_name: 'John',
|
|
579
|
+
* last_name: 'Doe',
|
|
580
|
+
* gender: 'male',
|
|
581
|
+
* })
|
|
501
582
|
* .onConflict(oc => oc
|
|
502
583
|
* .column('id')
|
|
503
584
|
* .doUpdateSet({
|
|
@@ -505,6 +586,18 @@ class InsertQueryBuilder {
|
|
|
505
586
|
* last_name: (eb) => eb.ref('excluded.last_name')
|
|
506
587
|
* })
|
|
507
588
|
* )
|
|
589
|
+
* .execute()
|
|
590
|
+
* ```
|
|
591
|
+
*
|
|
592
|
+
* The generated SQL (PostgreSQL):
|
|
593
|
+
*
|
|
594
|
+
* ```sql
|
|
595
|
+
* insert into "person" ("id", "first_name", "last_name", "gender")
|
|
596
|
+
* values ($1, $2, $3, $4)
|
|
597
|
+
* on conflict ("id")
|
|
598
|
+
* do update set
|
|
599
|
+
* "first_name" = "excluded"."first_name",
|
|
600
|
+
* "last_name" = "excluded"."last_name"
|
|
508
601
|
* ```
|
|
509
602
|
*/
|
|
510
603
|
onConflict(callback) {
|
|
@@ -531,8 +624,22 @@ class InsertQueryBuilder {
|
|
|
531
624
|
* ```ts
|
|
532
625
|
* await db
|
|
533
626
|
* .insertInto('person')
|
|
534
|
-
* .values(
|
|
535
|
-
*
|
|
627
|
+
* .values({
|
|
628
|
+
* id: 1,
|
|
629
|
+
* first_name: 'John',
|
|
630
|
+
* last_name: 'Doe',
|
|
631
|
+
* gender: 'male',
|
|
632
|
+
* })
|
|
633
|
+
* .onDuplicateKeyUpdate({ updated_at: new Date().toISOString() })
|
|
634
|
+
* .execute()
|
|
635
|
+
* ```
|
|
636
|
+
*
|
|
637
|
+
* The generated SQL (MySQL):
|
|
638
|
+
*
|
|
639
|
+
* ```sql
|
|
640
|
+
* insert into `person` (`id`, `first_name`, `last_name`, `gender`)
|
|
641
|
+
* values (?, ?, ?, ?)
|
|
642
|
+
* on duplicate key update `updated_at` = ?
|
|
536
643
|
* ```
|
|
537
644
|
*/
|
|
538
645
|
onDuplicateKeyUpdate(update) {
|
|
@@ -555,22 +662,35 @@ class InsertQueryBuilder {
|
|
|
555
662
|
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)()),
|
|
556
663
|
});
|
|
557
664
|
}
|
|
665
|
+
output(args) {
|
|
666
|
+
return new InsertQueryBuilder({
|
|
667
|
+
...this.#props,
|
|
668
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectArg)(args)),
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
outputAll(table) {
|
|
672
|
+
return new InsertQueryBuilder({
|
|
673
|
+
...this.#props,
|
|
674
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
|
|
675
|
+
});
|
|
676
|
+
}
|
|
558
677
|
/**
|
|
559
678
|
* Clears all `returning` clauses from the query.
|
|
560
679
|
*
|
|
561
680
|
* ### Examples
|
|
562
681
|
*
|
|
563
682
|
* ```ts
|
|
564
|
-
* db.insertInto('person')
|
|
565
|
-
* .values({ first_name: 'James', last_name: 'Smith',
|
|
683
|
+
* await db.insertInto('person')
|
|
684
|
+
* .values({ first_name: 'James', last_name: 'Smith', gender: 'male' })
|
|
566
685
|
* .returning(['first_name'])
|
|
567
686
|
* .clearReturning()
|
|
687
|
+
* .execute()
|
|
568
688
|
* ```
|
|
569
689
|
*
|
|
570
690
|
* The generated SQL(PostgreSQL):
|
|
571
691
|
*
|
|
572
692
|
* ```sql
|
|
573
|
-
* insert into "person" ("
|
|
693
|
+
* insert into "person" ("first_name", "last_name", "gender") values ($1, $2, $3)
|
|
574
694
|
* ```
|
|
575
695
|
*/
|
|
576
696
|
clearReturning() {
|
|
@@ -591,13 +711,15 @@ class InsertQueryBuilder {
|
|
|
591
711
|
* The next example uses a helper function `log` to log a query:
|
|
592
712
|
*
|
|
593
713
|
* ```ts
|
|
714
|
+
* import type { Compilable } from 'kysely'
|
|
715
|
+
*
|
|
594
716
|
* function log<T extends Compilable>(qb: T): T {
|
|
595
717
|
* console.log(qb.compile())
|
|
596
718
|
* return qb
|
|
597
719
|
* }
|
|
598
720
|
*
|
|
599
|
-
* db.
|
|
600
|
-
* .
|
|
721
|
+
* await db.insertInto('person')
|
|
722
|
+
* .values({ first_name: 'John', last_name: 'Doe', gender: 'male' })
|
|
601
723
|
* .$call(log)
|
|
602
724
|
* .execute()
|
|
603
725
|
* ```
|
|
@@ -618,7 +740,9 @@ class InsertQueryBuilder {
|
|
|
618
740
|
* ### Examples
|
|
619
741
|
*
|
|
620
742
|
* ```ts
|
|
621
|
-
*
|
|
743
|
+
* import type { NewPerson } from 'type-editor' // imaginary module
|
|
744
|
+
*
|
|
745
|
+
* async function insertPerson(values: NewPerson, returnLastName: boolean) {
|
|
622
746
|
* return await db
|
|
623
747
|
* .insertInto('person')
|
|
624
748
|
* .values(values)
|
|
@@ -633,11 +757,11 @@ class InsertQueryBuilder {
|
|
|
633
757
|
* the code. In the example above the return type of the `insertPerson` function is:
|
|
634
758
|
*
|
|
635
759
|
* ```ts
|
|
636
|
-
* {
|
|
760
|
+
* Promise<{
|
|
637
761
|
* id: number
|
|
638
762
|
* first_name: string
|
|
639
763
|
* last_name?: string
|
|
640
|
-
* }
|
|
764
|
+
* }>
|
|
641
765
|
* ```
|
|
642
766
|
*/
|
|
643
767
|
$if(condition, func) {
|
|
@@ -675,23 +799,41 @@ class InsertQueryBuilder {
|
|
|
675
799
|
* Turn this code:
|
|
676
800
|
*
|
|
677
801
|
* ```ts
|
|
802
|
+
* import type { Person } from 'type-editor' // imaginary module
|
|
803
|
+
*
|
|
678
804
|
* const person = await db.insertInto('person')
|
|
679
|
-
* .values({
|
|
805
|
+
* .values({
|
|
806
|
+
* first_name: 'John',
|
|
807
|
+
* last_name: 'Doe',
|
|
808
|
+
* gender: 'male',
|
|
809
|
+
* nullable_column: 'hell yeah!'
|
|
810
|
+
* })
|
|
680
811
|
* .returningAll()
|
|
681
812
|
* .executeTakeFirstOrThrow()
|
|
682
813
|
*
|
|
683
|
-
* if (
|
|
814
|
+
* if (isWithNoNullValue(person)) {
|
|
684
815
|
* functionThatExpectsPersonWithNonNullValue(person)
|
|
685
816
|
* }
|
|
817
|
+
*
|
|
818
|
+
* function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {
|
|
819
|
+
* return person.nullable_column != null
|
|
820
|
+
* }
|
|
686
821
|
* ```
|
|
687
822
|
*
|
|
688
823
|
* Into this:
|
|
689
824
|
*
|
|
690
825
|
* ```ts
|
|
826
|
+
* import type { NotNull } from 'kysely'
|
|
827
|
+
*
|
|
691
828
|
* const person = await db.insertInto('person')
|
|
692
|
-
* .values({
|
|
829
|
+
* .values({
|
|
830
|
+
* first_name: 'John',
|
|
831
|
+
* last_name: 'Doe',
|
|
832
|
+
* gender: 'male',
|
|
833
|
+
* nullable_column: 'hell yeah!'
|
|
834
|
+
* })
|
|
693
835
|
* .returningAll()
|
|
694
|
-
* .$narrowType<{ nullable_column:
|
|
836
|
+
* .$narrowType<{ nullable_column: NotNull }>()
|
|
695
837
|
* .executeTakeFirstOrThrow()
|
|
696
838
|
*
|
|
697
839
|
* functionThatExpectsPersonWithNonNullValue(person)
|
|
@@ -703,17 +845,17 @@ class InsertQueryBuilder {
|
|
|
703
845
|
/**
|
|
704
846
|
* Asserts that query's output row type equals the given type `T`.
|
|
705
847
|
*
|
|
706
|
-
* This method can be used to simplify excessively complex types to make
|
|
848
|
+
* This method can be used to simplify excessively complex types to make TypeScript happy
|
|
707
849
|
* and much faster.
|
|
708
850
|
*
|
|
709
851
|
* Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
|
|
710
|
-
* for
|
|
852
|
+
* for TypeScript and you get errors like this:
|
|
711
853
|
*
|
|
712
854
|
* ```
|
|
713
855
|
* error TS2589: Type instantiation is excessively deep and possibly infinite.
|
|
714
856
|
* ```
|
|
715
857
|
*
|
|
716
|
-
* In these case you can often use this method to help
|
|
858
|
+
* In these case you can often use this method to help TypeScript a little bit. When you use this
|
|
717
859
|
* method to assert the output type of a query, Kysely can drop the complex output type that
|
|
718
860
|
* consists of multiple nested helper types and replace it with the simple asserted type.
|
|
719
861
|
*
|
|
@@ -723,22 +865,29 @@ class InsertQueryBuilder {
|
|
|
723
865
|
* ### Examples
|
|
724
866
|
*
|
|
725
867
|
* ```ts
|
|
726
|
-
*
|
|
727
|
-
*
|
|
728
|
-
*
|
|
729
|
-
*
|
|
730
|
-
* .
|
|
731
|
-
*
|
|
732
|
-
*
|
|
733
|
-
*
|
|
734
|
-
*
|
|
735
|
-
*
|
|
736
|
-
* .
|
|
737
|
-
*
|
|
738
|
-
*
|
|
739
|
-
*
|
|
740
|
-
*
|
|
741
|
-
*
|
|
868
|
+
* import type { NewPerson, NewPet, Species } from 'type-editor' // imaginary module
|
|
869
|
+
*
|
|
870
|
+
* async function insertPersonAndPet(person: NewPerson, pet: Omit<NewPet, 'owner_id'>) {
|
|
871
|
+
* return await db
|
|
872
|
+
* .with('new_person', (qb) => qb
|
|
873
|
+
* .insertInto('person')
|
|
874
|
+
* .values(person)
|
|
875
|
+
* .returning('id')
|
|
876
|
+
* .$assertType<{ id: number }>()
|
|
877
|
+
* )
|
|
878
|
+
* .with('new_pet', (qb) => qb
|
|
879
|
+
* .insertInto('pet')
|
|
880
|
+
* .values((eb) => ({
|
|
881
|
+
* owner_id: eb.selectFrom('new_person').select('id'),
|
|
882
|
+
* ...pet
|
|
883
|
+
* }))
|
|
884
|
+
* .returning(['name as pet_name', 'species'])
|
|
885
|
+
* .$assertType<{ pet_name: string, species: Species }>()
|
|
886
|
+
* )
|
|
887
|
+
* .selectFrom(['new_person', 'new_pet'])
|
|
888
|
+
* .selectAll()
|
|
889
|
+
* .executeTakeFirstOrThrow()
|
|
890
|
+
* }
|
|
742
891
|
* ```
|
|
743
892
|
*/
|
|
744
893
|
$assertType() {
|
|
@@ -766,9 +915,11 @@ class InsertQueryBuilder {
|
|
|
766
915
|
*/
|
|
767
916
|
async execute() {
|
|
768
917
|
const compiledQuery = this.compile();
|
|
769
|
-
const query = compiledQuery.query;
|
|
770
918
|
const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
|
|
771
|
-
|
|
919
|
+
const { adapter } = this.#props.executor;
|
|
920
|
+
const query = compiledQuery.query;
|
|
921
|
+
if ((query.returning && adapter.supportsReturning) ||
|
|
922
|
+
(query.output && adapter.supportsOutput)) {
|
|
772
923
|
return result.rows;
|
|
773
924
|
}
|
|
774
925
|
return [
|
|
@@ -13,12 +13,17 @@
|
|
|
13
13
|
* ### Examples
|
|
14
14
|
*
|
|
15
15
|
* ```ts
|
|
16
|
-
*
|
|
17
|
-
* .insertInto('person')
|
|
18
|
-
* .values(person)
|
|
19
|
-
* .executeTakeFirst()
|
|
16
|
+
* import type { NewPerson } from 'type-editor' // imaginary module
|
|
20
17
|
*
|
|
21
|
-
*
|
|
18
|
+
* async function insertPerson(person: NewPerson) {
|
|
19
|
+
* const result = await db
|
|
20
|
+
* .insertInto('person')
|
|
21
|
+
* .values(person)
|
|
22
|
+
* .executeTakeFirstOrThrow()
|
|
23
|
+
*
|
|
24
|
+
* console.log(result.insertId) // relevant on MySQL
|
|
25
|
+
* console.log(result.numInsertedOrUpdatedRows) // always relevant
|
|
26
|
+
* }
|
|
22
27
|
* ```
|
|
23
28
|
*/
|
|
24
29
|
export declare class InsertResult {
|
|
@@ -16,12 +16,17 @@ exports.InsertResult = void 0;
|
|
|
16
16
|
* ### Examples
|
|
17
17
|
*
|
|
18
18
|
* ```ts
|
|
19
|
-
*
|
|
20
|
-
* .insertInto('person')
|
|
21
|
-
* .values(person)
|
|
22
|
-
* .executeTakeFirst()
|
|
19
|
+
* import type { NewPerson } from 'type-editor' // imaginary module
|
|
23
20
|
*
|
|
24
|
-
*
|
|
21
|
+
* async function insertPerson(person: NewPerson) {
|
|
22
|
+
* const result = await db
|
|
23
|
+
* .insertInto('person')
|
|
24
|
+
* .values(person)
|
|
25
|
+
* .executeTakeFirstOrThrow()
|
|
26
|
+
*
|
|
27
|
+
* console.log(result.insertId) // relevant on MySQL
|
|
28
|
+
* console.log(result.numInsertedOrUpdatedRows) // always relevant
|
|
29
|
+
* }
|
|
25
30
|
* ```
|
|
26
31
|
*/
|
|
27
32
|
class InsertResult {
|