kysely 0.27.4 → 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 +1 -1
- package/deno.check.d.ts +86 -0
- package/deno.check.json +21 -0
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +11 -2
- package/dist/cjs/dialect/dialect-adapter.d.ts +11 -2
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +11 -2
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +37 -29
- package/dist/cjs/dialect/mssql/mssql-driver.js +20 -13
- 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/dummy-driver.d.ts +13 -12
- package/dist/cjs/driver/dummy-driver.js +13 -12
- package/dist/cjs/dynamic/dynamic.d.ts +6 -6
- package/dist/cjs/dynamic/dynamic.js +6 -6
- package/dist/cjs/expression/expression-builder.d.ts +152 -61
- package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
- package/dist/cjs/expression/expression.d.ts +40 -5
- package/dist/cjs/helpers/mssql.d.ts +74 -14
- package/dist/cjs/helpers/mssql.js +74 -14
- package/dist/cjs/helpers/mysql.d.ts +14 -10
- package/dist/cjs/helpers/mysql.js +14 -10
- package/dist/cjs/helpers/postgres.d.ts +7 -4
- package/dist/cjs/helpers/postgres.js +7 -4
- package/dist/cjs/helpers/sqlite.d.ts +41 -16
- package/dist/cjs/helpers/sqlite.js +41 -16
- package/dist/cjs/kysely.d.ts +99 -41
- package/dist/cjs/kysely.js +60 -36
- 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/data-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/data-type-node.js +12 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/merge-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +9 -3
- package/dist/cjs/operation-node/operation-node-transformer.js +14 -3
- package/dist/cjs/operation-node/query-node.d.ts +4 -0
- package/dist/cjs/operation-node/query-node.js +8 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/select-query-node.js +0 -8
- package/dist/cjs/operation-node/update-query-node.d.ts +1 -0
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +52 -25
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +24 -19
- 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 +62 -9
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
- 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 +137 -45
- package/dist/cjs/query-builder/delete-query-builder.js +76 -26
- package/dist/cjs/query-builder/function-module.d.ts +35 -88
- package/dist/cjs/query-builder/insert-query-builder.d.ts +239 -65
- package/dist/cjs/query-builder/insert-query-builder.js +188 -52
- 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 +159 -21
- package/dist/cjs/query-builder/merge-query-builder.js +68 -6
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +51 -18
- package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
- package/dist/cjs/query-builder/output-interface.d.ts +50 -7
- package/dist/cjs/query-builder/returning-interface.d.ts +5 -5
- package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +295 -63
- package/dist/cjs/query-builder/select-query-builder.js +7 -7
- package/dist/cjs/query-builder/update-query-builder.d.ts +138 -29
- package/dist/cjs/query-builder/update-query-builder.js +75 -10
- package/dist/cjs/query-builder/update-result.d.ts +2 -2
- package/dist/cjs/query-builder/update-result.js +2 -2
- package/dist/cjs/query-builder/where-interface.d.ts +5 -1
- package/dist/cjs/query-compiler/default-query-compiler.js +20 -0
- package/dist/cjs/query-creator.d.ts +66 -18
- package/dist/cjs/query-creator.js +2 -2
- package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
- package/dist/cjs/raw-builder/sql.d.ts +26 -7
- package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
- package/dist/cjs/schema/alter-column-builder.js +17 -3
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +43 -9
- package/dist/cjs/schema/alter-table-add-index-builder.js +26 -9
- package/dist/cjs/schema/column-definition-builder.d.ts +283 -26
- package/dist/cjs/schema/column-definition-builder.js +283 -26
- 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/column-type.d.ts +5 -9
- package/dist/cjs/util/require-all-props.d.ts +4 -2
- package/dist/cjs/util/require-all-props.js +4 -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 +11 -2
- package/dist/esm/dialect/dialect-adapter.d.ts +11 -2
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +11 -2
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +37 -29
- package/dist/esm/dialect/mssql/mssql-driver.js +20 -13
- 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/dummy-driver.d.ts +13 -12
- package/dist/esm/driver/dummy-driver.js +13 -12
- package/dist/esm/dynamic/dynamic.d.ts +6 -6
- package/dist/esm/dynamic/dynamic.js +6 -6
- package/dist/esm/expression/expression-builder.d.ts +152 -61
- 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 +14 -10
- package/dist/esm/helpers/mysql.js +14 -10
- package/dist/esm/helpers/postgres.d.ts +7 -4
- package/dist/esm/helpers/postgres.js +7 -4
- package/dist/esm/helpers/sqlite.d.ts +41 -16
- package/dist/esm/helpers/sqlite.js +41 -16
- package/dist/esm/kysely.d.ts +99 -41
- package/dist/esm/kysely.js +60 -36
- 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/data-type-node.d.ts +1 -1
- package/dist/esm/operation-node/data-type-node.js +12 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
- package/dist/esm/operation-node/merge-query-node.d.ts +1 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +9 -3
- package/dist/esm/operation-node/operation-node-transformer.js +14 -3
- package/dist/esm/operation-node/query-node.d.ts +4 -0
- package/dist/esm/operation-node/query-node.js +8 -0
- package/dist/esm/operation-node/select-query-node.d.ts +0 -1
- package/dist/esm/operation-node/select-query-node.js +0 -8
- package/dist/esm/operation-node/update-query-node.d.ts +1 -0
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +52 -25
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +24 -19
- 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 +62 -9
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
- 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 +137 -45
- package/dist/esm/query-builder/delete-query-builder.js +76 -26
- package/dist/esm/query-builder/function-module.d.ts +35 -88
- package/dist/esm/query-builder/insert-query-builder.d.ts +239 -65
- package/dist/esm/query-builder/insert-query-builder.js +188 -52
- 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 +159 -21
- package/dist/esm/query-builder/merge-query-builder.js +68 -6
- package/dist/esm/query-builder/on-conflict-builder.d.ts +51 -18
- package/dist/esm/query-builder/on-conflict-builder.js +41 -16
- package/dist/esm/query-builder/output-interface.d.ts +50 -7
- package/dist/esm/query-builder/returning-interface.d.ts +5 -5
- package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +295 -63
- package/dist/esm/query-builder/select-query-builder.js +7 -7
- package/dist/esm/query-builder/update-query-builder.d.ts +138 -29
- package/dist/esm/query-builder/update-query-builder.js +75 -10
- package/dist/esm/query-builder/update-result.d.ts +2 -2
- package/dist/esm/query-builder/update-result.js +2 -2
- package/dist/esm/query-builder/where-interface.d.ts +5 -1
- package/dist/esm/query-compiler/default-query-compiler.js +20 -0
- package/dist/esm/query-creator.d.ts +66 -18
- package/dist/esm/query-creator.js +2 -2
- package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
- package/dist/esm/raw-builder/sql.d.ts +26 -7
- package/dist/esm/schema/alter-column-builder.d.ts +17 -3
- package/dist/esm/schema/alter-column-builder.js +17 -3
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +43 -9
- package/dist/esm/schema/alter-table-add-index-builder.js +26 -9
- package/dist/esm/schema/column-definition-builder.d.ts +283 -26
- package/dist/esm/schema/column-definition-builder.js +283 -26
- 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/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 +28 -23
|
@@ -144,7 +144,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
144
144
|
* .insertInto('person')
|
|
145
145
|
* .values(({ ref, selectFrom, fn }) => ({
|
|
146
146
|
* first_name: 'Jennifer',
|
|
147
|
-
* last_name: sql<string
|
|
147
|
+
* last_name: sql<string>`concat(${ani}, ${ston})`,
|
|
148
148
|
* middle_name: ref('first_name'),
|
|
149
149
|
* age: selectFrom('person')
|
|
150
150
|
* .select(fn.avg<number>('age').as('avg_age')),
|
|
@@ -172,7 +172,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
172
172
|
* You can also use the callback version of subqueries or raw expressions:
|
|
173
173
|
*
|
|
174
174
|
* ```ts
|
|
175
|
-
* db.with('jennifer', (db) => db
|
|
175
|
+
* await db.with('jennifer', (db) => db
|
|
176
176
|
* .selectFrom('person')
|
|
177
177
|
* .where('first_name', '=', 'Jennifer')
|
|
178
178
|
* .select(['id', 'first_name', 'gender'])
|
|
@@ -182,6 +182,24 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
182
182
|
* name: eb.selectFrom('jennifer').select('first_name'),
|
|
183
183
|
* species: 'cat',
|
|
184
184
|
* }))
|
|
185
|
+
* .execute()
|
|
186
|
+
* ```
|
|
187
|
+
*
|
|
188
|
+
* The generated SQL (PostgreSQL):
|
|
189
|
+
*
|
|
190
|
+
* ```sql
|
|
191
|
+
* with "jennifer" as (
|
|
192
|
+
* select "id", "first_name", "gender"
|
|
193
|
+
* from "person"
|
|
194
|
+
* where "first_name" = $1
|
|
195
|
+
* limit $2
|
|
196
|
+
* )
|
|
197
|
+
* insert into "pet" ("owner_id", "name", "species")
|
|
198
|
+
* values (
|
|
199
|
+
* (select "id" from "jennifer"),
|
|
200
|
+
* (select "first_name" from "jennifer"),
|
|
201
|
+
* $3
|
|
202
|
+
* )
|
|
185
203
|
* ```
|
|
186
204
|
*/
|
|
187
205
|
values(insert: InsertExpression<DB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
@@ -195,9 +213,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
195
213
|
* ### Examples
|
|
196
214
|
*
|
|
197
215
|
* ```ts
|
|
198
|
-
* db.insertInto('person')
|
|
216
|
+
* await db.insertInto('person')
|
|
199
217
|
* .columns(['first_name'])
|
|
200
218
|
* .expression((eb) => eb.selectFrom('pet').select('pet.name'))
|
|
219
|
+
* .execute()
|
|
201
220
|
* ```
|
|
202
221
|
*
|
|
203
222
|
* The generated SQL (PostgreSQL):
|
|
@@ -251,8 +270,40 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
251
270
|
* .defaultValues()
|
|
252
271
|
* .execute()
|
|
253
272
|
* ```
|
|
273
|
+
*
|
|
274
|
+
* The generated SQL (PostgreSQL):
|
|
275
|
+
*
|
|
276
|
+
* ```sql
|
|
277
|
+
* insert into "person" default values
|
|
278
|
+
* ```
|
|
254
279
|
*/
|
|
255
280
|
defaultValues(): InsertQueryBuilder<DB, TB, O>;
|
|
281
|
+
/**
|
|
282
|
+
* This can be used to add any additional SQL to the end of the query.
|
|
283
|
+
*
|
|
284
|
+
* ### Examples
|
|
285
|
+
*
|
|
286
|
+
* ```ts
|
|
287
|
+
* import { sql } from 'kysely'
|
|
288
|
+
*
|
|
289
|
+
* await db.insertInto('person')
|
|
290
|
+
* .values({
|
|
291
|
+
* first_name: 'John',
|
|
292
|
+
* last_name: 'Doe',
|
|
293
|
+
* gender: 'male',
|
|
294
|
+
* })
|
|
295
|
+
* .modifyEnd(sql`-- This is a comment`)
|
|
296
|
+
* .execute()
|
|
297
|
+
* ```
|
|
298
|
+
*
|
|
299
|
+
* The generated SQL (MySQL):
|
|
300
|
+
*
|
|
301
|
+
* ```sql
|
|
302
|
+
* insert into `person` ("first_name", "last_name", "gender")
|
|
303
|
+
* values (?, ?, ?) -- This is a comment
|
|
304
|
+
* ```
|
|
305
|
+
*/
|
|
306
|
+
modifyEnd(modifier: Expression<any>): InsertQueryBuilder<DB, TB, O>;
|
|
256
307
|
/**
|
|
257
308
|
* Changes an `insert into` query to an `insert ignore into` query.
|
|
258
309
|
*
|
|
@@ -270,9 +321,19 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
270
321
|
* ```ts
|
|
271
322
|
* await db.insertInto('person')
|
|
272
323
|
* .ignore()
|
|
273
|
-
* .values(
|
|
324
|
+
* .values({
|
|
325
|
+
* first_name: 'John',
|
|
326
|
+
* last_name: 'Doe',
|
|
327
|
+
* gender: 'female',
|
|
328
|
+
* })
|
|
274
329
|
* .execute()
|
|
275
330
|
* ```
|
|
331
|
+
*
|
|
332
|
+
* The generated SQL (MySQL):
|
|
333
|
+
*
|
|
334
|
+
* ```sql
|
|
335
|
+
* insert ignore into `person` ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
336
|
+
* ```
|
|
276
337
|
*/
|
|
277
338
|
ignore(): InsertQueryBuilder<DB, TB, O>;
|
|
278
339
|
/**
|
|
@@ -285,6 +346,8 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
285
346
|
* Insert the first 5 rows:
|
|
286
347
|
*
|
|
287
348
|
* ```ts
|
|
349
|
+
* import { sql } from 'kysely'
|
|
350
|
+
*
|
|
288
351
|
* await db.insertInto('person')
|
|
289
352
|
* .top(5)
|
|
290
353
|
* .columns(['first_name', 'gender'])
|
|
@@ -303,6 +366,8 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
303
366
|
* Insert the first 50 percent of rows:
|
|
304
367
|
*
|
|
305
368
|
* ```ts
|
|
369
|
+
* import { sql } from 'kysely'
|
|
370
|
+
*
|
|
306
371
|
* await db.insertInto('person')
|
|
307
372
|
* .top(50, 'percent')
|
|
308
373
|
* .columns(['first_name', 'gender'])
|
|
@@ -333,6 +398,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
333
398
|
* .values({
|
|
334
399
|
* name: 'Catto',
|
|
335
400
|
* species: 'cat',
|
|
401
|
+
* owner_id: 3,
|
|
336
402
|
* })
|
|
337
403
|
* .onConflict((oc) => oc
|
|
338
404
|
* .column('name')
|
|
@@ -344,10 +410,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
344
410
|
* The generated SQL (PostgreSQL):
|
|
345
411
|
*
|
|
346
412
|
* ```sql
|
|
347
|
-
* insert into "pet" ("name", "species")
|
|
348
|
-
* values ($1, $2)
|
|
413
|
+
* insert into "pet" ("name", "species", "owner_id")
|
|
414
|
+
* values ($1, $2, $3)
|
|
349
415
|
* on conflict ("name")
|
|
350
|
-
* do update set "species" = $
|
|
416
|
+
* do update set "species" = $4
|
|
351
417
|
* ```
|
|
352
418
|
*
|
|
353
419
|
* You can provide the name of the constraint instead of a column name:
|
|
@@ -358,6 +424,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
358
424
|
* .values({
|
|
359
425
|
* name: 'Catto',
|
|
360
426
|
* species: 'cat',
|
|
427
|
+
* owner_id: 3,
|
|
361
428
|
* })
|
|
362
429
|
* .onConflict((oc) => oc
|
|
363
430
|
* .constraint('pet_name_key')
|
|
@@ -369,10 +436,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
369
436
|
* The generated SQL (PostgreSQL):
|
|
370
437
|
*
|
|
371
438
|
* ```sql
|
|
372
|
-
* insert into "pet" ("name", "species")
|
|
373
|
-
* values ($1, $2)
|
|
439
|
+
* insert into "pet" ("name", "species", "owner_id")
|
|
440
|
+
* values ($1, $2, $3)
|
|
374
441
|
* on conflict on constraint "pet_name_key"
|
|
375
|
-
* do update set "species" = $
|
|
442
|
+
* do update set "species" = $4
|
|
376
443
|
* ```
|
|
377
444
|
*
|
|
378
445
|
* You can also specify an expression as the conflict target in case
|
|
@@ -386,6 +453,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
386
453
|
* .values({
|
|
387
454
|
* name: 'Catto',
|
|
388
455
|
* species: 'cat',
|
|
456
|
+
* owner_id: 3,
|
|
389
457
|
* })
|
|
390
458
|
* .onConflict((oc) => oc
|
|
391
459
|
* .expression(sql<string>`lower(name)`)
|
|
@@ -397,10 +465,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
397
465
|
* The generated SQL (PostgreSQL):
|
|
398
466
|
*
|
|
399
467
|
* ```sql
|
|
400
|
-
* insert into "pet" ("name", "species")
|
|
401
|
-
* values ($1, $2)
|
|
468
|
+
* insert into "pet" ("name", "species", "owner_id")
|
|
469
|
+
* values ($1, $2, $3)
|
|
402
470
|
* on conflict (lower(name))
|
|
403
|
-
* do update set "species" = $
|
|
471
|
+
* do update set "species" = $4
|
|
404
472
|
* ```
|
|
405
473
|
*
|
|
406
474
|
* You can add a filter for the update statement like this:
|
|
@@ -411,11 +479,12 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
411
479
|
* .values({
|
|
412
480
|
* name: 'Catto',
|
|
413
481
|
* species: 'cat',
|
|
482
|
+
* owner_id: 3,
|
|
414
483
|
* })
|
|
415
484
|
* .onConflict((oc) => oc
|
|
416
485
|
* .column('name')
|
|
417
486
|
* .doUpdateSet({ species: 'hamster' })
|
|
418
|
-
* .where('excluded.name', '!=', 'Catto'
|
|
487
|
+
* .where('excluded.name', '!=', 'Catto')
|
|
419
488
|
* )
|
|
420
489
|
* .execute()
|
|
421
490
|
* ```
|
|
@@ -423,11 +492,11 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
423
492
|
* The generated SQL (PostgreSQL):
|
|
424
493
|
*
|
|
425
494
|
* ```sql
|
|
426
|
-
* insert into "pet" ("name", "species")
|
|
427
|
-
* values ($1, $2)
|
|
495
|
+
* insert into "pet" ("name", "species", "owner_id")
|
|
496
|
+
* values ($1, $2, $3)
|
|
428
497
|
* on conflict ("name")
|
|
429
|
-
* do update set "species" = $
|
|
430
|
-
* where "excluded"."name" != $
|
|
498
|
+
* do update set "species" = $4
|
|
499
|
+
* where "excluded"."name" != $5
|
|
431
500
|
* ```
|
|
432
501
|
*
|
|
433
502
|
* You can create an `on conflict do nothing` clauses like this:
|
|
@@ -438,6 +507,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
438
507
|
* .values({
|
|
439
508
|
* name: 'Catto',
|
|
440
509
|
* species: 'cat',
|
|
510
|
+
* owner_id: 3,
|
|
441
511
|
* })
|
|
442
512
|
* .onConflict((oc) => oc
|
|
443
513
|
* .column('name')
|
|
@@ -449,8 +519,8 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
449
519
|
* The generated SQL (PostgreSQL):
|
|
450
520
|
*
|
|
451
521
|
* ```sql
|
|
452
|
-
* insert into "pet" ("name", "species")
|
|
453
|
-
* values ($1, $2)
|
|
522
|
+
* insert into "pet" ("name", "species", "owner_id")
|
|
523
|
+
* values ($1, $2, $3)
|
|
454
524
|
* on conflict ("name") do nothing
|
|
455
525
|
* ```
|
|
456
526
|
*
|
|
@@ -459,8 +529,13 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
459
529
|
* `ExpressionBuilder`:
|
|
460
530
|
*
|
|
461
531
|
* ```ts
|
|
462
|
-
* db.insertInto('person')
|
|
463
|
-
* .values(
|
|
532
|
+
* await db.insertInto('person')
|
|
533
|
+
* .values({
|
|
534
|
+
* id: 1,
|
|
535
|
+
* first_name: 'John',
|
|
536
|
+
* last_name: 'Doe',
|
|
537
|
+
* gender: 'male',
|
|
538
|
+
* })
|
|
464
539
|
* .onConflict(oc => oc
|
|
465
540
|
* .column('id')
|
|
466
541
|
* .doUpdateSet({
|
|
@@ -468,6 +543,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
468
543
|
* last_name: (eb) => eb.ref('excluded.last_name')
|
|
469
544
|
* })
|
|
470
545
|
* )
|
|
546
|
+
* .execute()
|
|
547
|
+
* ```
|
|
548
|
+
*
|
|
549
|
+
* The generated SQL (PostgreSQL):
|
|
550
|
+
*
|
|
551
|
+
* ```sql
|
|
552
|
+
* insert into "person" ("id", "first_name", "last_name", "gender")
|
|
553
|
+
* values ($1, $2, $3, $4)
|
|
554
|
+
* on conflict ("id")
|
|
555
|
+
* do update set
|
|
556
|
+
* "first_name" = "excluded"."first_name",
|
|
557
|
+
* "last_name" = "excluded"."last_name"
|
|
471
558
|
* ```
|
|
472
559
|
*/
|
|
473
560
|
onConflict(callback: (builder: OnConflictBuilder<DB, TB>) => OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>> | OnConflictDoNothingBuilder<DB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
@@ -485,8 +572,22 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
485
572
|
* ```ts
|
|
486
573
|
* await db
|
|
487
574
|
* .insertInto('person')
|
|
488
|
-
* .values(
|
|
489
|
-
*
|
|
575
|
+
* .values({
|
|
576
|
+
* id: 1,
|
|
577
|
+
* first_name: 'John',
|
|
578
|
+
* last_name: 'Doe',
|
|
579
|
+
* gender: 'male',
|
|
580
|
+
* })
|
|
581
|
+
* .onDuplicateKeyUpdate({ updated_at: new Date().toISOString() })
|
|
582
|
+
* .execute()
|
|
583
|
+
* ```
|
|
584
|
+
*
|
|
585
|
+
* The generated SQL (MySQL):
|
|
586
|
+
*
|
|
587
|
+
* ```sql
|
|
588
|
+
* insert into `person` (`id`, `first_name`, `last_name`, `gender`)
|
|
589
|
+
* values (?, ?, ?, ?)
|
|
590
|
+
* on duplicate key update `updated_at` = ?
|
|
490
591
|
* ```
|
|
491
592
|
*/
|
|
492
593
|
onDuplicateKeyUpdate(update: UpdateObjectExpression<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
@@ -514,20 +615,20 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
514
615
|
* last_name: 'Aniston'
|
|
515
616
|
* })
|
|
516
617
|
* .returning('id')
|
|
517
|
-
* .
|
|
618
|
+
* .executeTakeFirstOrThrow()
|
|
518
619
|
* ```
|
|
519
620
|
*
|
|
520
621
|
* Return multiple columns:
|
|
521
622
|
*
|
|
522
623
|
* ```ts
|
|
523
|
-
* const { id,
|
|
624
|
+
* const { id, last_name } = await db
|
|
524
625
|
* .insertInto('person')
|
|
525
626
|
* .values({
|
|
526
627
|
* first_name: 'Jennifer',
|
|
527
628
|
* last_name: 'Aniston'
|
|
528
629
|
* })
|
|
529
630
|
* .returning(['id', 'last_name'])
|
|
530
|
-
* .
|
|
631
|
+
* .executeTakeFirstOrThrow()
|
|
531
632
|
* ```
|
|
532
633
|
*
|
|
533
634
|
* Return arbitrary expressions:
|
|
@@ -544,9 +645,9 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
544
645
|
* .returning((eb) => [
|
|
545
646
|
* 'id as id',
|
|
546
647
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
547
|
-
* eb.selectFrom('
|
|
648
|
+
* eb.selectFrom('pet').select('pet.id').limit(1).as('first_pet_id')
|
|
548
649
|
* ])
|
|
549
|
-
* .
|
|
650
|
+
* .executeTakeFirstOrThrow()
|
|
550
651
|
* ```
|
|
551
652
|
*/
|
|
552
653
|
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
@@ -577,15 +678,24 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
577
678
|
* .output('inserted.id')
|
|
578
679
|
* .values({
|
|
579
680
|
* first_name: 'Jennifer',
|
|
580
|
-
* last_name: 'Aniston'
|
|
681
|
+
* last_name: 'Aniston',
|
|
682
|
+
* gender: 'female',
|
|
581
683
|
* })
|
|
582
|
-
* .
|
|
684
|
+
* .executeTakeFirstOrThrow()
|
|
685
|
+
* ```
|
|
686
|
+
*
|
|
687
|
+
* The generated SQL (MSSQL):
|
|
688
|
+
*
|
|
689
|
+
* ```sql
|
|
690
|
+
* insert into "person" ("first_name", "last_name", "gender")
|
|
691
|
+
* output "inserted"."id"
|
|
692
|
+
* values (@1, @2, @3)
|
|
583
693
|
* ```
|
|
584
694
|
*
|
|
585
695
|
* Return multiple columns:
|
|
586
696
|
*
|
|
587
697
|
* ```ts
|
|
588
|
-
* const {
|
|
698
|
+
* const { old_first_name, old_last_name, new_first_name, new_last_name } = await db
|
|
589
699
|
* .updateTable('person')
|
|
590
700
|
* .set({ first_name: 'John', last_name: 'Doe' })
|
|
591
701
|
* .output([
|
|
@@ -595,7 +705,19 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
595
705
|
* 'inserted.last_name as new_last_name',
|
|
596
706
|
* ])
|
|
597
707
|
* .where('created_at', '<', new Date())
|
|
598
|
-
* .
|
|
708
|
+
* .executeTakeFirstOrThrow()
|
|
709
|
+
* ```
|
|
710
|
+
*
|
|
711
|
+
* The generated SQL (MSSQL):
|
|
712
|
+
*
|
|
713
|
+
* ```sql
|
|
714
|
+
* update "person"
|
|
715
|
+
* set "first_name" = @1, "last_name" = @2
|
|
716
|
+
* output "deleted"."first_name" as "old_first_name",
|
|
717
|
+
* "deleted"."last_name" as "old_last_name",
|
|
718
|
+
* "inserted"."first_name" as "new_first_name",
|
|
719
|
+
* "inserted"."last_name" as "new_last_name"
|
|
720
|
+
* where "created_at" < @3
|
|
599
721
|
* ```
|
|
600
722
|
*
|
|
601
723
|
* Return arbitrary expressions:
|
|
@@ -603,11 +725,19 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
603
725
|
* ```ts
|
|
604
726
|
* import { sql } from 'kysely'
|
|
605
727
|
*
|
|
606
|
-
* const {
|
|
728
|
+
* const { full_name } = await db
|
|
607
729
|
* .deleteFrom('person')
|
|
608
|
-
* .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name')
|
|
730
|
+
* .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name'))
|
|
609
731
|
* .where('created_at', '<', new Date())
|
|
610
|
-
* .
|
|
732
|
+
* .executeTakeFirstOrThrow()
|
|
733
|
+
* ```
|
|
734
|
+
*
|
|
735
|
+
* The generated SQL (MSSQL):
|
|
736
|
+
*
|
|
737
|
+
* ```sql
|
|
738
|
+
* delete from "person"
|
|
739
|
+
* output concat("deleted"."first_name", ' ', "deleted"."last_name") as "full_name"
|
|
740
|
+
* where "created_at" < @1
|
|
611
741
|
* ```
|
|
612
742
|
*
|
|
613
743
|
* Return the action performed on the row:
|
|
@@ -628,7 +758,21 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
628
758
|
* 'inserted.id as inserted_id',
|
|
629
759
|
* 'deleted.id as deleted_id',
|
|
630
760
|
* ])
|
|
761
|
+
* .execute()
|
|
631
762
|
* ```
|
|
763
|
+
*
|
|
764
|
+
* The generated SQL (MSSQL):
|
|
765
|
+
*
|
|
766
|
+
* ```sql
|
|
767
|
+
* merge into "person"
|
|
768
|
+
* using "pet" on "pet"."owner_id" = "person"."id"
|
|
769
|
+
* when matched then delete
|
|
770
|
+
* when not matched then
|
|
771
|
+
* insert ("first_name", "last_name", "gender")
|
|
772
|
+
* values (@1, @2, @3)
|
|
773
|
+
* output "inserted"."id" as "inserted_id", "deleted"."id" as "deleted_id"
|
|
774
|
+
* ```
|
|
775
|
+
*
|
|
632
776
|
*/
|
|
633
777
|
output<OE extends OutputExpression<DB, TB, 'inserted'>>(selections: readonly OE[]): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>>;
|
|
634
778
|
output<CB extends OutputCallback<DB, TB, 'inserted'>>(callback: CB): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputCallback<CB>>>;
|
|
@@ -646,16 +790,17 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
646
790
|
* ### Examples
|
|
647
791
|
*
|
|
648
792
|
* ```ts
|
|
649
|
-
* db.insertInto('person')
|
|
650
|
-
* .values({ first_name: 'James', last_name: 'Smith',
|
|
793
|
+
* await db.insertInto('person')
|
|
794
|
+
* .values({ first_name: 'James', last_name: 'Smith', gender: 'male' })
|
|
651
795
|
* .returning(['first_name'])
|
|
652
796
|
* .clearReturning()
|
|
797
|
+
* .execute()
|
|
653
798
|
* ```
|
|
654
799
|
*
|
|
655
800
|
* The generated SQL(PostgreSQL):
|
|
656
801
|
*
|
|
657
802
|
* ```sql
|
|
658
|
-
* insert into "person" ("
|
|
803
|
+
* insert into "person" ("first_name", "last_name", "gender") values ($1, $2, $3)
|
|
659
804
|
* ```
|
|
660
805
|
*/
|
|
661
806
|
clearReturning(): InsertQueryBuilder<DB, TB, InsertResult>;
|
|
@@ -671,13 +816,15 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
671
816
|
* The next example uses a helper function `log` to log a query:
|
|
672
817
|
*
|
|
673
818
|
* ```ts
|
|
819
|
+
* import type { Compilable } from 'kysely'
|
|
820
|
+
*
|
|
674
821
|
* function log<T extends Compilable>(qb: T): T {
|
|
675
822
|
* console.log(qb.compile())
|
|
676
823
|
* return qb
|
|
677
824
|
* }
|
|
678
825
|
*
|
|
679
|
-
* db.
|
|
680
|
-
* .
|
|
826
|
+
* await db.insertInto('person')
|
|
827
|
+
* .values({ first_name: 'John', last_name: 'Doe', gender: 'male' })
|
|
681
828
|
* .$call(log)
|
|
682
829
|
* .execute()
|
|
683
830
|
* ```
|
|
@@ -696,7 +843,9 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
696
843
|
* ### Examples
|
|
697
844
|
*
|
|
698
845
|
* ```ts
|
|
699
|
-
*
|
|
846
|
+
* import type { NewPerson } from 'type-editor' // imaginary module
|
|
847
|
+
*
|
|
848
|
+
* async function insertPerson(values: NewPerson, returnLastName: boolean) {
|
|
700
849
|
* return await db
|
|
701
850
|
* .insertInto('person')
|
|
702
851
|
* .values(values)
|
|
@@ -711,11 +860,11 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
711
860
|
* the code. In the example above the return type of the `insertPerson` function is:
|
|
712
861
|
*
|
|
713
862
|
* ```ts
|
|
714
|
-
* {
|
|
863
|
+
* Promise<{
|
|
715
864
|
* id: number
|
|
716
865
|
* first_name: string
|
|
717
866
|
* last_name?: string
|
|
718
|
-
* }
|
|
867
|
+
* }>
|
|
719
868
|
* ```
|
|
720
869
|
*/
|
|
721
870
|
$if<O2>(condition: boolean, func: (qb: this) => InsertQueryBuilder<any, any, O2>): O2 extends InsertResult ? InsertQueryBuilder<DB, TB, InsertResult> : O2 extends O & infer E ? InsertQueryBuilder<DB, TB, O & Partial<E>> : InsertQueryBuilder<DB, TB, Partial<O2>>;
|
|
@@ -744,23 +893,41 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
744
893
|
* Turn this code:
|
|
745
894
|
*
|
|
746
895
|
* ```ts
|
|
896
|
+
* import type { Person } from 'type-editor' // imaginary module
|
|
897
|
+
*
|
|
747
898
|
* const person = await db.insertInto('person')
|
|
748
|
-
* .values({
|
|
899
|
+
* .values({
|
|
900
|
+
* first_name: 'John',
|
|
901
|
+
* last_name: 'Doe',
|
|
902
|
+
* gender: 'male',
|
|
903
|
+
* nullable_column: 'hell yeah!'
|
|
904
|
+
* })
|
|
749
905
|
* .returningAll()
|
|
750
906
|
* .executeTakeFirstOrThrow()
|
|
751
907
|
*
|
|
752
|
-
* if (
|
|
908
|
+
* if (isWithNoNullValue(person)) {
|
|
753
909
|
* functionThatExpectsPersonWithNonNullValue(person)
|
|
754
910
|
* }
|
|
911
|
+
*
|
|
912
|
+
* function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {
|
|
913
|
+
* return person.nullable_column != null
|
|
914
|
+
* }
|
|
755
915
|
* ```
|
|
756
916
|
*
|
|
757
917
|
* Into this:
|
|
758
918
|
*
|
|
759
919
|
* ```ts
|
|
920
|
+
* import type { NotNull } from 'kysely'
|
|
921
|
+
*
|
|
760
922
|
* const person = await db.insertInto('person')
|
|
761
|
-
* .values({
|
|
923
|
+
* .values({
|
|
924
|
+
* first_name: 'John',
|
|
925
|
+
* last_name: 'Doe',
|
|
926
|
+
* gender: 'male',
|
|
927
|
+
* nullable_column: 'hell yeah!'
|
|
928
|
+
* })
|
|
762
929
|
* .returningAll()
|
|
763
|
-
* .$narrowType<{ nullable_column:
|
|
930
|
+
* .$narrowType<{ nullable_column: NotNull }>()
|
|
764
931
|
* .executeTakeFirstOrThrow()
|
|
765
932
|
*
|
|
766
933
|
* functionThatExpectsPersonWithNonNullValue(person)
|
|
@@ -790,22 +957,29 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
790
957
|
* ### Examples
|
|
791
958
|
*
|
|
792
959
|
* ```ts
|
|
793
|
-
*
|
|
794
|
-
*
|
|
795
|
-
*
|
|
796
|
-
*
|
|
797
|
-
* .
|
|
798
|
-
*
|
|
799
|
-
*
|
|
800
|
-
*
|
|
801
|
-
*
|
|
802
|
-
*
|
|
803
|
-
* .
|
|
804
|
-
*
|
|
805
|
-
*
|
|
806
|
-
*
|
|
807
|
-
*
|
|
808
|
-
*
|
|
960
|
+
* import type { NewPerson, NewPet, Species } from 'type-editor' // imaginary module
|
|
961
|
+
*
|
|
962
|
+
* async function insertPersonAndPet(person: NewPerson, pet: Omit<NewPet, 'owner_id'>) {
|
|
963
|
+
* return await db
|
|
964
|
+
* .with('new_person', (qb) => qb
|
|
965
|
+
* .insertInto('person')
|
|
966
|
+
* .values(person)
|
|
967
|
+
* .returning('id')
|
|
968
|
+
* .$assertType<{ id: number }>()
|
|
969
|
+
* )
|
|
970
|
+
* .with('new_pet', (qb) => qb
|
|
971
|
+
* .insertInto('pet')
|
|
972
|
+
* .values((eb) => ({
|
|
973
|
+
* owner_id: eb.selectFrom('new_person').select('id'),
|
|
974
|
+
* ...pet
|
|
975
|
+
* }))
|
|
976
|
+
* .returning(['name as pet_name', 'species'])
|
|
977
|
+
* .$assertType<{ pet_name: string, species: Species }>()
|
|
978
|
+
* )
|
|
979
|
+
* .selectFrom(['new_person', 'new_pet'])
|
|
980
|
+
* .selectAll()
|
|
981
|
+
* .executeTakeFirstOrThrow()
|
|
982
|
+
* }
|
|
809
983
|
* ```
|
|
810
984
|
*/
|
|
811
985
|
$assertType<T extends O>(): O extends T ? InsertQueryBuilder<DB, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
|
|
@@ -844,7 +1018,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
844
1018
|
* ### Examples
|
|
845
1019
|
*
|
|
846
1020
|
* ```ts
|
|
847
|
-
* const stream = db
|
|
1021
|
+
* const stream = db
|
|
848
1022
|
* .selectFrom('person')
|
|
849
1023
|
* .select(['first_name', 'last_name'])
|
|
850
1024
|
* .where('gender', '=', 'other')
|