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
@@ -60,6 +60,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
60
60
  * you can always use:
61
61
  *
62
62
  * ```ts
63
+ * import { sql } from 'kysely'
64
+ *
63
65
  * sql`your operator`
64
66
  * ```
65
67
  *
@@ -71,7 +73,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
71
73
  * const persons = await db
72
74
  * .selectFrom('person')
73
75
  * .selectAll()
74
- * .where('id', 'in', ['1', '2', '3'])
76
+ * .where('id', 'in', [1, 2, 3])
75
77
  * .execute()
76
78
  * ```
77
79
  *
@@ -319,6 +321,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
319
321
  * import { sql } from 'kysely'
320
322
  * const { ref } = db.dynamic
321
323
  *
324
+ * const columnFromUserInput: string = 'id'
325
+ *
322
326
  * const persons = await db
323
327
  * .selectFrom('person')
324
328
  * .selectAll()
@@ -529,7 +533,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
529
533
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
530
534
  * // `select` needs to come after the call to `innerJoin` so
531
535
  * // that you can select from the joined table.
532
- * .select('person.id', 'pet.name')
536
+ * .select(['person.id', 'pet.name'])
533
537
  * .execute()
534
538
  *
535
539
  * result[0].id
@@ -601,7 +605,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
601
605
  * ```ts
602
606
  * await db.selectFrom('person')
603
607
  * .innerJoin(
604
- * qb.selectFrom('pet')
608
+ * db.selectFrom('pet')
605
609
  * .select(['owner_id', 'name'])
606
610
  * .where('name', '=', 'Doggo')
607
611
  * .as('doggos'),
@@ -666,20 +670,20 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
666
670
  * last_name: 'Aniston'
667
671
  * })
668
672
  * .returning('id')
669
- * .executeTakeFirst()
673
+ * .executeTakeFirstOrThrow()
670
674
  * ```
671
675
  *
672
676
  * Return multiple columns:
673
677
  *
674
678
  * ```ts
675
- * const { id, first_name } = await db
679
+ * const { id, last_name } = await db
676
680
  * .insertInto('person')
677
681
  * .values({
678
682
  * first_name: 'Jennifer',
679
683
  * last_name: 'Aniston'
680
684
  * })
681
685
  * .returning(['id', 'last_name'])
682
- * .executeTakeFirst()
686
+ * .executeTakeFirstOrThrow()
683
687
  * ```
684
688
  *
685
689
  * Return arbitrary expressions:
@@ -696,9 +700,9 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
696
700
  * .returning((eb) => [
697
701
  * 'id as id',
698
702
  * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
699
- * eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
703
+ * eb.selectFrom('pet').select('pet.id').limit(1).as('first_pet_id')
700
704
  * ])
701
- * .executeTakeFirst()
705
+ * .executeTakeFirstOrThrow()
702
706
  * ```
703
707
  */
704
708
  returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
@@ -727,7 +731,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
727
731
  * Return all columns from all tables
728
732
  *
729
733
  * ```ts
730
- * const result = ctx.db
734
+ * const result = await db
731
735
  * .deleteFrom('toy')
732
736
  * .using(['pet', 'person'])
733
737
  * .whereRef('toy.pet_id', '=', 'pet.id')
@@ -751,7 +755,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
751
755
  * Return all columns from a single table.
752
756
  *
753
757
  * ```ts
754
- * const result = ctx.db
758
+ * const result = await db
755
759
  * .deleteFrom('toy')
756
760
  * .using(['pet', 'person'])
757
761
  * .whereRef('toy.pet_id', '=', 'pet.id')
@@ -775,7 +779,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
775
779
  * Return all columns from multiple tables.
776
780
  *
777
781
  * ```ts
778
- * const result = ctx.db
782
+ * const result = await db
779
783
  * .deleteFrom('toy')
780
784
  * .using(['pet', 'person'])
781
785
  * .whereRef('toy.pet_id', '=', 'pet.id')
@@ -823,15 +827,24 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
823
827
  * .output('inserted.id')
824
828
  * .values({
825
829
  * first_name: 'Jennifer',
826
- * last_name: 'Aniston'
830
+ * last_name: 'Aniston',
831
+ * gender: 'female',
827
832
  * })
828
- * .executeTakeFirst()
833
+ * .executeTakeFirstOrThrow()
834
+ * ```
835
+ *
836
+ * The generated SQL (MSSQL):
837
+ *
838
+ * ```sql
839
+ * insert into "person" ("first_name", "last_name", "gender")
840
+ * output "inserted"."id"
841
+ * values (@1, @2, @3)
829
842
  * ```
830
843
  *
831
844
  * Return multiple columns:
832
845
  *
833
846
  * ```ts
834
- * const { id, first_name } = await db
847
+ * const { old_first_name, old_last_name, new_first_name, new_last_name } = await db
835
848
  * .updateTable('person')
836
849
  * .set({ first_name: 'John', last_name: 'Doe' })
837
850
  * .output([
@@ -841,7 +854,19 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
841
854
  * 'inserted.last_name as new_last_name',
842
855
  * ])
843
856
  * .where('created_at', '<', new Date())
844
- * .executeTakeFirst()
857
+ * .executeTakeFirstOrThrow()
858
+ * ```
859
+ *
860
+ * The generated SQL (MSSQL):
861
+ *
862
+ * ```sql
863
+ * update "person"
864
+ * set "first_name" = @1, "last_name" = @2
865
+ * output "deleted"."first_name" as "old_first_name",
866
+ * "deleted"."last_name" as "old_last_name",
867
+ * "inserted"."first_name" as "new_first_name",
868
+ * "inserted"."last_name" as "new_last_name"
869
+ * where "created_at" < @3
845
870
  * ```
846
871
  *
847
872
  * Return arbitrary expressions:
@@ -849,11 +874,19 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
849
874
  * ```ts
850
875
  * import { sql } from 'kysely'
851
876
  *
852
- * const { id, full_name } = await db
877
+ * const { full_name } = await db
853
878
  * .deleteFrom('person')
854
- * .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name')
879
+ * .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name'))
855
880
  * .where('created_at', '<', new Date())
856
- * .executeTakeFirst()
881
+ * .executeTakeFirstOrThrow()
882
+ * ```
883
+ *
884
+ * The generated SQL (MSSQL):
885
+ *
886
+ * ```sql
887
+ * delete from "person"
888
+ * output concat("deleted"."first_name", ' ', "deleted"."last_name") as "full_name"
889
+ * where "created_at" < @1
857
890
  * ```
858
891
  *
859
892
  * Return the action performed on the row:
@@ -874,7 +907,21 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
874
907
  * 'inserted.id as inserted_id',
875
908
  * 'deleted.id as deleted_id',
876
909
  * ])
910
+ * .execute()
877
911
  * ```
912
+ *
913
+ * The generated SQL (MSSQL):
914
+ *
915
+ * ```sql
916
+ * merge into "person"
917
+ * using "pet" on "pet"."owner_id" = "person"."id"
918
+ * when matched then delete
919
+ * when not matched then
920
+ * insert ("first_name", "last_name", "gender")
921
+ * values (@1, @2, @3)
922
+ * output "inserted"."id" as "inserted_id", "deleted"."id" as "deleted_id"
923
+ * ```
924
+ *
878
925
  */
879
926
  output<OE extends OutputExpression<DB, TB, 'deleted'>>(selections: readonly OE[]): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>>;
880
927
  output<CB extends OutputCallback<DB, TB, 'deleted'>>(callback: CB): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputCallback<CB>>>;
@@ -892,10 +939,11 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
892
939
  * ### Examples
893
940
  *
894
941
  * ```ts
895
- * db.deleteFrom('pet')
942
+ * await db.deleteFrom('pet')
896
943
  * .returningAll()
897
944
  * .where('name', '=', 'Max')
898
945
  * .clearReturning()
946
+ * .execute()
899
947
  * ```
900
948
  *
901
949
  * The generated SQL(PostgreSQL):
@@ -911,11 +959,12 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
911
959
  * ### Examples
912
960
  *
913
961
  * ```ts
914
- * db.deleteFrom('pet')
962
+ * await db.deleteFrom('pet')
915
963
  * .returningAll()
916
964
  * .where('name', '=', 'Max')
917
965
  * .limit(5)
918
966
  * .clearLimit()
967
+ * .execute()
919
968
  * ```
920
969
  *
921
970
  * The generated SQL(PostgreSQL):
@@ -931,11 +980,12 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
931
980
  * ### Examples
932
981
  *
933
982
  * ```ts
934
- * db.deleteFrom('pet')
983
+ * await db.deleteFrom('pet')
935
984
  * .returningAll()
936
985
  * .where('name', '=', 'Max')
937
986
  * .orderBy('id')
938
987
  * .clearOrderBy()
988
+ * .execute()
939
989
  * ```
940
990
  *
941
991
  * The generated SQL(PostgreSQL):
@@ -997,8 +1047,36 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
997
1047
  * .limit(5)
998
1048
  * .execute()
999
1049
  * ```
1050
+ *
1051
+ * The generated SQL (MySQL):
1052
+ *
1053
+ * ```sql
1054
+ * delete from `pet` order by `created_at` limit ?
1055
+ * ```
1000
1056
  */
1001
1057
  limit(limit: ValueExpression<DB, TB, number>): DeleteQueryBuilder<DB, TB, O>;
1058
+ /**
1059
+ * This can be used to add any additional SQL to the end of the query.
1060
+ *
1061
+ * ### Examples
1062
+ *
1063
+ * ```ts
1064
+ * import { sql } from 'kysely'
1065
+ *
1066
+ * await db.deleteFrom('person')
1067
+ * .where('first_name', '=', 'John')
1068
+ * .modifyEnd(sql`-- This is a comment`)
1069
+ * .execute()
1070
+ * ```
1071
+ *
1072
+ * The generated SQL (MySQL):
1073
+ *
1074
+ * ```sql
1075
+ * delete from `person`
1076
+ * where `first_name` = "John" -- This is a comment
1077
+ * ```
1078
+ */
1079
+ modifyEnd(modifier: Expression<any>): DeleteQueryBuilder<DB, TB, O>;
1002
1080
  /**
1003
1081
  * Simply calls the provided function passing `this` as the only argument. `$call` returns
1004
1082
  * what the provided function returns.
@@ -1011,12 +1089,14 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
1011
1089
  * The next example uses a helper function `log` to log a query:
1012
1090
  *
1013
1091
  * ```ts
1092
+ * import type { Compilable } from 'kysely'
1093
+ *
1014
1094
  * function log<T extends Compilable>(qb: T): T {
1015
1095
  * console.log(qb.compile())
1016
1096
  * return qb
1017
1097
  * }
1018
1098
  *
1019
- * db.deleteFrom('person')
1099
+ * await db.deleteFrom('person')
1020
1100
  * .$call(log)
1021
1101
  * .execute()
1022
1102
  * ```
@@ -1050,11 +1130,11 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
1050
1130
  * the code. In the example above the return type of the `deletePerson` function is:
1051
1131
  *
1052
1132
  * ```ts
1053
- * {
1133
+ * Promise<{
1054
1134
  * id: number
1055
1135
  * first_name: string
1056
1136
  * last_name?: string
1057
- * }
1137
+ * }>
1058
1138
  * ```
1059
1139
  */
1060
1140
  $if<O2>(condition: boolean, func: (qb: this) => DeleteQueryBuilder<any, any, O2>): O2 extends DeleteResult ? DeleteQueryBuilder<DB, TB, DeleteResult> : O2 extends O & infer E ? DeleteQueryBuilder<DB, TB, O & Partial<E>> : DeleteQueryBuilder<DB, TB, Partial<O2>>;
@@ -1082,25 +1162,33 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
1082
1162
  * Turn this code:
1083
1163
  *
1084
1164
  * ```ts
1165
+ * import type { Person } from 'type-editor' // imaginary module
1166
+ *
1085
1167
  * const person = await db.deleteFrom('person')
1086
- * .where('id', '=', id)
1168
+ * .where('id', '=', 3)
1087
1169
  * .where('nullable_column', 'is not', null)
1088
1170
  * .returningAll()
1089
1171
  * .executeTakeFirstOrThrow()
1090
1172
  *
1091
- * if (person.nullable_column) {
1173
+ * if (isWithNoNullValue(person)) {
1092
1174
  * functionThatExpectsPersonWithNonNullValue(person)
1093
1175
  * }
1176
+ *
1177
+ * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {
1178
+ * return person.nullable_column != null
1179
+ * }
1094
1180
  * ```
1095
1181
  *
1096
1182
  * Into this:
1097
1183
  *
1098
1184
  * ```ts
1185
+ * import type { NotNull } from 'kysely'
1186
+ *
1099
1187
  * const person = await db.deleteFrom('person')
1100
- * .where('id', '=', id)
1188
+ * .where('id', '=', 3)
1101
1189
  * .where('nullable_column', 'is not', null)
1102
1190
  * .returningAll()
1103
- * .$narrowType<{ nullable_column: string }>()
1191
+ * .$narrowType<{ nullable_column: NotNull }>()
1104
1192
  * .executeTakeFirstOrThrow()
1105
1193
  *
1106
1194
  * functionThatExpectsPersonWithNonNullValue(person)
@@ -1130,22 +1218,26 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
1130
1218
  * ### Examples
1131
1219
  *
1132
1220
  * ```ts
1133
- * const result = await db
1134
- * .with('deleted_person', (qb) => qb
1135
- * .deleteFrom('person')
1136
- * .where('id', '=', person.id)
1137
- * .returning('first_name')
1138
- * .$assertType<{ first_name: string }>()
1139
- * )
1140
- * .with('deleted_pet', (qb) => qb
1141
- * .deleteFrom('pet')
1142
- * .where('owner_id', '=', person.id)
1143
- * .returning(['name as pet_name', 'species'])
1144
- * .$assertType<{ pet_name: string, species: Species }>()
1145
- * )
1146
- * .selectFrom(['deleted_person', 'deleted_pet'])
1147
- * .selectAll()
1148
- * .executeTakeFirstOrThrow()
1221
+ * import type { Species } from 'type-editor' // imaginary module
1222
+ *
1223
+ * async function deletePersonAndPets(personId: number) {
1224
+ * return await db
1225
+ * .with('deleted_person', (qb) => qb
1226
+ * .deleteFrom('person')
1227
+ * .where('id', '=', personId)
1228
+ * .returning('first_name')
1229
+ * .$assertType<{ first_name: string }>()
1230
+ * )
1231
+ * .with('deleted_pets', (qb) => qb
1232
+ * .deleteFrom('pet')
1233
+ * .where('owner_id', '=', personId)
1234
+ * .returning(['name as pet_name', 'species'])
1235
+ * .$assertType<{ pet_name: string, species: Species }>()
1236
+ * )
1237
+ * .selectFrom(['deleted_person', 'deleted_pets'])
1238
+ * .selectAll()
1239
+ * .execute()
1240
+ * }
1149
1241
  * ```
1150
1242
  */
1151
1243
  $assertType<T extends O>(): O extends T ? DeleteQueryBuilder<DB, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
@@ -1184,7 +1276,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
1184
1276
  * ### Examples
1185
1277
  *
1186
1278
  * ```ts
1187
- * const stream = db.
1279
+ * const stream = db
1188
1280
  * .selectFrom('person')
1189
1281
  * .select(['first_name', 'last_name'])
1190
1282
  * .where('gender', '=', 'other')
@@ -141,10 +141,11 @@ export class DeleteQueryBuilder {
141
141
  * ### Examples
142
142
  *
143
143
  * ```ts
144
- * db.deleteFrom('pet')
144
+ * await db.deleteFrom('pet')
145
145
  * .returningAll()
146
146
  * .where('name', '=', 'Max')
147
147
  * .clearReturning()
148
+ * .execute()
148
149
  * ```
149
150
  *
150
151
  * The generated SQL(PostgreSQL):
@@ -165,11 +166,12 @@ export class DeleteQueryBuilder {
165
166
  * ### Examples
166
167
  *
167
168
  * ```ts
168
- * db.deleteFrom('pet')
169
+ * await db.deleteFrom('pet')
169
170
  * .returningAll()
170
171
  * .where('name', '=', 'Max')
171
172
  * .limit(5)
172
173
  * .clearLimit()
174
+ * .execute()
173
175
  * ```
174
176
  *
175
177
  * The generated SQL(PostgreSQL):
@@ -190,11 +192,12 @@ export class DeleteQueryBuilder {
190
192
  * ### Examples
191
193
  *
192
194
  * ```ts
193
- * db.deleteFrom('pet')
195
+ * await db.deleteFrom('pet')
194
196
  * .returningAll()
195
197
  * .where('name', '=', 'Max')
196
198
  * .orderBy('id')
197
199
  * .clearOrderBy()
200
+ * .execute()
198
201
  * ```
199
202
  *
200
203
  * The generated SQL(PostgreSQL):
@@ -266,6 +269,12 @@ export class DeleteQueryBuilder {
266
269
  * .limit(5)
267
270
  * .execute()
268
271
  * ```
272
+ *
273
+ * The generated SQL (MySQL):
274
+ *
275
+ * ```sql
276
+ * delete from `pet` order by `created_at` limit ?
277
+ * ```
269
278
  */
270
279
  limit(limit) {
271
280
  return new DeleteQueryBuilder({
@@ -273,6 +282,33 @@ export class DeleteQueryBuilder {
273
282
  queryNode: DeleteQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit))),
274
283
  });
275
284
  }
285
+ /**
286
+ * This can be used to add any additional SQL to the end of the query.
287
+ *
288
+ * ### Examples
289
+ *
290
+ * ```ts
291
+ * import { sql } from 'kysely'
292
+ *
293
+ * await db.deleteFrom('person')
294
+ * .where('first_name', '=', 'John')
295
+ * .modifyEnd(sql`-- This is a comment`)
296
+ * .execute()
297
+ * ```
298
+ *
299
+ * The generated SQL (MySQL):
300
+ *
301
+ * ```sql
302
+ * delete from `person`
303
+ * where `first_name` = "John" -- This is a comment
304
+ * ```
305
+ */
306
+ modifyEnd(modifier) {
307
+ return new DeleteQueryBuilder({
308
+ ...this.#props,
309
+ queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),
310
+ });
311
+ }
276
312
  /**
277
313
  * Simply calls the provided function passing `this` as the only argument. `$call` returns
278
314
  * what the provided function returns.
@@ -285,12 +321,14 @@ export class DeleteQueryBuilder {
285
321
  * The next example uses a helper function `log` to log a query:
286
322
  *
287
323
  * ```ts
324
+ * import type { Compilable } from 'kysely'
325
+ *
288
326
  * function log<T extends Compilable>(qb: T): T {
289
327
  * console.log(qb.compile())
290
328
  * return qb
291
329
  * }
292
330
  *
293
- * db.deleteFrom('person')
331
+ * await db.deleteFrom('person')
294
332
  * .$call(log)
295
333
  * .execute()
296
334
  * ```
@@ -326,11 +364,11 @@ export class DeleteQueryBuilder {
326
364
  * the code. In the example above the return type of the `deletePerson` function is:
327
365
  *
328
366
  * ```ts
329
- * {
367
+ * Promise<{
330
368
  * id: number
331
369
  * first_name: string
332
370
  * last_name?: string
333
- * }
371
+ * }>
334
372
  * ```
335
373
  */
336
374
  $if(condition, func) {
@@ -367,25 +405,33 @@ export class DeleteQueryBuilder {
367
405
  * Turn this code:
368
406
  *
369
407
  * ```ts
408
+ * import type { Person } from 'type-editor' // imaginary module
409
+ *
370
410
  * const person = await db.deleteFrom('person')
371
- * .where('id', '=', id)
411
+ * .where('id', '=', 3)
372
412
  * .where('nullable_column', 'is not', null)
373
413
  * .returningAll()
374
414
  * .executeTakeFirstOrThrow()
375
415
  *
376
- * if (person.nullable_column) {
416
+ * if (isWithNoNullValue(person)) {
377
417
  * functionThatExpectsPersonWithNonNullValue(person)
378
418
  * }
419
+ *
420
+ * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {
421
+ * return person.nullable_column != null
422
+ * }
379
423
  * ```
380
424
  *
381
425
  * Into this:
382
426
  *
383
427
  * ```ts
428
+ * import type { NotNull } from 'kysely'
429
+ *
384
430
  * const person = await db.deleteFrom('person')
385
- * .where('id', '=', id)
431
+ * .where('id', '=', 3)
386
432
  * .where('nullable_column', 'is not', null)
387
433
  * .returningAll()
388
- * .$narrowType<{ nullable_column: string }>()
434
+ * .$narrowType<{ nullable_column: NotNull }>()
389
435
  * .executeTakeFirstOrThrow()
390
436
  *
391
437
  * functionThatExpectsPersonWithNonNullValue(person)
@@ -417,22 +463,26 @@ export class DeleteQueryBuilder {
417
463
  * ### Examples
418
464
  *
419
465
  * ```ts
420
- * const result = await db
421
- * .with('deleted_person', (qb) => qb
422
- * .deleteFrom('person')
423
- * .where('id', '=', person.id)
424
- * .returning('first_name')
425
- * .$assertType<{ first_name: string }>()
426
- * )
427
- * .with('deleted_pet', (qb) => qb
428
- * .deleteFrom('pet')
429
- * .where('owner_id', '=', person.id)
430
- * .returning(['name as pet_name', 'species'])
431
- * .$assertType<{ pet_name: string, species: Species }>()
432
- * )
433
- * .selectFrom(['deleted_person', 'deleted_pet'])
434
- * .selectAll()
435
- * .executeTakeFirstOrThrow()
466
+ * import type { Species } from 'type-editor' // imaginary module
467
+ *
468
+ * async function deletePersonAndPets(personId: number) {
469
+ * return await db
470
+ * .with('deleted_person', (qb) => qb
471
+ * .deleteFrom('person')
472
+ * .where('id', '=', personId)
473
+ * .returning('first_name')
474
+ * .$assertType<{ first_name: string }>()
475
+ * )
476
+ * .with('deleted_pets', (qb) => qb
477
+ * .deleteFrom('pet')
478
+ * .where('owner_id', '=', personId)
479
+ * .returning(['name as pet_name', 'species'])
480
+ * .$assertType<{ pet_name: string, species: Species }>()
481
+ * )
482
+ * .selectFrom(['deleted_person', 'deleted_pets'])
483
+ * .selectAll()
484
+ * .execute()
485
+ * }
436
486
  * ```
437
487
  */
438
488
  $assertType() {