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')
@@ -143,10 +143,11 @@ class DeleteQueryBuilder {
143
143
  * ### Examples
144
144
  *
145
145
  * ```ts
146
- * db.deleteFrom('pet')
146
+ * await db.deleteFrom('pet')
147
147
  * .returningAll()
148
148
  * .where('name', '=', 'Max')
149
149
  * .clearReturning()
150
+ * .execute()
150
151
  * ```
151
152
  *
152
153
  * The generated SQL(PostgreSQL):
@@ -167,11 +168,12 @@ class DeleteQueryBuilder {
167
168
  * ### Examples
168
169
  *
169
170
  * ```ts
170
- * db.deleteFrom('pet')
171
+ * await db.deleteFrom('pet')
171
172
  * .returningAll()
172
173
  * .where('name', '=', 'Max')
173
174
  * .limit(5)
174
175
  * .clearLimit()
176
+ * .execute()
175
177
  * ```
176
178
  *
177
179
  * The generated SQL(PostgreSQL):
@@ -192,11 +194,12 @@ class DeleteQueryBuilder {
192
194
  * ### Examples
193
195
  *
194
196
  * ```ts
195
- * db.deleteFrom('pet')
197
+ * await db.deleteFrom('pet')
196
198
  * .returningAll()
197
199
  * .where('name', '=', 'Max')
198
200
  * .orderBy('id')
199
201
  * .clearOrderBy()
202
+ * .execute()
200
203
  * ```
201
204
  *
202
205
  * The generated SQL(PostgreSQL):
@@ -268,6 +271,12 @@ class DeleteQueryBuilder {
268
271
  * .limit(5)
269
272
  * .execute()
270
273
  * ```
274
+ *
275
+ * The generated SQL (MySQL):
276
+ *
277
+ * ```sql
278
+ * delete from `pet` order by `created_at` limit ?
279
+ * ```
271
280
  */
272
281
  limit(limit) {
273
282
  return new DeleteQueryBuilder({
@@ -275,6 +284,33 @@ class DeleteQueryBuilder {
275
284
  queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithLimit(this.#props.queryNode, limit_node_js_1.LimitNode.create((0, value_parser_js_1.parseValueExpression)(limit))),
276
285
  });
277
286
  }
287
+ /**
288
+ * This can be used to add any additional SQL to the end of the query.
289
+ *
290
+ * ### Examples
291
+ *
292
+ * ```ts
293
+ * import { sql } from 'kysely'
294
+ *
295
+ * await db.deleteFrom('person')
296
+ * .where('first_name', '=', 'John')
297
+ * .modifyEnd(sql`-- This is a comment`)
298
+ * .execute()
299
+ * ```
300
+ *
301
+ * The generated SQL (MySQL):
302
+ *
303
+ * ```sql
304
+ * delete from `person`
305
+ * where `first_name` = "John" -- This is a comment
306
+ * ```
307
+ */
308
+ modifyEnd(modifier) {
309
+ return new DeleteQueryBuilder({
310
+ ...this.#props,
311
+ queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),
312
+ });
313
+ }
278
314
  /**
279
315
  * Simply calls the provided function passing `this` as the only argument. `$call` returns
280
316
  * what the provided function returns.
@@ -287,12 +323,14 @@ class DeleteQueryBuilder {
287
323
  * The next example uses a helper function `log` to log a query:
288
324
  *
289
325
  * ```ts
326
+ * import type { Compilable } from 'kysely'
327
+ *
290
328
  * function log<T extends Compilable>(qb: T): T {
291
329
  * console.log(qb.compile())
292
330
  * return qb
293
331
  * }
294
332
  *
295
- * db.deleteFrom('person')
333
+ * await db.deleteFrom('person')
296
334
  * .$call(log)
297
335
  * .execute()
298
336
  * ```
@@ -328,11 +366,11 @@ class DeleteQueryBuilder {
328
366
  * the code. In the example above the return type of the `deletePerson` function is:
329
367
  *
330
368
  * ```ts
331
- * {
369
+ * Promise<{
332
370
  * id: number
333
371
  * first_name: string
334
372
  * last_name?: string
335
- * }
373
+ * }>
336
374
  * ```
337
375
  */
338
376
  $if(condition, func) {
@@ -369,25 +407,33 @@ class DeleteQueryBuilder {
369
407
  * Turn this code:
370
408
  *
371
409
  * ```ts
410
+ * import type { Person } from 'type-editor' // imaginary module
411
+ *
372
412
  * const person = await db.deleteFrom('person')
373
- * .where('id', '=', id)
413
+ * .where('id', '=', 3)
374
414
  * .where('nullable_column', 'is not', null)
375
415
  * .returningAll()
376
416
  * .executeTakeFirstOrThrow()
377
417
  *
378
- * if (person.nullable_column) {
418
+ * if (isWithNoNullValue(person)) {
379
419
  * functionThatExpectsPersonWithNonNullValue(person)
380
420
  * }
421
+ *
422
+ * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {
423
+ * return person.nullable_column != null
424
+ * }
381
425
  * ```
382
426
  *
383
427
  * Into this:
384
428
  *
385
429
  * ```ts
430
+ * import type { NotNull } from 'kysely'
431
+ *
386
432
  * const person = await db.deleteFrom('person')
387
- * .where('id', '=', id)
433
+ * .where('id', '=', 3)
388
434
  * .where('nullable_column', 'is not', null)
389
435
  * .returningAll()
390
- * .$narrowType<{ nullable_column: string }>()
436
+ * .$narrowType<{ nullable_column: NotNull }>()
391
437
  * .executeTakeFirstOrThrow()
392
438
  *
393
439
  * functionThatExpectsPersonWithNonNullValue(person)
@@ -419,22 +465,26 @@ class DeleteQueryBuilder {
419
465
  * ### Examples
420
466
  *
421
467
  * ```ts
422
- * const result = await db
423
- * .with('deleted_person', (qb) => qb
424
- * .deleteFrom('person')
425
- * .where('id', '=', person.id)
426
- * .returning('first_name')
427
- * .$assertType<{ first_name: string }>()
428
- * )
429
- * .with('deleted_pet', (qb) => qb
430
- * .deleteFrom('pet')
431
- * .where('owner_id', '=', person.id)
432
- * .returning(['name as pet_name', 'species'])
433
- * .$assertType<{ pet_name: string, species: Species }>()
434
- * )
435
- * .selectFrom(['deleted_person', 'deleted_pet'])
436
- * .selectAll()
437
- * .executeTakeFirstOrThrow()
468
+ * import type { Species } from 'type-editor' // imaginary module
469
+ *
470
+ * async function deletePersonAndPets(personId: number) {
471
+ * return await db
472
+ * .with('deleted_person', (qb) => qb
473
+ * .deleteFrom('person')
474
+ * .where('id', '=', personId)
475
+ * .returning('first_name')
476
+ * .$assertType<{ first_name: string }>()
477
+ * )
478
+ * .with('deleted_pets', (qb) => qb
479
+ * .deleteFrom('pet')
480
+ * .where('owner_id', '=', personId)
481
+ * .returning(['name as pet_name', 'species'])
482
+ * .$assertType<{ pet_name: string, species: Species }>()
483
+ * )
484
+ * .selectFrom(['deleted_person', 'deleted_pets'])
485
+ * .selectAll()
486
+ * .execute()
487
+ * }
438
488
  * ```
439
489
  */
440
490
  $assertType() {