kysely 0.27.4 → 0.27.6

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.
Files changed (222) hide show
  1. package/.renovaterc.json +3 -0
  2. package/CODE_OF_CONDUCT.md +183 -0
  3. package/CONTRIBUTING.md +121 -23
  4. package/FUNDING.md +25 -0
  5. package/README.md +13 -2
  6. package/deno.check.d.ts +86 -0
  7. package/deno.check.json +21 -0
  8. package/dist/cjs/dialect/dialect-adapter-base.d.ts +11 -2
  9. package/dist/cjs/dialect/dialect-adapter.d.ts +11 -2
  10. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +11 -2
  11. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +37 -29
  12. package/dist/cjs/dialect/mssql/mssql-driver.js +20 -13
  13. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
  14. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  15. package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
  16. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
  17. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  18. package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
  19. package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
  20. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  21. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +66 -44
  22. package/dist/cjs/driver/dummy-driver.d.ts +13 -12
  23. package/dist/cjs/driver/dummy-driver.js +13 -12
  24. package/dist/cjs/dynamic/dynamic.d.ts +6 -6
  25. package/dist/cjs/dynamic/dynamic.js +6 -6
  26. package/dist/cjs/expression/expression-builder.d.ts +154 -61
  27. package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
  28. package/dist/cjs/expression/expression.d.ts +40 -5
  29. package/dist/cjs/helpers/mssql.d.ts +74 -14
  30. package/dist/cjs/helpers/mssql.js +74 -14
  31. package/dist/cjs/helpers/mysql.d.ts +14 -10
  32. package/dist/cjs/helpers/mysql.js +14 -10
  33. package/dist/cjs/helpers/postgres.d.ts +7 -4
  34. package/dist/cjs/helpers/postgres.js +7 -4
  35. package/dist/cjs/helpers/sqlite.d.ts +41 -16
  36. package/dist/cjs/helpers/sqlite.js +41 -16
  37. package/dist/cjs/kysely.d.ts +99 -41
  38. package/dist/cjs/kysely.js +60 -36
  39. package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
  40. package/dist/cjs/migration/file-migration-provider.js +2 -2
  41. package/dist/cjs/migration/migrator.d.ts +90 -15
  42. package/dist/cjs/migration/migrator.js +95 -17
  43. package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
  44. package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
  45. package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/data-type-node.js +12 -0
  47. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -0
  48. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
  49. package/dist/cjs/operation-node/merge-query-node.d.ts +1 -0
  50. package/dist/cjs/operation-node/operation-node-transformer.d.ts +9 -3
  51. package/dist/cjs/operation-node/operation-node-transformer.js +14 -3
  52. package/dist/cjs/operation-node/query-node.d.ts +4 -0
  53. package/dist/cjs/operation-node/query-node.js +8 -0
  54. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  55. package/dist/cjs/operation-node/select-query-node.js +0 -8
  56. package/dist/cjs/operation-node/update-query-node.d.ts +1 -0
  57. package/dist/cjs/parser/insert-values-parser.js +3 -1
  58. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +52 -25
  59. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +24 -19
  60. package/dist/cjs/plugin/camel-case/camel-case.js +4 -1
  61. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  62. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  63. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  64. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  65. package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
  66. package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
  67. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
  68. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
  69. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  70. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  71. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +26 -0
  72. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
  73. package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
  74. package/dist/cjs/query-builder/delete-query-builder.d.ts +137 -45
  75. package/dist/cjs/query-builder/delete-query-builder.js +76 -26
  76. package/dist/cjs/query-builder/function-module.d.ts +35 -88
  77. package/dist/cjs/query-builder/insert-query-builder.d.ts +239 -65
  78. package/dist/cjs/query-builder/insert-query-builder.js +188 -52
  79. package/dist/cjs/query-builder/insert-result.d.ts +10 -5
  80. package/dist/cjs/query-builder/insert-result.js +10 -5
  81. package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
  82. package/dist/cjs/query-builder/json-path-builder.js +8 -5
  83. package/dist/cjs/query-builder/merge-query-builder.d.ts +159 -21
  84. package/dist/cjs/query-builder/merge-query-builder.js +68 -6
  85. package/dist/cjs/query-builder/on-conflict-builder.d.ts +51 -18
  86. package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
  87. package/dist/cjs/query-builder/output-interface.d.ts +50 -7
  88. package/dist/cjs/query-builder/returning-interface.d.ts +5 -5
  89. package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
  90. package/dist/cjs/query-builder/select-query-builder.d.ts +295 -63
  91. package/dist/cjs/query-builder/select-query-builder.js +7 -7
  92. package/dist/cjs/query-builder/update-query-builder.d.ts +138 -29
  93. package/dist/cjs/query-builder/update-query-builder.js +75 -10
  94. package/dist/cjs/query-builder/update-result.d.ts +2 -2
  95. package/dist/cjs/query-builder/update-result.js +2 -2
  96. package/dist/cjs/query-builder/where-interface.d.ts +5 -1
  97. package/dist/cjs/query-compiler/default-query-compiler.js +20 -0
  98. package/dist/cjs/query-creator.d.ts +66 -18
  99. package/dist/cjs/query-creator.js +2 -2
  100. package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
  101. package/dist/cjs/raw-builder/sql.d.ts +27 -8
  102. package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
  103. package/dist/cjs/schema/alter-column-builder.js +17 -3
  104. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +43 -9
  105. package/dist/cjs/schema/alter-table-add-index-builder.js +26 -9
  106. package/dist/cjs/schema/column-definition-builder.d.ts +283 -26
  107. package/dist/cjs/schema/column-definition-builder.js +283 -26
  108. package/dist/cjs/schema/create-table-builder.d.ts +86 -33
  109. package/dist/cjs/schema/create-table-builder.js +86 -33
  110. package/dist/cjs/util/column-type.d.ts +5 -9
  111. package/dist/cjs/util/require-all-props.d.ts +4 -2
  112. package/dist/cjs/util/require-all-props.js +4 -2
  113. package/dist/cjs/util/streamable.d.ts +1 -1
  114. package/dist/cjs/util/type-utils.d.ts +4 -2
  115. package/dist/esm/dialect/dialect-adapter-base.d.ts +11 -2
  116. package/dist/esm/dialect/dialect-adapter.d.ts +11 -2
  117. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +11 -2
  118. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +37 -29
  119. package/dist/esm/dialect/mssql/mssql-driver.js +20 -13
  120. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
  121. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  122. package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
  123. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
  124. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  125. package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
  126. package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
  127. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  128. package/dist/esm/dialect/sqlite/sqlite-introspector.js +66 -44
  129. package/dist/esm/driver/dummy-driver.d.ts +13 -12
  130. package/dist/esm/driver/dummy-driver.js +13 -12
  131. package/dist/esm/dynamic/dynamic.d.ts +6 -6
  132. package/dist/esm/dynamic/dynamic.js +6 -6
  133. package/dist/esm/expression/expression-builder.d.ts +154 -61
  134. package/dist/esm/expression/expression-wrapper.d.ts +92 -23
  135. package/dist/esm/expression/expression.d.ts +40 -5
  136. package/dist/esm/helpers/mssql.d.ts +74 -14
  137. package/dist/esm/helpers/mssql.js +74 -14
  138. package/dist/esm/helpers/mysql.d.ts +14 -10
  139. package/dist/esm/helpers/mysql.js +14 -10
  140. package/dist/esm/helpers/postgres.d.ts +7 -4
  141. package/dist/esm/helpers/postgres.js +7 -4
  142. package/dist/esm/helpers/sqlite.d.ts +41 -16
  143. package/dist/esm/helpers/sqlite.js +41 -16
  144. package/dist/esm/kysely.d.ts +99 -41
  145. package/dist/esm/kysely.js +60 -36
  146. package/dist/esm/migration/file-migration-provider.d.ts +2 -2
  147. package/dist/esm/migration/file-migration-provider.js +2 -2
  148. package/dist/esm/migration/migrator.d.ts +90 -15
  149. package/dist/esm/migration/migrator.js +95 -17
  150. package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
  151. package/dist/esm/operation-node/aggregate-function-node.js +9 -0
  152. package/dist/esm/operation-node/data-type-node.d.ts +1 -1
  153. package/dist/esm/operation-node/data-type-node.js +12 -0
  154. package/dist/esm/operation-node/delete-query-node.d.ts +1 -0
  155. package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
  156. package/dist/esm/operation-node/merge-query-node.d.ts +1 -0
  157. package/dist/esm/operation-node/operation-node-transformer.d.ts +9 -3
  158. package/dist/esm/operation-node/operation-node-transformer.js +14 -3
  159. package/dist/esm/operation-node/query-node.d.ts +4 -0
  160. package/dist/esm/operation-node/query-node.js +8 -0
  161. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  162. package/dist/esm/operation-node/select-query-node.js +0 -8
  163. package/dist/esm/operation-node/update-query-node.d.ts +1 -0
  164. package/dist/esm/parser/insert-values-parser.js +3 -1
  165. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +52 -25
  166. package/dist/esm/plugin/camel-case/camel-case-plugin.js +24 -19
  167. package/dist/esm/plugin/camel-case/camel-case.js +4 -1
  168. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  169. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  170. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  171. package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  172. package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
  173. package/dist/esm/plugin/noop-plugin.d.ts +28 -6
  174. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
  175. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
  176. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  177. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  178. package/dist/esm/plugin/with-schema/with-schema-transformer.js +26 -0
  179. package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
  180. package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
  181. package/dist/esm/query-builder/delete-query-builder.d.ts +137 -45
  182. package/dist/esm/query-builder/delete-query-builder.js +76 -26
  183. package/dist/esm/query-builder/function-module.d.ts +35 -88
  184. package/dist/esm/query-builder/insert-query-builder.d.ts +239 -65
  185. package/dist/esm/query-builder/insert-query-builder.js +188 -52
  186. package/dist/esm/query-builder/insert-result.d.ts +10 -5
  187. package/dist/esm/query-builder/insert-result.js +10 -5
  188. package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
  189. package/dist/esm/query-builder/json-path-builder.js +8 -5
  190. package/dist/esm/query-builder/merge-query-builder.d.ts +159 -21
  191. package/dist/esm/query-builder/merge-query-builder.js +68 -6
  192. package/dist/esm/query-builder/on-conflict-builder.d.ts +51 -18
  193. package/dist/esm/query-builder/on-conflict-builder.js +41 -16
  194. package/dist/esm/query-builder/output-interface.d.ts +50 -7
  195. package/dist/esm/query-builder/returning-interface.d.ts +5 -5
  196. package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
  197. package/dist/esm/query-builder/select-query-builder.d.ts +295 -63
  198. package/dist/esm/query-builder/select-query-builder.js +7 -7
  199. package/dist/esm/query-builder/update-query-builder.d.ts +138 -29
  200. package/dist/esm/query-builder/update-query-builder.js +75 -10
  201. package/dist/esm/query-builder/update-result.d.ts +2 -2
  202. package/dist/esm/query-builder/update-result.js +2 -2
  203. package/dist/esm/query-builder/where-interface.d.ts +5 -1
  204. package/dist/esm/query-compiler/default-query-compiler.js +20 -0
  205. package/dist/esm/query-creator.d.ts +66 -18
  206. package/dist/esm/query-creator.js +2 -2
  207. package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
  208. package/dist/esm/raw-builder/sql.d.ts +27 -8
  209. package/dist/esm/schema/alter-column-builder.d.ts +17 -3
  210. package/dist/esm/schema/alter-column-builder.js +17 -3
  211. package/dist/esm/schema/alter-table-add-index-builder.d.ts +43 -9
  212. package/dist/esm/schema/alter-table-add-index-builder.js +26 -9
  213. package/dist/esm/schema/column-definition-builder.d.ts +283 -26
  214. package/dist/esm/schema/column-definition-builder.js +283 -26
  215. package/dist/esm/schema/create-table-builder.d.ts +86 -33
  216. package/dist/esm/schema/create-table-builder.js +86 -33
  217. package/dist/esm/util/column-type.d.ts +5 -9
  218. package/dist/esm/util/require-all-props.d.ts +4 -2
  219. package/dist/esm/util/require-all-props.js +4 -2
  220. package/dist/esm/util/streamable.d.ts +1 -1
  221. package/dist/esm/util/type-utils.d.ts +4 -2
  222. 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>`>concat(${ani}, ${ston})`,
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(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" = $3
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" = $3
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" = $3
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" = $3
430
- * where "excluded"."name" != $4
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(person)
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(values)
489
- * .onDuplicateKeyUpdate({ species: 'hamster' })
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
- * .executeTakeFirst()
618
+ * .executeTakeFirstOrThrow()
518
619
  * ```
519
620
  *
520
621
  * Return multiple columns:
521
622
  *
522
623
  * ```ts
523
- * const { id, first_name } = await db
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
- * .executeTakeFirst()
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('pets').select('pet.id').limit(1).as('first_pet_id')
648
+ * eb.selectFrom('pet').select('pet.id').limit(1).as('first_pet_id')
548
649
  * ])
549
- * .executeTakeFirst()
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
- * .executeTakeFirst()
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 { id, first_name } = await db
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
- * .executeTakeFirst()
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 { id, full_name } = await db
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
- * .executeTakeFirst()
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', age: 42 })
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" ("James", "Smith", 42)
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.updateTable('person')
680
- * .set(values)
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
- * async function insertPerson(values: InsertablePerson, returnLastName: boolean) {
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({ ...inputPerson, nullable_column: 'hell yeah!' })
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 (nullable_column) {
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({ ...inputPerson, nullable_column: 'hell yeah!' })
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: string }>()
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
- * const result = await db
794
- * .with('new_person', (qb) => qb
795
- * .insertInto('person')
796
- * .values(person)
797
- * .returning('id')
798
- * .$assertType<{ id: string }>()
799
- * )
800
- * .with('new_pet', (qb) => qb
801
- * .insertInto('pet')
802
- * .values((eb) => ({ owner_id: eb.selectFrom('new_person').select('id'), ...pet }))
803
- * .returning(['name as pet_name', 'species'])
804
- * .$assertType<{ pet_name: string, species: Species }>()
805
- * )
806
- * .selectFrom(['new_person', 'new_pet'])
807
- * .selectAll()
808
- * .executeTakeFirstOrThrow()
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')