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