kysely 0.27.6 → 0.28.1

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 (363) hide show
  1. package/README.md +169 -1
  2. package/deno.check.d.ts +7 -0
  3. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
  4. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
  5. package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
  6. package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
  7. package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
  8. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
  9. package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
  10. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
  11. package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
  12. package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
  13. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
  14. package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
  15. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  16. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
  17. package/dist/cjs/driver/database-connection.d.ts +0 -4
  18. package/dist/cjs/driver/driver.d.ts +17 -0
  19. package/dist/cjs/driver/driver.js +13 -1
  20. package/dist/cjs/driver/dummy-driver.d.ts +3 -0
  21. package/dist/cjs/driver/dummy-driver.js +9 -0
  22. package/dist/cjs/driver/runtime-driver.d.ts +4 -0
  23. package/dist/cjs/driver/runtime-driver.js +43 -3
  24. package/dist/cjs/expression/expression-builder.d.ts +7 -10
  25. package/dist/cjs/helpers/postgres.d.ts +48 -0
  26. package/dist/cjs/helpers/postgres.js +50 -0
  27. package/dist/cjs/index.d.ts +13 -2
  28. package/dist/cjs/index.js +13 -2
  29. package/dist/cjs/kysely.d.ts +339 -2
  30. package/dist/cjs/kysely.js +465 -11
  31. package/dist/cjs/migration/migrator.d.ts +8 -0
  32. package/dist/cjs/migration/migrator.js +1 -1
  33. package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
  34. package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
  35. package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
  36. package/dist/cjs/operation-node/collate-node.d.ts +13 -0
  37. package/dist/cjs/operation-node/collate-node.js +19 -0
  38. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  40. package/dist/cjs/operation-node/create-type-node.js +1 -1
  41. package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
  42. package/dist/cjs/operation-node/delete-query-node.js +11 -15
  43. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
  44. package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
  45. package/dist/cjs/operation-node/join-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
  47. package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
  48. package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
  49. package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
  50. package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
  51. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
  53. package/dist/cjs/operation-node/or-action-node.js +18 -0
  54. package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
  55. package/dist/cjs/operation-node/order-by-item-node.js +6 -0
  56. package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
  57. package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
  58. package/dist/cjs/operation-node/query-node.d.ts +7 -0
  59. package/dist/cjs/operation-node/query-node.js +15 -0
  60. package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
  61. package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
  62. package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
  63. package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
  64. package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
  65. package/dist/cjs/operation-node/select-query-node.js +11 -15
  66. package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
  67. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  68. package/dist/cjs/operation-node/update-query-node.js +5 -2
  69. package/dist/cjs/parser/collate-parser.d.ts +1 -0
  70. package/dist/cjs/parser/collate-parser.js +2 -0
  71. package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
  72. package/dist/cjs/parser/delete-from-parser.js +2 -0
  73. package/dist/cjs/parser/join-parser.d.ts +1 -1
  74. package/dist/cjs/parser/join-parser.js +7 -1
  75. package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
  76. package/dist/cjs/parser/merge-into-parser.js +2 -0
  77. package/dist/cjs/parser/order-by-parser.d.ts +18 -5
  78. package/dist/cjs/parser/order-by-parser.js +24 -14
  79. package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
  80. package/dist/cjs/parser/savepoint-parser.js +11 -0
  81. package/dist/cjs/parser/select-from-parser.d.ts +4 -0
  82. package/dist/cjs/parser/select-from-parser.js +2 -0
  83. package/dist/cjs/parser/table-parser.d.ts +2 -5
  84. package/dist/cjs/parser/update-parser.d.ts +5 -0
  85. package/dist/cjs/parser/update-parser.js +2 -0
  86. package/dist/cjs/parser/update-set-parser.d.ts +7 -4
  87. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  88. package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
  89. package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
  90. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  91. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
  92. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
  93. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
  94. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
  95. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
  96. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
  97. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
  98. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
  99. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
  100. package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
  101. package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
  102. package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
  103. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +6 -5
  104. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +29 -24
  105. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
  106. package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
  107. package/dist/cjs/query-builder/cte-builder.js +0 -2
  108. package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
  109. package/dist/cjs/query-builder/delete-query-builder.js +12 -78
  110. package/dist/cjs/query-builder/function-module.d.ts +31 -4
  111. package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
  112. package/dist/cjs/query-builder/insert-query-builder.js +197 -10
  113. package/dist/cjs/query-builder/join-builder.js +0 -2
  114. package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
  115. package/dist/cjs/query-builder/merge-query-builder.js +28 -7
  116. package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
  117. package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
  118. package/dist/cjs/query-builder/order-by-interface.js +2 -0
  119. package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
  120. package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
  121. package/dist/cjs/query-builder/over-builder.d.ts +43 -6
  122. package/dist/cjs/query-builder/over-builder.js +8 -25
  123. package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
  124. package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
  125. package/dist/cjs/query-builder/select-query-builder.js +26 -26
  126. package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
  127. package/dist/cjs/query-builder/update-query-builder.js +17 -15
  128. package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
  129. package/dist/cjs/query-compiler/compiled-query.js +2 -0
  130. package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
  131. package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
  132. package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
  133. package/dist/cjs/query-creator.d.ts +23 -25
  134. package/dist/cjs/query-creator.js +280 -8
  135. package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
  136. package/dist/cjs/query-executor/default-query-executor.js +2 -2
  137. package/dist/cjs/query-executor/query-executor-base.js +7 -25
  138. package/dist/cjs/raw-builder/raw-builder.js +0 -3
  139. package/dist/cjs/raw-builder/sql.d.ts +3 -3
  140. package/dist/cjs/raw-builder/sql.js +1 -1
  141. package/dist/cjs/schema/alter-column-builder.js +0 -3
  142. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
  143. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
  144. package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
  145. package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
  146. package/dist/cjs/schema/alter-table-builder.js +21 -10
  147. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
  148. package/dist/cjs/schema/alter-table-executor.js +0 -2
  149. package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
  150. package/dist/cjs/schema/check-constraint-builder.js +20 -0
  151. package/dist/cjs/schema/column-definition-builder.js +0 -2
  152. package/dist/cjs/schema/create-index-builder.js +1 -3
  153. package/dist/cjs/schema/create-schema-builder.js +0 -2
  154. package/dist/cjs/schema/create-table-builder.d.ts +5 -4
  155. package/dist/cjs/schema/create-table-builder.js +9 -7
  156. package/dist/cjs/schema/create-type-builder.d.ts +1 -1
  157. package/dist/cjs/schema/create-type-builder.js +0 -2
  158. package/dist/cjs/schema/create-view-builder.js +0 -2
  159. package/dist/cjs/schema/drop-index-builder.js +0 -2
  160. package/dist/cjs/schema/drop-schema-builder.js +0 -2
  161. package/dist/cjs/schema/drop-table-builder.js +0 -2
  162. package/dist/cjs/schema/drop-type-builder.js +0 -2
  163. package/dist/cjs/schema/drop-view-builder.js +0 -2
  164. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
  165. package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
  166. package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
  167. package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
  168. package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
  169. package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
  170. package/dist/cjs/schema/schema.d.ts +14 -0
  171. package/dist/cjs/schema/schema.js +21 -0
  172. package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
  173. package/dist/cjs/schema/unique-constraint-builder.js +26 -5
  174. package/dist/cjs/util/infer-result.d.ts +1 -1
  175. package/dist/cjs/util/log.d.ts +1 -0
  176. package/dist/cjs/util/log.js +3 -2
  177. package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
  178. package/dist/cjs/util/provide-controlled-connection.js +24 -0
  179. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
  180. package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
  181. package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
  182. package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
  183. package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
  184. package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
  185. package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
  186. package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
  187. package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
  188. package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
  189. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
  190. package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
  191. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  192. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
  193. package/dist/esm/driver/database-connection.d.ts +0 -4
  194. package/dist/esm/driver/driver.d.ts +17 -0
  195. package/dist/esm/driver/driver.js +11 -0
  196. package/dist/esm/driver/dummy-driver.d.ts +3 -0
  197. package/dist/esm/driver/dummy-driver.js +9 -0
  198. package/dist/esm/driver/runtime-driver.d.ts +4 -0
  199. package/dist/esm/driver/runtime-driver.js +43 -3
  200. package/dist/esm/expression/expression-builder.d.ts +7 -10
  201. package/dist/esm/helpers/postgres.d.ts +48 -0
  202. package/dist/esm/helpers/postgres.js +49 -0
  203. package/dist/esm/index.d.ts +13 -2
  204. package/dist/esm/index.js +11 -1
  205. package/dist/esm/kysely.d.ts +339 -2
  206. package/dist/esm/kysely.js +461 -10
  207. package/dist/esm/migration/migrator.d.ts +8 -0
  208. package/dist/esm/migration/migrator.js +1 -1
  209. package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
  210. package/dist/esm/operation-node/aggregate-function-node.js +4 -3
  211. package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
  212. package/dist/esm/operation-node/collate-node.d.ts +13 -0
  213. package/dist/esm/operation-node/collate-node.js +17 -0
  214. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  215. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  216. package/dist/esm/operation-node/create-type-node.js +1 -1
  217. package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
  218. package/dist/esm/operation-node/delete-query-node.js +11 -15
  219. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
  220. package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
  221. package/dist/esm/operation-node/join-node.d.ts +1 -1
  222. package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
  223. package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
  224. package/dist/esm/operation-node/operation-node-transformer.js +352 -312
  225. package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
  226. package/dist/esm/operation-node/operation-node-visitor.js +4 -0
  227. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  228. package/dist/esm/operation-node/or-action-node.d.ts +12 -0
  229. package/dist/esm/operation-node/or-action-node.js +16 -0
  230. package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
  231. package/dist/esm/operation-node/order-by-item-node.js +6 -0
  232. package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
  233. package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
  234. package/dist/esm/operation-node/query-node.d.ts +7 -0
  235. package/dist/esm/operation-node/query-node.js +15 -0
  236. package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
  237. package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
  238. package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
  239. package/dist/esm/operation-node/rename-constraint-node.js +18 -0
  240. package/dist/esm/operation-node/select-query-node.d.ts +8 -2
  241. package/dist/esm/operation-node/select-query-node.js +11 -15
  242. package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
  243. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  244. package/dist/esm/operation-node/update-query-node.js +5 -2
  245. package/dist/esm/parser/collate-parser.d.ts +1 -0
  246. package/dist/esm/parser/collate-parser.js +2 -0
  247. package/dist/esm/parser/delete-from-parser.d.ts +5 -0
  248. package/dist/esm/parser/delete-from-parser.js +2 -0
  249. package/dist/esm/parser/join-parser.d.ts +1 -1
  250. package/dist/esm/parser/join-parser.js +7 -1
  251. package/dist/esm/parser/merge-into-parser.d.ts +5 -0
  252. package/dist/esm/parser/merge-into-parser.js +2 -0
  253. package/dist/esm/parser/order-by-parser.d.ts +18 -5
  254. package/dist/esm/parser/order-by-parser.js +27 -17
  255. package/dist/esm/parser/savepoint-parser.d.ts +4 -0
  256. package/dist/esm/parser/savepoint-parser.js +9 -0
  257. package/dist/esm/parser/select-from-parser.d.ts +4 -0
  258. package/dist/esm/parser/select-from-parser.js +2 -0
  259. package/dist/esm/parser/table-parser.d.ts +2 -5
  260. package/dist/esm/parser/update-parser.d.ts +5 -0
  261. package/dist/esm/parser/update-parser.js +2 -0
  262. package/dist/esm/parser/update-set-parser.d.ts +7 -4
  263. package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
  264. package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
  265. package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
  266. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  267. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
  268. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
  269. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
  270. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
  271. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
  272. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
  273. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
  274. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
  275. package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
  276. package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
  277. package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
  278. package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
  279. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +6 -5
  280. package/dist/esm/plugin/with-schema/with-schema-transformer.js +29 -24
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
  282. package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
  283. package/dist/esm/query-builder/cte-builder.js +0 -2
  284. package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
  285. package/dist/esm/query-builder/delete-query-builder.js +12 -78
  286. package/dist/esm/query-builder/function-module.d.ts +31 -4
  287. package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
  288. package/dist/esm/query-builder/insert-query-builder.js +197 -10
  289. package/dist/esm/query-builder/join-builder.js +0 -2
  290. package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
  291. package/dist/esm/query-builder/merge-query-builder.js +29 -8
  292. package/dist/esm/query-builder/on-conflict-builder.js +0 -4
  293. package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
  294. package/dist/esm/query-builder/order-by-interface.js +2 -0
  295. package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
  296. package/dist/esm/query-builder/order-by-item-builder.js +72 -0
  297. package/dist/esm/query-builder/over-builder.d.ts +43 -6
  298. package/dist/esm/query-builder/over-builder.js +8 -25
  299. package/dist/esm/query-builder/returning-interface.d.ts +20 -3
  300. package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
  301. package/dist/esm/query-builder/select-query-builder.js +26 -26
  302. package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
  303. package/dist/esm/query-builder/update-query-builder.js +17 -15
  304. package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
  305. package/dist/esm/query-compiler/compiled-query.js +2 -0
  306. package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
  307. package/dist/esm/query-compiler/default-query-compiler.js +97 -2
  308. package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
  309. package/dist/esm/query-creator.d.ts +23 -25
  310. package/dist/esm/query-creator.js +281 -9
  311. package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
  312. package/dist/esm/query-executor/default-query-executor.js +2 -2
  313. package/dist/esm/query-executor/query-executor-base.js +7 -25
  314. package/dist/esm/raw-builder/raw-builder.js +0 -3
  315. package/dist/esm/raw-builder/sql.d.ts +3 -3
  316. package/dist/esm/raw-builder/sql.js +1 -1
  317. package/dist/esm/schema/alter-column-builder.js +0 -3
  318. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
  319. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
  320. package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
  321. package/dist/esm/schema/alter-table-builder.d.ts +7 -3
  322. package/dist/esm/schema/alter-table-builder.js +22 -11
  323. package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
  324. package/dist/esm/schema/alter-table-executor.js +0 -2
  325. package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
  326. package/dist/esm/schema/check-constraint-builder.js +17 -0
  327. package/dist/esm/schema/column-definition-builder.js +0 -2
  328. package/dist/esm/schema/create-index-builder.js +1 -3
  329. package/dist/esm/schema/create-schema-builder.js +0 -2
  330. package/dist/esm/schema/create-table-builder.d.ts +5 -4
  331. package/dist/esm/schema/create-table-builder.js +10 -8
  332. package/dist/esm/schema/create-type-builder.d.ts +1 -1
  333. package/dist/esm/schema/create-type-builder.js +0 -2
  334. package/dist/esm/schema/create-view-builder.js +0 -2
  335. package/dist/esm/schema/drop-index-builder.js +0 -2
  336. package/dist/esm/schema/drop-schema-builder.js +0 -2
  337. package/dist/esm/schema/drop-table-builder.js +0 -2
  338. package/dist/esm/schema/drop-type-builder.js +0 -2
  339. package/dist/esm/schema/drop-view-builder.js +0 -2
  340. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
  341. package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
  342. package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
  343. package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
  344. package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
  345. package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
  346. package/dist/esm/schema/schema.d.ts +14 -0
  347. package/dist/esm/schema/schema.js +21 -0
  348. package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
  349. package/dist/esm/schema/unique-constraint-builder.js +26 -5
  350. package/dist/esm/util/infer-result.d.ts +1 -1
  351. package/dist/esm/util/log.d.ts +1 -0
  352. package/dist/esm/util/log.js +3 -2
  353. package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
  354. package/dist/esm/util/provide-controlled-connection.js +22 -0
  355. package/outdated-typescript.d.ts +5 -0
  356. package/package.json +16 -2
  357. package/CONTRIBUTING.md +0 -168
  358. package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
  359. package/dist/cjs/util/prevent-await.d.ts +0 -1
  360. package/dist/cjs/util/prevent-await.js +0 -13
  361. package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
  362. package/dist/esm/util/prevent-await.d.ts +0 -1
  363. package/dist/esm/util/prevent-await.js +0 -11
@@ -6,7 +6,6 @@ const insert_values_parser_js_1 = require("../parser/insert-values-parser.js");
6
6
  const insert_query_node_js_1 = require("../operation-node/insert-query-node.js");
7
7
  const query_node_js_1 = require("../operation-node/query-node.js");
8
8
  const update_set_parser_js_1 = require("../parser/update-set-parser.js");
9
- const prevent_await_js_1 = require("../util/prevent-await.js");
10
9
  const object_utils_js_1 = require("../util/object-utils.js");
11
10
  const on_duplicate_key_node_js_1 = require("../operation-node/on-duplicate-key-node.js");
12
11
  const insert_result_js_1 = require("./insert-result.js");
@@ -16,6 +15,7 @@ const column_node_js_1 = require("../operation-node/column-node.js");
16
15
  const on_conflict_builder_js_1 = require("./on-conflict-builder.js");
17
16
  const on_conflict_node_js_1 = require("../operation-node/on-conflict-node.js");
18
17
  const top_parser_js_1 = require("../parser/top-parser.js");
18
+ const or_action_node_js_1 = require("../operation-node/or-action-node.js");
19
19
  class InsertQueryBuilder {
20
20
  #props;
21
21
  constructor(props) {
@@ -338,15 +338,18 @@ class InsertQueryBuilder {
338
338
  /**
339
339
  * Changes an `insert into` query to an `insert ignore into` query.
340
340
  *
341
+ * This is only supported by some dialects like MySQL.
342
+ *
343
+ * To avoid a footgun, when invoked with the SQLite dialect, this method will
344
+ * be handled like {@link orIgnore}. See also, {@link orAbort}, {@link orFail},
345
+ * {@link orReplace}, and {@link orRollback}.
346
+ *
341
347
  * If you use the ignore modifier, ignorable errors that occur while executing the
342
348
  * insert statement are ignored. For example, without ignore, a row that duplicates
343
349
  * an existing unique index or primary key value in the table causes a duplicate-key
344
350
  * error and the statement is aborted. With ignore, the row is discarded and no error
345
351
  * occurs.
346
352
  *
347
- * This is only supported on some dialects like MySQL. On most dialects you should
348
- * use the {@link onConflict} method.
349
- *
350
353
  * ### Examples
351
354
  *
352
355
  * ```ts
@@ -363,14 +366,201 @@ class InsertQueryBuilder {
363
366
  * The generated SQL (MySQL):
364
367
  *
365
368
  * ```sql
366
- * insert ignore into `person` ("first_name", "last_name", "gender") values (?, ?, ?)
369
+ * insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)
370
+ * ```
371
+ *
372
+ * The generated SQL (SQLite):
373
+ *
374
+ * ```sql
375
+ * insert or ignore into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
367
376
  * ```
368
377
  */
369
378
  ignore() {
370
379
  return new InsertQueryBuilder({
371
380
  ...this.#props,
372
381
  queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
373
- ignore: true,
382
+ orAction: or_action_node_js_1.OrActionNode.create('ignore'),
383
+ }),
384
+ });
385
+ }
386
+ /**
387
+ * Changes an `insert into` query to an `insert or ignore into` query.
388
+ *
389
+ * This is only supported by some dialects like SQLite.
390
+ *
391
+ * To avoid a footgun, when invoked with the MySQL dialect, this method will
392
+ * be handled like {@link ignore}.
393
+ *
394
+ * See also, {@link orAbort}, {@link orFail}, {@link orReplace}, and {@link orRollback}.
395
+ *
396
+ * ### Examples
397
+ *
398
+ * ```ts
399
+ * await db.insertInto('person')
400
+ * .orIgnore()
401
+ * .values({
402
+ * first_name: 'John',
403
+ * last_name: 'Doe',
404
+ * gender: 'female',
405
+ * })
406
+ * .execute()
407
+ * ```
408
+ *
409
+ * The generated SQL (SQLite):
410
+ *
411
+ * ```sql
412
+ * insert or ignore into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
413
+ * ```
414
+ *
415
+ * The generated SQL (MySQL):
416
+ *
417
+ * ```sql
418
+ * insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)
419
+ * ```
420
+ */
421
+ orIgnore() {
422
+ return new InsertQueryBuilder({
423
+ ...this.#props,
424
+ queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
425
+ orAction: or_action_node_js_1.OrActionNode.create('ignore'),
426
+ }),
427
+ });
428
+ }
429
+ /**
430
+ * Changes an `insert into` query to an `insert or abort into` query.
431
+ *
432
+ * This is only supported by some dialects like SQLite.
433
+ *
434
+ * See also, {@link orIgnore}, {@link orFail}, {@link orReplace}, and {@link orRollback}.
435
+ *
436
+ * ### Examples
437
+ *
438
+ * ```ts
439
+ * await db.insertInto('person')
440
+ * .orAbort()
441
+ * .values({
442
+ * first_name: 'John',
443
+ * last_name: 'Doe',
444
+ * gender: 'female',
445
+ * })
446
+ * .execute()
447
+ * ```
448
+ *
449
+ * The generated SQL (SQLite):
450
+ *
451
+ * ```sql
452
+ * insert or abort into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
453
+ * ```
454
+ */
455
+ orAbort() {
456
+ return new InsertQueryBuilder({
457
+ ...this.#props,
458
+ queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
459
+ orAction: or_action_node_js_1.OrActionNode.create('abort'),
460
+ }),
461
+ });
462
+ }
463
+ /**
464
+ * Changes an `insert into` query to an `insert or fail into` query.
465
+ *
466
+ * This is only supported by some dialects like SQLite.
467
+ *
468
+ * See also, {@link orIgnore}, {@link orAbort}, {@link orReplace}, and {@link orRollback}.
469
+ *
470
+ * ### Examples
471
+ *
472
+ * ```ts
473
+ * await db.insertInto('person')
474
+ * .orFail()
475
+ * .values({
476
+ * first_name: 'John',
477
+ * last_name: 'Doe',
478
+ * gender: 'female',
479
+ * })
480
+ * .execute()
481
+ * ```
482
+ *
483
+ * The generated SQL (SQLite):
484
+ *
485
+ * ```sql
486
+ * insert or fail into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
487
+ * ```
488
+ */
489
+ orFail() {
490
+ return new InsertQueryBuilder({
491
+ ...this.#props,
492
+ queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
493
+ orAction: or_action_node_js_1.OrActionNode.create('fail'),
494
+ }),
495
+ });
496
+ }
497
+ /**
498
+ * Changes an `insert into` query to an `insert or replace into` query.
499
+ *
500
+ * This is only supported by some dialects like SQLite.
501
+ *
502
+ * You can also use {@link Kysely.replaceInto} to achieve the same result.
503
+ *
504
+ * See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orRollback}.
505
+ *
506
+ * ### Examples
507
+ *
508
+ * ```ts
509
+ * await db.insertInto('person')
510
+ * .orReplace()
511
+ * .values({
512
+ * first_name: 'John',
513
+ * last_name: 'Doe',
514
+ * gender: 'female',
515
+ * })
516
+ * .execute()
517
+ * ```
518
+ *
519
+ * The generated SQL (SQLite):
520
+ *
521
+ * ```sql
522
+ * insert or replace into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
523
+ * ```
524
+ */
525
+ orReplace() {
526
+ return new InsertQueryBuilder({
527
+ ...this.#props,
528
+ queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
529
+ orAction: or_action_node_js_1.OrActionNode.create('replace'),
530
+ }),
531
+ });
532
+ }
533
+ /**
534
+ * Changes an `insert into` query to an `insert or rollback into` query.
535
+ *
536
+ * This is only supported by some dialects like SQLite.
537
+ *
538
+ * See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orReplace}.
539
+ *
540
+ * ### Examples
541
+ *
542
+ * ```ts
543
+ * await db.insertInto('person')
544
+ * .orRollback()
545
+ * .values({
546
+ * first_name: 'John',
547
+ * last_name: 'Doe',
548
+ * gender: 'female',
549
+ * })
550
+ * .execute()
551
+ * ```
552
+ *
553
+ * The generated SQL (SQLite):
554
+ *
555
+ * ```sql
556
+ * insert or rollback into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
557
+ * ```
558
+ */
559
+ orRollback() {
560
+ return new InsertQueryBuilder({
561
+ ...this.#props,
562
+ queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
563
+ orAction: or_action_node_js_1.OrActionNode.create('rollback'),
374
564
  }),
375
565
  });
376
566
  }
@@ -923,9 +1113,7 @@ class InsertQueryBuilder {
923
1113
  return result.rows;
924
1114
  }
925
1115
  return [
926
- new insert_result_js_1.InsertResult(result.insertId,
927
- // TODO: remove numUpdatedOrDeletedRows.
928
- result.numAffectedRows ?? result.numUpdatedOrDeletedRows),
1116
+ new insert_result_js_1.InsertResult(result.insertId, result.numAffectedRows ?? BigInt(0)),
929
1117
  ];
930
1118
  }
931
1119
  /**
@@ -970,4 +1158,3 @@ class InsertQueryBuilder {
970
1158
  }
971
1159
  }
972
1160
  exports.InsertQueryBuilder = InsertQueryBuilder;
973
- (0, prevent_await_js_1.preventAwait)(InsertQueryBuilder, "don't await InsertQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
@@ -5,7 +5,6 @@ const join_node_js_1 = require("../operation-node/join-node.js");
5
5
  const raw_node_js_1 = require("../operation-node/raw-node.js");
6
6
  const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
7
7
  const object_utils_js_1 = require("../util/object-utils.js");
8
- const prevent_await_js_1 = require("../util/prevent-await.js");
9
8
  class JoinBuilder {
10
9
  #props;
11
10
  constructor(props) {
@@ -50,4 +49,3 @@ class JoinBuilder {
50
49
  }
51
50
  }
52
51
  exports.JoinBuilder = JoinBuilder;
53
- (0, prevent_await_js_1.preventAwait)(JoinBuilder, "don't await JoinBuilder instances. They are never executed directly and are always just a part of a query.");
@@ -7,7 +7,8 @@ import { ExpressionOrFactory } from '../parser/expression-parser.js';
7
7
  import { InsertObjectOrList, InsertObjectOrListFactory } from '../parser/insert-values-parser.js';
8
8
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
9
9
  import { ReferenceExpression } from '../parser/reference-parser.js';
10
- import { ReturningAllRow, ReturningRow } from '../parser/returning-parser.js';
10
+ import { ReturningAllRow, ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
11
+ import { SelectCallback, SelectExpression } from '../parser/select-parser.js';
11
12
  import { TableExpression } from '../parser/table-parser.js';
12
13
  import { ExtractUpdateTypeFromReferenceExpression, UpdateObject, UpdateObjectFactory } from '../parser/update-set-parser.js';
13
14
  import { ValueExpression } from '../parser/value-parser.js';
@@ -19,8 +20,9 @@ import { ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '..
19
20
  import { MergeResult } from './merge-result.js';
20
21
  import { NoResultErrorConstructor } from './no-result-error.js';
21
22
  import { OutputCallback, OutputExpression, OutputInterface, OutputPrefix, SelectExpressionFromOutputCallback, SelectExpressionFromOutputExpression } from './output-interface.js';
23
+ import { MultiTableReturningInterface } from './returning-interface.js';
22
24
  import { UpdateQueryBuilder } from './update-query-builder.js';
23
- export declare class MergeQueryBuilder<DB, TT extends keyof DB, O> implements OutputInterface<DB, TT, O> {
25
+ export declare class MergeQueryBuilder<DB, TT extends keyof DB, O> implements MultiTableReturningInterface<DB, TT, O>, OutputInterface<DB, TT, O> {
24
26
  #private;
25
27
  constructor(props: MergeQueryBuilderProps);
26
28
  /**
@@ -122,6 +124,76 @@ export declare class MergeQueryBuilder<DB, TT extends keyof DB, O> implements Ou
122
124
  */
123
125
  using<TE extends TableExpression<DB, TT>, K1 extends JoinReferenceExpression<DB, TT, TE>, K2 extends JoinReferenceExpression<DB, TT, TE>>(sourceTable: TE, k1: K1, k2: K2): ExtractWheneableMergeQueryBuilder<DB, TT, TE, O>;
124
126
  using<TE extends TableExpression<DB, TT>, FN extends JoinCallbackExpression<DB, TT, TE>>(sourceTable: TE, callback: FN): ExtractWheneableMergeQueryBuilder<DB, TT, TE, O>;
127
+ /**
128
+ * Allows you to return data from modified rows.
129
+ *
130
+ * On supported databases like PostgreSQL, this method can be chained to
131
+ * `insert`, `update`, `delete` and `merge` queries to return data.
132
+ *
133
+ * Note that on SQLite you need to give aliases for the expressions to avoid
134
+ * [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
135
+ * For example `.returning('id as id')`.
136
+ *
137
+ * Also see the {@link returningAll} method.
138
+ *
139
+ * ### Examples
140
+ *
141
+ * Return one column:
142
+ *
143
+ * ```ts
144
+ * const { id } = await db
145
+ * .insertInto('person')
146
+ * .values({
147
+ * first_name: 'Jennifer',
148
+ * last_name: 'Aniston'
149
+ * })
150
+ * .returning('id')
151
+ * .executeTakeFirstOrThrow()
152
+ * ```
153
+ *
154
+ * Return multiple columns:
155
+ *
156
+ * ```ts
157
+ * const { id, last_name } = await db
158
+ * .insertInto('person')
159
+ * .values({
160
+ * first_name: 'Jennifer',
161
+ * last_name: 'Aniston'
162
+ * })
163
+ * .returning(['id', 'last_name'])
164
+ * .executeTakeFirstOrThrow()
165
+ * ```
166
+ *
167
+ * Return arbitrary expressions:
168
+ *
169
+ * ```ts
170
+ * import { sql } from 'kysely'
171
+ *
172
+ * const { id, full_name, first_pet_id } = await db
173
+ * .insertInto('person')
174
+ * .values({
175
+ * first_name: 'Jennifer',
176
+ * last_name: 'Aniston'
177
+ * })
178
+ * .returning((eb) => [
179
+ * 'id as id',
180
+ * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
181
+ * eb.selectFrom('pet').select('pet.id').limit(1).as('first_pet_id')
182
+ * ])
183
+ * .executeTakeFirstOrThrow()
184
+ * ```
185
+ */
186
+ returning<SE extends SelectExpression<DB, TT>>(selections: ReadonlyArray<SE>): MergeQueryBuilder<DB, TT, ReturningRow<DB, TT, O, SE>>;
187
+ returning<CB extends SelectCallback<DB, TT>>(callback: CB): MergeQueryBuilder<DB, TT, ReturningCallbackRow<DB, TT, O, CB>>;
188
+ returning<SE extends SelectExpression<DB, TT>>(selection: SE): MergeQueryBuilder<DB, TT, ReturningRow<DB, TT, O, SE>>;
189
+ /**
190
+ * Adds a `returning *` or `returning table.*` to an insert/update/delete/merge
191
+ * query on databases that support `returning` such as PostgreSQL.
192
+ *
193
+ * Also see the {@link returning} method.
194
+ */
195
+ returningAll<T extends TT>(table: T): MergeQueryBuilder<DB, TT, ReturningAllRow<DB, T, O>>;
196
+ returningAll(): MergeQueryBuilder<DB, TT, ReturningAllRow<DB, TT, O>>;
125
197
  /**
126
198
  * Allows you to return data from modified rows.
127
199
  *
@@ -252,7 +324,7 @@ export interface MergeQueryBuilderProps {
252
324
  readonly queryNode: MergeQueryNode;
253
325
  readonly executor: QueryExecutor;
254
326
  }
255
- export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST extends keyof DB, O> implements Compilable<O>, OutputInterface<DB, TT, O>, OperationNodeSource {
327
+ export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST extends keyof DB, O> implements Compilable<O>, MultiTableReturningInterface<DB, TT | ST, O>, OutputInterface<DB, TT, O>, OperationNodeSource {
256
328
  #private;
257
329
  constructor(props: MergeQueryBuilderProps);
258
330
  /**
@@ -449,6 +521,76 @@ export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST exte
449
521
  * the target table, and not from source table and returns a {@link MatchedThenableMergeQueryBuilder}.
450
522
  */
451
523
  whenNotMatchedBySourceAndRef<LRE extends ReferenceExpression<DB, TT>, RRE extends ReferenceExpression<DB, TT>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): MatchedThenableMergeQueryBuilder<DB, TT, ST, TT, O>;
524
+ /**
525
+ * Allows you to return data from modified rows.
526
+ *
527
+ * On supported databases like PostgreSQL, this method can be chained to
528
+ * `insert`, `update`, `delete` and `merge` queries to return data.
529
+ *
530
+ * Note that on SQLite you need to give aliases for the expressions to avoid
531
+ * [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
532
+ * For example `.returning('id as id')`.
533
+ *
534
+ * Also see the {@link returningAll} method.
535
+ *
536
+ * ### Examples
537
+ *
538
+ * Return one column:
539
+ *
540
+ * ```ts
541
+ * const { id } = await db
542
+ * .insertInto('person')
543
+ * .values({
544
+ * first_name: 'Jennifer',
545
+ * last_name: 'Aniston'
546
+ * })
547
+ * .returning('id')
548
+ * .executeTakeFirstOrThrow()
549
+ * ```
550
+ *
551
+ * Return multiple columns:
552
+ *
553
+ * ```ts
554
+ * const { id, last_name } = await db
555
+ * .insertInto('person')
556
+ * .values({
557
+ * first_name: 'Jennifer',
558
+ * last_name: 'Aniston'
559
+ * })
560
+ * .returning(['id', 'last_name'])
561
+ * .executeTakeFirstOrThrow()
562
+ * ```
563
+ *
564
+ * Return arbitrary expressions:
565
+ *
566
+ * ```ts
567
+ * import { sql } from 'kysely'
568
+ *
569
+ * const { id, full_name, first_pet_id } = await db
570
+ * .insertInto('person')
571
+ * .values({
572
+ * first_name: 'Jennifer',
573
+ * last_name: 'Aniston'
574
+ * })
575
+ * .returning((eb) => [
576
+ * 'id as id',
577
+ * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
578
+ * eb.selectFrom('pet').select('pet.id').limit(1).as('first_pet_id')
579
+ * ])
580
+ * .executeTakeFirstOrThrow()
581
+ * ```
582
+ */
583
+ returning<SE extends SelectExpression<DB, TT | ST>>(selections: ReadonlyArray<SE>): WheneableMergeQueryBuilder<DB, TT, ST, ReturningRow<DB, TT | ST, O, SE>>;
584
+ returning<CB extends SelectCallback<DB, TT | ST>>(callback: CB): WheneableMergeQueryBuilder<DB, TT, ST, ReturningCallbackRow<DB, TT | ST, O, CB>>;
585
+ returning<SE extends SelectExpression<DB, TT | ST>>(selection: SE): WheneableMergeQueryBuilder<DB, TT, ST, ReturningRow<DB, TT | ST, O, SE>>;
586
+ /**
587
+ * Adds a `returning *` or `returning table.*` to an insert/update/delete/merge
588
+ * query on databases that support `returning` such as PostgreSQL.
589
+ *
590
+ * Also see the {@link returning} method.
591
+ */
592
+ returningAll<T extends TT | ST>(table: T): WheneableMergeQueryBuilder<DB, TT, ST, ReturningAllRow<DB, T, O>>;
593
+ returningAll(): WheneableMergeQueryBuilder<DB, TT, ST, ReturningAllRow<DB, TT | ST, O>>;
452
594
  /**
453
595
  * Allows you to return data from modified rows.
454
596
  *
@@ -12,7 +12,6 @@ const select_parser_js_1 = require("../parser/select-parser.js");
12
12
  const top_parser_js_1 = require("../parser/top-parser.js");
13
13
  const noop_query_executor_js_1 = require("../query-executor/noop-query-executor.js");
14
14
  const object_utils_js_1 = require("../util/object-utils.js");
15
- const prevent_await_js_1 = require("../util/prevent-await.js");
16
15
  const merge_result_js_1 = require("./merge-result.js");
17
16
  const no_result_error_js_1 = require("./no-result-error.js");
18
17
  const update_query_builder_js_1 = require("./update-query-builder.js");
@@ -109,6 +108,18 @@ class MergeQueryBuilder {
109
108
  queryNode: merge_query_node_js_1.MergeQueryNode.cloneWithUsing(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('Using', args)),
110
109
  });
111
110
  }
111
+ returning(args) {
112
+ return new MergeQueryBuilder({
113
+ ...this.#props,
114
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectArg)(args)),
115
+ });
116
+ }
117
+ returningAll(table) {
118
+ return new MergeQueryBuilder({
119
+ ...this.#props,
120
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
121
+ });
122
+ }
112
123
  output(args) {
113
124
  return new MergeQueryBuilder({
114
125
  ...this.#props,
@@ -123,7 +134,6 @@ class MergeQueryBuilder {
123
134
  }
124
135
  }
125
136
  exports.MergeQueryBuilder = MergeQueryBuilder;
126
- (0, prevent_await_js_1.preventAwait)(MergeQueryBuilder, "don't await MergeQueryBuilder instances directly. To execute the query you need to call `execute` when available.");
127
137
  class WheneableMergeQueryBuilder {
128
138
  #props;
129
139
  constructor(props) {
@@ -288,6 +298,18 @@ class WheneableMergeQueryBuilder {
288
298
  whenNotMatchedBySourceAndRef(lhs, op, rhs) {
289
299
  return this.#whenNotMatched([lhs, op, rhs], true, true);
290
300
  }
301
+ returning(args) {
302
+ return new WheneableMergeQueryBuilder({
303
+ ...this.#props,
304
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectArg)(args)),
305
+ });
306
+ }
307
+ returningAll(table) {
308
+ return new WheneableMergeQueryBuilder({
309
+ ...this.#props,
310
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
311
+ });
312
+ }
291
313
  output(args) {
292
314
  return new WheneableMergeQueryBuilder({
293
315
  ...this.#props,
@@ -398,8 +420,10 @@ class WheneableMergeQueryBuilder {
398
420
  async execute() {
399
421
  const compiledQuery = this.compile();
400
422
  const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
401
- if (compiledQuery.query.output &&
402
- this.#props.executor.adapter.supportsOutput) {
423
+ const { adapter } = this.#props.executor;
424
+ const query = compiledQuery.query;
425
+ if ((query.returning && adapter.supportsReturning) ||
426
+ (query.output && adapter.supportsOutput)) {
403
427
  return result.rows;
404
428
  }
405
429
  return [new merge_result_js_1.MergeResult(result.numAffectedRows)];
@@ -432,7 +456,6 @@ class WheneableMergeQueryBuilder {
432
456
  }
433
457
  }
434
458
  exports.WheneableMergeQueryBuilder = WheneableMergeQueryBuilder;
435
- (0, prevent_await_js_1.preventAwait)(WheneableMergeQueryBuilder, "don't await WheneableMergeQueryBuilder instances directly. To execute the query you need to call `execute`.");
436
459
  class MatchedThenableMergeQueryBuilder {
437
460
  #props;
438
461
  constructor(props) {
@@ -556,7 +579,6 @@ class MatchedThenableMergeQueryBuilder {
556
579
  }
557
580
  }
558
581
  exports.MatchedThenableMergeQueryBuilder = MatchedThenableMergeQueryBuilder;
559
- (0, prevent_await_js_1.preventAwait)(MatchedThenableMergeQueryBuilder, "don't await MatchedThenableMergeQueryBuilder instances directly. To execute the query you need to call `execute` when available.");
560
582
  class NotMatchedThenableMergeQueryBuilder {
561
583
  #props;
562
584
  constructor(props) {
@@ -606,4 +628,3 @@ class NotMatchedThenableMergeQueryBuilder {
606
628
  }
607
629
  }
608
630
  exports.NotMatchedThenableMergeQueryBuilder = NotMatchedThenableMergeQueryBuilder;
609
- (0, prevent_await_js_1.preventAwait)(NotMatchedThenableMergeQueryBuilder, "don't await NotMatchedThenableMergeQueryBuilder instances directly. To execute the query you need to call `execute` when available.");
@@ -7,7 +7,6 @@ const on_conflict_node_js_1 = require("../operation-node/on-conflict-node.js");
7
7
  const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
8
8
  const update_set_parser_js_1 = require("../parser/update-set-parser.js");
9
9
  const object_utils_js_1 = require("../util/object-utils.js");
10
- const prevent_await_js_1 = require("../util/prevent-await.js");
11
10
  class OnConflictBuilder {
12
11
  #props;
13
12
  constructor(props) {
@@ -208,7 +207,6 @@ class OnConflictBuilder {
208
207
  }
209
208
  }
210
209
  exports.OnConflictBuilder = OnConflictBuilder;
211
- (0, prevent_await_js_1.preventAwait)(OnConflictBuilder, "don't await OnConflictBuilder instances.");
212
210
  class OnConflictDoNothingBuilder {
213
211
  #props;
214
212
  constructor(props) {
@@ -219,7 +217,6 @@ class OnConflictDoNothingBuilder {
219
217
  }
220
218
  }
221
219
  exports.OnConflictDoNothingBuilder = OnConflictDoNothingBuilder;
222
- (0, prevent_await_js_1.preventAwait)(OnConflictDoNothingBuilder, "don't await OnConflictDoNothingBuilder instances.");
223
220
  class OnConflictUpdateBuilder {
224
221
  #props;
225
222
  constructor(props) {
@@ -260,4 +257,3 @@ class OnConflictUpdateBuilder {
260
257
  }
261
258
  }
262
259
  exports.OnConflictUpdateBuilder = OnConflictUpdateBuilder;
263
- (0, prevent_await_js_1.preventAwait)(OnConflictUpdateBuilder, "don't await OnConflictUpdateBuilder instances.");