kysely 0.27.3 → 0.27.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/.renovaterc.json +3 -0
  2. package/CONTRIBUTING.md +2 -2
  3. package/README.md +7 -7
  4. package/deno.check.d.ts +86 -0
  5. package/deno.check.json +21 -0
  6. package/dist/cjs/dialect/dialect-adapter-base.d.ts +13 -3
  7. package/dist/cjs/dialect/dialect-adapter-base.js +4 -1
  8. package/dist/cjs/dialect/dialect-adapter.d.ts +16 -2
  9. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +12 -7
  10. package/dist/cjs/dialect/mssql/mssql-adapter.js +2 -4
  11. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +83 -55
  12. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +1 -0
  13. package/dist/cjs/dialect/mssql/mssql-driver.js +114 -48
  14. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
  15. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  16. package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
  17. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
  18. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  19. package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
  20. package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
  21. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  22. package/dist/cjs/driver/database-connection.d.ts +3 -1
  23. package/dist/cjs/driver/dummy-driver.d.ts +13 -12
  24. package/dist/cjs/driver/dummy-driver.js +13 -12
  25. package/dist/cjs/dynamic/dynamic-reference-builder.js +2 -2
  26. package/dist/cjs/dynamic/dynamic.d.ts +7 -7
  27. package/dist/cjs/dynamic/dynamic.js +7 -7
  28. package/dist/cjs/expression/expression-builder.d.ts +153 -62
  29. package/dist/cjs/expression/expression-builder.js +2 -3
  30. package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
  31. package/dist/cjs/expression/expression.d.ts +40 -5
  32. package/dist/cjs/expression/expression.js +2 -3
  33. package/dist/cjs/helpers/mssql.d.ts +74 -14
  34. package/dist/cjs/helpers/mssql.js +77 -18
  35. package/dist/cjs/helpers/mysql.d.ts +17 -13
  36. package/dist/cjs/helpers/mysql.js +20 -17
  37. package/dist/cjs/helpers/postgres.d.ts +11 -8
  38. package/dist/cjs/helpers/postgres.js +14 -12
  39. package/dist/cjs/helpers/sqlite.d.ts +41 -16
  40. package/dist/cjs/helpers/sqlite.js +44 -20
  41. package/dist/cjs/index.d.ts +28 -21
  42. package/dist/cjs/index.js +28 -21
  43. package/dist/cjs/kysely.d.ts +100 -42
  44. package/dist/cjs/kysely.js +63 -39
  45. package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
  46. package/dist/cjs/migration/file-migration-provider.js +2 -2
  47. package/dist/cjs/migration/migrator.d.ts +82 -14
  48. package/dist/cjs/migration/migrator.js +82 -14
  49. package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
  50. package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
  51. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/case-node.d.ts +1 -1
  53. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
  54. package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
  55. package/dist/cjs/operation-node/data-type-node.js +17 -3
  56. package/dist/cjs/operation-node/delete-query-node.d.ts +3 -0
  57. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -4
  58. package/dist/cjs/operation-node/having-node.d.ts +1 -1
  59. package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
  60. package/dist/cjs/operation-node/merge-query-node.d.ts +3 -0
  61. package/dist/cjs/operation-node/on-node.d.ts +1 -1
  62. package/dist/cjs/operation-node/operation-node-source.js +1 -2
  63. package/dist/cjs/operation-node/operation-node-transformer.d.ts +11 -3
  64. package/dist/cjs/operation-node/operation-node-transformer.js +26 -3
  65. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  66. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  67. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  68. package/dist/cjs/operation-node/operator-node.d.ts +3 -3
  69. package/dist/cjs/operation-node/operator-node.js +8 -6
  70. package/dist/cjs/operation-node/output-node.d.ts +13 -0
  71. package/dist/cjs/operation-node/output-node.js +26 -0
  72. package/dist/cjs/operation-node/query-node.d.ts +15 -6
  73. package/dist/cjs/operation-node/query-node.js +17 -0
  74. package/dist/cjs/operation-node/select-query-node.d.ts +1 -1
  75. package/dist/cjs/operation-node/select-query-node.js +6 -8
  76. package/dist/cjs/operation-node/update-query-node.d.ts +3 -0
  77. package/dist/cjs/operation-node/where-node.d.ts +1 -1
  78. package/dist/cjs/parser/binary-operation-parser.js +5 -6
  79. package/dist/cjs/parser/data-type-parser.js +1 -2
  80. package/dist/cjs/parser/default-value-parser.js +1 -2
  81. package/dist/cjs/parser/expression-parser.js +3 -4
  82. package/dist/cjs/parser/fetch-parser.js +1 -2
  83. package/dist/cjs/parser/group-by-parser.js +1 -2
  84. package/dist/cjs/parser/identifier-parser.js +1 -2
  85. package/dist/cjs/parser/insert-values-parser.js +1 -2
  86. package/dist/cjs/parser/join-parser.js +1 -2
  87. package/dist/cjs/parser/merge-parser.js +2 -3
  88. package/dist/cjs/parser/on-commit-action-parse.js +1 -2
  89. package/dist/cjs/parser/on-modify-action-parser.js +1 -2
  90. package/dist/cjs/parser/order-by-parser.js +3 -4
  91. package/dist/cjs/parser/parse-utils.js +4 -5
  92. package/dist/cjs/parser/partition-by-parser.js +1 -2
  93. package/dist/cjs/parser/reference-parser.js +8 -9
  94. package/dist/cjs/parser/returning-parser.d.ts +4 -3
  95. package/dist/cjs/parser/select-parser.js +2 -3
  96. package/dist/cjs/parser/set-operation-parser.js +1 -2
  97. package/dist/cjs/parser/table-parser.js +4 -5
  98. package/dist/cjs/parser/top-parser.js +1 -2
  99. package/dist/cjs/parser/unary-operation-parser.js +3 -4
  100. package/dist/cjs/parser/update-set-parser.js +2 -3
  101. package/dist/cjs/parser/value-parser.js +4 -5
  102. package/dist/cjs/parser/with-parser.js +1 -2
  103. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +54 -27
  104. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +26 -21
  105. package/dist/cjs/plugin/camel-case/camel-case.js +2 -3
  106. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  107. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  108. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  109. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  110. package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
  111. package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
  112. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
  113. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
  114. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  115. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
  116. package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
  117. package/dist/cjs/query-builder/delete-query-builder.d.ts +219 -43
  118. package/dist/cjs/query-builder/delete-query-builder.js +95 -31
  119. package/dist/cjs/query-builder/function-module.d.ts +40 -93
  120. package/dist/cjs/query-builder/function-module.js +1 -2
  121. package/dist/cjs/query-builder/insert-query-builder.d.ts +326 -67
  122. package/dist/cjs/query-builder/insert-query-builder.js +212 -61
  123. package/dist/cjs/query-builder/insert-result.d.ts +10 -5
  124. package/dist/cjs/query-builder/insert-result.js +10 -5
  125. package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
  126. package/dist/cjs/query-builder/json-path-builder.js +8 -5
  127. package/dist/cjs/query-builder/merge-query-builder.d.ts +312 -10
  128. package/dist/cjs/query-builder/merge-query-builder.js +98 -7
  129. package/dist/cjs/query-builder/no-result-error.js +2 -2
  130. package/dist/cjs/query-builder/on-conflict-builder.d.ts +53 -20
  131. package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
  132. package/dist/cjs/query-builder/output-interface.d.ts +138 -0
  133. package/dist/cjs/query-builder/output-interface.js +2 -0
  134. package/dist/cjs/query-builder/returning-interface.d.ts +7 -5
  135. package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
  136. package/dist/cjs/query-builder/select-query-builder.d.ts +370 -73
  137. package/dist/cjs/query-builder/select-query-builder.js +14 -9
  138. package/dist/cjs/query-builder/update-query-builder.d.ts +225 -31
  139. package/dist/cjs/query-builder/update-query-builder.js +96 -17
  140. package/dist/cjs/query-builder/update-result.d.ts +9 -0
  141. package/dist/cjs/query-builder/update-result.js +9 -0
  142. package/dist/cjs/query-builder/where-interface.d.ts +6 -2
  143. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  144. package/dist/cjs/query-compiler/default-query-compiler.js +45 -1
  145. package/dist/cjs/query-creator.d.ts +122 -21
  146. package/dist/cjs/query-creator.js +56 -3
  147. package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
  148. package/dist/cjs/raw-builder/raw-builder.js +1 -2
  149. package/dist/cjs/raw-builder/sql.d.ts +31 -12
  150. package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
  151. package/dist/cjs/schema/alter-column-builder.js +20 -3
  152. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +44 -10
  153. package/dist/cjs/schema/alter-table-add-index-builder.js +27 -10
  154. package/dist/cjs/schema/alter-table-builder.js +1 -2
  155. package/dist/cjs/schema/column-definition-builder.d.ts +286 -24
  156. package/dist/cjs/schema/column-definition-builder.js +288 -24
  157. package/dist/cjs/schema/create-table-builder.d.ts +86 -33
  158. package/dist/cjs/schema/create-table-builder.js +86 -33
  159. package/dist/cjs/util/assert.js +2 -3
  160. package/dist/cjs/util/column-type.d.ts +5 -9
  161. package/dist/cjs/util/compilable.js +1 -2
  162. package/dist/cjs/util/json-object-args.js +1 -2
  163. package/dist/cjs/util/log-once.js +1 -2
  164. package/dist/cjs/util/object-utils.js +38 -26
  165. package/dist/cjs/util/performance-now.js +1 -2
  166. package/dist/cjs/util/prevent-await.js +1 -2
  167. package/dist/cjs/util/query-id.js +1 -2
  168. package/dist/cjs/util/random-string.js +1 -2
  169. package/dist/cjs/util/require-all-props.d.ts +4 -2
  170. package/dist/cjs/util/require-all-props.js +5 -4
  171. package/dist/cjs/util/stack-trace-utils.js +1 -2
  172. package/dist/cjs/util/streamable.d.ts +1 -1
  173. package/dist/cjs/util/type-utils.d.ts +4 -2
  174. package/dist/esm/dialect/dialect-adapter-base.d.ts +13 -3
  175. package/dist/esm/dialect/dialect-adapter-base.js +4 -1
  176. package/dist/esm/dialect/dialect-adapter.d.ts +16 -2
  177. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +12 -7
  178. package/dist/esm/dialect/mssql/mssql-adapter.js +2 -4
  179. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +83 -55
  180. package/dist/esm/dialect/mssql/mssql-driver.d.ts +1 -0
  181. package/dist/esm/dialect/mssql/mssql-driver.js +114 -48
  182. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
  183. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  184. package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
  185. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
  186. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  187. package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
  188. package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
  189. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  190. package/dist/esm/driver/database-connection.d.ts +3 -1
  191. package/dist/esm/driver/dummy-driver.d.ts +13 -12
  192. package/dist/esm/driver/dummy-driver.js +13 -12
  193. package/dist/esm/dynamic/dynamic.d.ts +7 -7
  194. package/dist/esm/dynamic/dynamic.js +7 -7
  195. package/dist/esm/expression/expression-builder.d.ts +153 -62
  196. package/dist/esm/expression/expression-wrapper.d.ts +92 -23
  197. package/dist/esm/expression/expression.d.ts +40 -5
  198. package/dist/esm/helpers/mssql.d.ts +74 -14
  199. package/dist/esm/helpers/mssql.js +74 -14
  200. package/dist/esm/helpers/mysql.d.ts +17 -13
  201. package/dist/esm/helpers/mysql.js +17 -13
  202. package/dist/esm/helpers/postgres.d.ts +11 -8
  203. package/dist/esm/helpers/postgres.js +11 -8
  204. package/dist/esm/helpers/sqlite.d.ts +41 -16
  205. package/dist/esm/helpers/sqlite.js +41 -16
  206. package/dist/esm/index.d.ts +28 -21
  207. package/dist/esm/index.js +28 -21
  208. package/dist/esm/kysely.d.ts +100 -42
  209. package/dist/esm/kysely.js +61 -37
  210. package/dist/esm/migration/file-migration-provider.d.ts +2 -2
  211. package/dist/esm/migration/file-migration-provider.js +2 -2
  212. package/dist/esm/migration/migrator.d.ts +82 -14
  213. package/dist/esm/migration/migrator.js +82 -14
  214. package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
  215. package/dist/esm/operation-node/aggregate-function-node.js +9 -0
  216. package/dist/esm/operation-node/alter-column-node.d.ts +1 -1
  217. package/dist/esm/operation-node/case-node.d.ts +1 -1
  218. package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
  219. package/dist/esm/operation-node/data-type-node.d.ts +2 -2
  220. package/dist/esm/operation-node/data-type-node.js +15 -1
  221. package/dist/esm/operation-node/delete-query-node.d.ts +3 -0
  222. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -4
  223. package/dist/esm/operation-node/having-node.d.ts +1 -1
  224. package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
  225. package/dist/esm/operation-node/merge-query-node.d.ts +3 -0
  226. package/dist/esm/operation-node/on-node.d.ts +1 -1
  227. package/dist/esm/operation-node/operation-node-transformer.d.ts +11 -3
  228. package/dist/esm/operation-node/operation-node-transformer.js +26 -3
  229. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  230. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  231. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  232. package/dist/esm/operation-node/operator-node.d.ts +3 -3
  233. package/dist/esm/operation-node/operator-node.js +2 -0
  234. package/dist/esm/operation-node/output-node.d.ts +13 -0
  235. package/dist/esm/operation-node/output-node.js +24 -0
  236. package/dist/esm/operation-node/query-node.d.ts +15 -6
  237. package/dist/esm/operation-node/query-node.js +17 -0
  238. package/dist/esm/operation-node/select-query-node.d.ts +1 -1
  239. package/dist/esm/operation-node/select-query-node.js +6 -8
  240. package/dist/esm/operation-node/update-query-node.d.ts +3 -0
  241. package/dist/esm/operation-node/where-node.d.ts +1 -1
  242. package/dist/esm/parser/returning-parser.d.ts +4 -3
  243. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +54 -27
  244. package/dist/esm/plugin/camel-case/camel-case-plugin.js +26 -21
  245. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  246. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  247. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  248. package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  249. package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
  250. package/dist/esm/plugin/noop-plugin.d.ts +28 -6
  251. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
  252. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
  253. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  254. package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
  255. package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
  256. package/dist/esm/query-builder/delete-query-builder.d.ts +219 -43
  257. package/dist/esm/query-builder/delete-query-builder.js +95 -31
  258. package/dist/esm/query-builder/function-module.d.ts +40 -93
  259. package/dist/esm/query-builder/insert-query-builder.d.ts +326 -67
  260. package/dist/esm/query-builder/insert-query-builder.js +212 -61
  261. package/dist/esm/query-builder/insert-result.d.ts +10 -5
  262. package/dist/esm/query-builder/insert-result.js +10 -5
  263. package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
  264. package/dist/esm/query-builder/json-path-builder.js +8 -5
  265. package/dist/esm/query-builder/merge-query-builder.d.ts +312 -10
  266. package/dist/esm/query-builder/merge-query-builder.js +98 -7
  267. package/dist/esm/query-builder/on-conflict-builder.d.ts +53 -20
  268. package/dist/esm/query-builder/on-conflict-builder.js +41 -16
  269. package/dist/esm/query-builder/output-interface.d.ts +138 -0
  270. package/dist/esm/query-builder/output-interface.js +2 -0
  271. package/dist/esm/query-builder/returning-interface.d.ts +7 -5
  272. package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
  273. package/dist/esm/query-builder/select-query-builder.d.ts +370 -73
  274. package/dist/esm/query-builder/select-query-builder.js +13 -7
  275. package/dist/esm/query-builder/update-query-builder.d.ts +225 -31
  276. package/dist/esm/query-builder/update-query-builder.js +96 -17
  277. package/dist/esm/query-builder/update-result.d.ts +9 -0
  278. package/dist/esm/query-builder/update-result.js +9 -0
  279. package/dist/esm/query-builder/where-interface.d.ts +6 -2
  280. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  281. package/dist/esm/query-compiler/default-query-compiler.js +45 -1
  282. package/dist/esm/query-creator.d.ts +122 -21
  283. package/dist/esm/query-creator.js +56 -3
  284. package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
  285. package/dist/esm/raw-builder/sql.d.ts +31 -12
  286. package/dist/esm/schema/alter-column-builder.d.ts +17 -3
  287. package/dist/esm/schema/alter-column-builder.js +20 -3
  288. package/dist/esm/schema/alter-table-add-index-builder.d.ts +44 -10
  289. package/dist/esm/schema/alter-table-add-index-builder.js +27 -10
  290. package/dist/esm/schema/alter-table-builder.js +1 -2
  291. package/dist/esm/schema/column-definition-builder.d.ts +286 -24
  292. package/dist/esm/schema/column-definition-builder.js +288 -24
  293. package/dist/esm/schema/create-table-builder.d.ts +86 -33
  294. package/dist/esm/schema/create-table-builder.js +86 -33
  295. package/dist/esm/util/column-type.d.ts +5 -9
  296. package/dist/esm/util/object-utils.js +18 -5
  297. package/dist/esm/util/require-all-props.d.ts +4 -2
  298. package/dist/esm/util/require-all-props.js +4 -2
  299. package/dist/esm/util/streamable.d.ts +1 -1
  300. package/dist/esm/util/type-utils.d.ts +4 -2
  301. package/package.json +30 -24
@@ -8,6 +8,7 @@ const update_query_node_js_1 = require("../operation-node/update-query-node.js")
8
8
  const insert_values_parser_js_1 = require("../parser/insert-values-parser.js");
9
9
  const join_parser_js_1 = require("../parser/join-parser.js");
10
10
  const merge_parser_js_1 = require("../parser/merge-parser.js");
11
+ const select_parser_js_1 = require("../parser/select-parser.js");
11
12
  const top_parser_js_1 = require("../parser/top-parser.js");
12
13
  const noop_query_executor_js_1 = require("../query-executor/noop-query-executor.js");
13
14
  const object_utils_js_1 = require("../util/object-utils.js");
@@ -20,6 +21,35 @@ class MergeQueryBuilder {
20
21
  constructor(props) {
21
22
  this.#props = (0, object_utils_js_1.freeze)(props);
22
23
  }
24
+ /**
25
+ * This can be used to add any additional SQL to the end of the query.
26
+ *
27
+ * ### Examples
28
+ *
29
+ * ```ts
30
+ * import { sql } from 'kysely'
31
+ *
32
+ * await db
33
+ * .mergeInto('person')
34
+ * .using('pet', 'pet.owner_id', 'person.id')
35
+ * .whenMatched()
36
+ * .thenDelete()
37
+ * .modifyEnd(sql.raw('-- this is a comment'))
38
+ * .execute()
39
+ * ```
40
+ *
41
+ * The generated SQL (PostgreSQL):
42
+ *
43
+ * ```sql
44
+ * merge into "person" using "pet" on "pet"."owner_id" = "person"."id" when matched then delete -- this is a comment
45
+ * ```
46
+ */
47
+ modifyEnd(modifier) {
48
+ return new MergeQueryBuilder({
49
+ ...this.#props,
50
+ queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),
51
+ });
52
+ }
23
53
  /**
24
54
  * Changes a `merge into` query to an `merge top into` query.
25
55
  *
@@ -79,6 +109,18 @@ class MergeQueryBuilder {
79
109
  queryNode: merge_query_node_js_1.MergeQueryNode.cloneWithUsing(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('Using', args)),
80
110
  });
81
111
  }
112
+ output(args) {
113
+ return new MergeQueryBuilder({
114
+ ...this.#props,
115
+ queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectArg)(args)),
116
+ });
117
+ }
118
+ outputAll(table) {
119
+ return new MergeQueryBuilder({
120
+ ...this.#props,
121
+ queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
122
+ });
123
+ }
82
124
  }
83
125
  exports.MergeQueryBuilder = MergeQueryBuilder;
84
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.");
@@ -87,6 +129,35 @@ class WheneableMergeQueryBuilder {
87
129
  constructor(props) {
88
130
  this.#props = (0, object_utils_js_1.freeze)(props);
89
131
  }
132
+ /**
133
+ * This can be used to add any additional SQL to the end of the query.
134
+ *
135
+ * ### Examples
136
+ *
137
+ * ```ts
138
+ * import { sql } from 'kysely'
139
+ *
140
+ * await db
141
+ * .mergeInto('person')
142
+ * .using('pet', 'pet.owner_id', 'person.id')
143
+ * .whenMatched()
144
+ * .thenDelete()
145
+ * .modifyEnd(sql.raw('-- this is a comment'))
146
+ * .execute()
147
+ * ```
148
+ *
149
+ * The generated SQL (PostgreSQL):
150
+ *
151
+ * ```sql
152
+ * merge into "person" using "pet" on "pet"."owner_id" = "person"."id" when matched then delete -- this is a comment
153
+ * ```
154
+ */
155
+ modifyEnd(modifier) {
156
+ return new WheneableMergeQueryBuilder({
157
+ ...this.#props,
158
+ queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),
159
+ });
160
+ }
90
161
  /**
91
162
  * See {@link MergeQueryBuilder.top}.
92
163
  */
@@ -217,6 +288,18 @@ class WheneableMergeQueryBuilder {
217
288
  whenNotMatchedBySourceAndRef(lhs, op, rhs) {
218
289
  return this.#whenNotMatched([lhs, op, rhs], true, true);
219
290
  }
291
+ output(args) {
292
+ return new WheneableMergeQueryBuilder({
293
+ ...this.#props,
294
+ queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectArg)(args)),
295
+ });
296
+ }
297
+ outputAll(table) {
298
+ return new WheneableMergeQueryBuilder({
299
+ ...this.#props,
300
+ queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
301
+ });
302
+ }
220
303
  #whenNotMatched(args, refRight = false, bySource = false) {
221
304
  const props = {
222
305
  ...this.#props,
@@ -239,13 +322,15 @@ class WheneableMergeQueryBuilder {
239
322
  * The next example uses a helper function `log` to log a query:
240
323
  *
241
324
  * ```ts
325
+ * import type { Compilable } from 'kysely'
326
+ *
242
327
  * function log<T extends Compilable>(qb: T): T {
243
328
  * console.log(qb.compile())
244
329
  * return qb
245
330
  * }
246
331
  *
247
- * db.updateTable('person')
248
- * .set(values)
332
+ * await db.updateTable('person')
333
+ * .set({ first_name: 'John' })
249
334
  * .$call(log)
250
335
  * .execute()
251
336
  * ```
@@ -266,7 +351,9 @@ class WheneableMergeQueryBuilder {
266
351
  * ### Examples
267
352
  *
268
353
  * ```ts
269
- * async function updatePerson(id: number, updates: UpdateablePerson, returnLastName: boolean) {
354
+ * import type { PersonUpdate } from 'type-editor' // imaginary module
355
+ *
356
+ * async function updatePerson(id: number, updates: PersonUpdate, returnLastName: boolean) {
270
357
  * return await db
271
358
  * .updateTable('person')
272
359
  * .set(updates)
@@ -282,11 +369,11 @@ class WheneableMergeQueryBuilder {
282
369
  * the code. In the example above the return type of the `updatePerson` function is:
283
370
  *
284
371
  * ```ts
285
- * {
372
+ * Promise<{
286
373
  * id: number
287
374
  * first_name: string
288
375
  * last_name?: string
289
- * }
376
+ * }>
290
377
  * ```
291
378
  */
292
379
  $if(condition, func) {
@@ -301,7 +388,7 @@ class WheneableMergeQueryBuilder {
301
388
  return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);
302
389
  }
303
390
  compile() {
304
- return this.#props.executor.compileQuery(this.#props.queryNode, this.#props.queryId);
391
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
305
392
  }
306
393
  /**
307
394
  * Executes the query and returns an array of rows.
@@ -311,6 +398,10 @@ class WheneableMergeQueryBuilder {
311
398
  async execute() {
312
399
  const compiledQuery = this.compile();
313
400
  const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
401
+ if (compiledQuery.query.output &&
402
+ this.#props.executor.adapter.supportsOutput) {
403
+ return result.rows;
404
+ }
314
405
  return [new merge_result_js_1.MergeResult(result.numAffectedRows)];
315
406
  }
316
407
  /**
@@ -434,7 +525,7 @@ class MatchedThenableMergeQueryBuilder {
434
525
  * .thenUpdate((ub) => ub
435
526
  * .set(sql`metadata['has_pets']`, 'Y')
436
527
  * .set({
437
- * updated_at: Date.now(),
528
+ * updated_at: new Date().toISOString(),
438
529
  * })
439
530
  * )
440
531
  * .execute()
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isNoResultErrorConstructor = exports.NoResultError = void 0;
3
+ exports.NoResultError = void 0;
4
+ exports.isNoResultErrorConstructor = isNoResultErrorConstructor;
4
5
  class NoResultError extends Error {
5
6
  /**
6
7
  * The operation node tree of the query that was executed.
@@ -15,4 +16,3 @@ exports.NoResultError = NoResultError;
15
16
  function isNoResultErrorConstructor(fn) {
16
17
  return Object.prototype.hasOwnProperty.call(fn, 'prototype');
17
18
  }
18
- exports.isNoResultErrorConstructor = isNoResultErrorConstructor;
@@ -73,6 +73,8 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
73
73
  * you can always use:
74
74
  *
75
75
  * ```ts
76
+ * import { sql } from 'kysely'
77
+ *
76
78
  * sql`your operator`
77
79
  * ```
78
80
  *
@@ -84,7 +86,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
84
86
  * const persons = await db
85
87
  * .selectFrom('person')
86
88
  * .selectAll()
87
- * .where('id', 'in', ['1', '2', '3'])
89
+ * .where('id', 'in', [1, 2, 3])
88
90
  * .execute()
89
91
  * ```
90
92
  *
@@ -303,7 +305,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
303
305
  * .selectFrom('person')
304
306
  * .selectAll()
305
307
  * .where(
306
- * sql`coalesce(first_name, last_name)`,
308
+ * sql<string>`coalesce(first_name, last_name)`,
307
309
  * 'like',
308
310
  * '%' + name + '%',
309
311
  * )
@@ -332,6 +334,8 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
332
334
  * import { sql } from 'kysely'
333
335
  * const { ref } = db.dynamic
334
336
  *
337
+ * const columnFromUserInput: string = 'id'
338
+ *
335
339
  * const persons = await db
336
340
  * .selectFrom('person')
337
341
  * .selectAll()
@@ -419,21 +423,25 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
419
423
  * ### Examples
420
424
  *
421
425
  * ```ts
426
+ * const id = 1
427
+ * const first_name = 'John'
428
+ *
422
429
  * await db
423
430
  * .insertInto('person')
424
- * .values({ first_name, pic })
431
+ * .values({ first_name, id })
425
432
  * .onConflict((oc) => oc
426
- * .column('pic')
433
+ * .column('id')
427
434
  * .doNothing()
428
435
  * )
436
+ * .execute()
429
437
  * ```
430
438
  *
431
439
  * The generated SQL (PostgreSQL):
432
440
  *
433
441
  * ```sql
434
- * insert into "person" ("first_name", "pic")
442
+ * insert into "person" ("first_name", "id")
435
443
  * values ($1, $2)
436
- * on conflict ("pic") do nothing
444
+ * on conflict ("id") do nothing
437
445
  * ```
438
446
  */
439
447
  doNothing(): OnConflictDoNothingBuilder<DB, TB>;
@@ -443,21 +451,25 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
443
451
  * ### Examples
444
452
  *
445
453
  * ```ts
454
+ * const id = 1
455
+ * const first_name = 'John'
456
+ *
446
457
  * await db
447
458
  * .insertInto('person')
448
- * .values({ first_name, pic })
459
+ * .values({ first_name, id })
449
460
  * .onConflict((oc) => oc
450
- * .column('pic')
461
+ * .column('id')
451
462
  * .doUpdateSet({ first_name })
452
463
  * )
464
+ * .execute()
453
465
  * ```
454
466
  *
455
467
  * The generated SQL (PostgreSQL):
456
468
  *
457
469
  * ```sql
458
- * insert into "person" ("first_name", "pic")
470
+ * insert into "person" ("first_name", "id")
459
471
  * values ($1, $2)
460
- * on conflict ("pic")
472
+ * on conflict ("id")
461
473
  * do update set "first_name" = $3
462
474
  * ```
463
475
  *
@@ -466,15 +478,32 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
466
478
  * to create an upsert operation:
467
479
  *
468
480
  * ```ts
469
- * db.insertInto('person')
470
- * .values(person)
471
- * .onConflict((oc) => oc
472
- * .column('id')
473
- * .doUpdateSet((eb) => ({
474
- * first_name: eb.ref('excluded.first_name'),
475
- * last_name: eb.ref('excluded.last_name')
476
- * }))
481
+ * import type { NewPerson } from 'type-editor' // imaginary module
482
+ *
483
+ * async function upsertPerson(person: NewPerson): Promise<void> {
484
+ * await db.insertInto('person')
485
+ * .values(person)
486
+ * .onConflict((oc) => oc
487
+ * .column('id')
488
+ * .doUpdateSet((eb) => ({
489
+ * first_name: eb.ref('excluded.first_name'),
490
+ * last_name: eb.ref('excluded.last_name')
491
+ * })
492
+ * )
477
493
  * )
494
+ * .execute()
495
+ * }
496
+ * ```
497
+ *
498
+ * The generated SQL (PostgreSQL):
499
+ *
500
+ * ```sql
501
+ * insert into "person" ("first_name", "last_name")
502
+ * values ($1, $2)
503
+ * on conflict ("id")
504
+ * do update set
505
+ * "first_name" = excluded."first_name",
506
+ * "last_name" = excluded."last_name"
478
507
  * ```
479
508
  */
480
509
  doUpdateSet(update: UpdateObjectExpression<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
@@ -537,6 +566,8 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
537
566
  * you can always use:
538
567
  *
539
568
  * ```ts
569
+ * import { sql } from 'kysely'
570
+ *
540
571
  * sql`your operator`
541
572
  * ```
542
573
  *
@@ -548,7 +579,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
548
579
  * const persons = await db
549
580
  * .selectFrom('person')
550
581
  * .selectAll()
551
- * .where('id', 'in', ['1', '2', '3'])
582
+ * .where('id', 'in', [1, 2, 3])
552
583
  * .execute()
553
584
  * ```
554
585
  *
@@ -767,7 +798,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
767
798
  * .selectFrom('person')
768
799
  * .selectAll()
769
800
  * .where(
770
- * sql`coalesce(first_name, last_name)`,
801
+ * sql<string>`coalesce(first_name, last_name)`,
771
802
  * 'like',
772
803
  * '%' + name + '%',
773
804
  * )
@@ -796,6 +827,8 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
796
827
  * import { sql } from 'kysely'
797
828
  * const { ref } = db.dynamic
798
829
  *
830
+ * const columnFromUserInput: string = 'id'
831
+ *
799
832
  * const persons = await db
800
833
  * .selectFrom('person')
801
834
  * .selectAll()
@@ -101,21 +101,25 @@ class OnConflictBuilder {
101
101
  * ### Examples
102
102
  *
103
103
  * ```ts
104
+ * const id = 1
105
+ * const first_name = 'John'
106
+ *
104
107
  * await db
105
108
  * .insertInto('person')
106
- * .values({ first_name, pic })
109
+ * .values({ first_name, id })
107
110
  * .onConflict((oc) => oc
108
- * .column('pic')
111
+ * .column('id')
109
112
  * .doNothing()
110
113
  * )
114
+ * .execute()
111
115
  * ```
112
116
  *
113
117
  * The generated SQL (PostgreSQL):
114
118
  *
115
119
  * ```sql
116
- * insert into "person" ("first_name", "pic")
120
+ * insert into "person" ("first_name", "id")
117
121
  * values ($1, $2)
118
- * on conflict ("pic") do nothing
122
+ * on conflict ("id") do nothing
119
123
  * ```
120
124
  */
121
125
  doNothing() {
@@ -132,21 +136,25 @@ class OnConflictBuilder {
132
136
  * ### Examples
133
137
  *
134
138
  * ```ts
139
+ * const id = 1
140
+ * const first_name = 'John'
141
+ *
135
142
  * await db
136
143
  * .insertInto('person')
137
- * .values({ first_name, pic })
144
+ * .values({ first_name, id })
138
145
  * .onConflict((oc) => oc
139
- * .column('pic')
146
+ * .column('id')
140
147
  * .doUpdateSet({ first_name })
141
148
  * )
149
+ * .execute()
142
150
  * ```
143
151
  *
144
152
  * The generated SQL (PostgreSQL):
145
153
  *
146
154
  * ```sql
147
- * insert into "person" ("first_name", "pic")
155
+ * insert into "person" ("first_name", "id")
148
156
  * values ($1, $2)
149
- * on conflict ("pic")
157
+ * on conflict ("id")
150
158
  * do update set "first_name" = $3
151
159
  * ```
152
160
  *
@@ -155,15 +163,32 @@ class OnConflictBuilder {
155
163
  * to create an upsert operation:
156
164
  *
157
165
  * ```ts
158
- * db.insertInto('person')
159
- * .values(person)
160
- * .onConflict((oc) => oc
161
- * .column('id')
162
- * .doUpdateSet((eb) => ({
163
- * first_name: eb.ref('excluded.first_name'),
164
- * last_name: eb.ref('excluded.last_name')
165
- * }))
166
+ * import type { NewPerson } from 'type-editor' // imaginary module
167
+ *
168
+ * async function upsertPerson(person: NewPerson): Promise<void> {
169
+ * await db.insertInto('person')
170
+ * .values(person)
171
+ * .onConflict((oc) => oc
172
+ * .column('id')
173
+ * .doUpdateSet((eb) => ({
174
+ * first_name: eb.ref('excluded.first_name'),
175
+ * last_name: eb.ref('excluded.last_name')
176
+ * })
177
+ * )
166
178
  * )
179
+ * .execute()
180
+ * }
181
+ * ```
182
+ *
183
+ * The generated SQL (PostgreSQL):
184
+ *
185
+ * ```sql
186
+ * insert into "person" ("first_name", "last_name")
187
+ * values ($1, $2)
188
+ * on conflict ("id")
189
+ * do update set
190
+ * "first_name" = excluded."first_name",
191
+ * "last_name" = excluded."last_name"
167
192
  * ```
168
193
  */
169
194
  doUpdateSet(update) {
@@ -0,0 +1,138 @@
1
+ import { ExpressionBuilder } from '../expression/expression-builder.js';
2
+ import { AliasedExpressionOrFactory } from '../parser/expression-parser.js';
3
+ import { ReturningAllRow, ReturningRow } from '../parser/returning-parser.js';
4
+ import { AnyAliasedColumnWithTable, AnyColumnWithTable } from '../util/type-utils.js';
5
+ export interface OutputInterface<DB, TB extends keyof DB, O, OP extends OutputPrefix = OutputPrefix> {
6
+ /**
7
+ * Allows you to return data from modified rows.
8
+ *
9
+ * On supported databases like MS SQL Server (MSSQL), this method can be chained
10
+ * to `insert`, `update`, `delete` and `merge` queries to return data.
11
+ *
12
+ * Also see the {@link outputAll} method.
13
+ *
14
+ * ### Examples
15
+ *
16
+ * Return one column:
17
+ *
18
+ * ```ts
19
+ * const { id } = await db
20
+ * .insertInto('person')
21
+ * .output('inserted.id')
22
+ * .values({
23
+ * first_name: 'Jennifer',
24
+ * last_name: 'Aniston',
25
+ * gender: 'female',
26
+ * })
27
+ * .executeTakeFirstOrThrow()
28
+ * ```
29
+ *
30
+ * The generated SQL (MSSQL):
31
+ *
32
+ * ```sql
33
+ * insert into "person" ("first_name", "last_name", "gender")
34
+ * output "inserted"."id"
35
+ * values (@1, @2, @3)
36
+ * ```
37
+ *
38
+ * Return multiple columns:
39
+ *
40
+ * ```ts
41
+ * const { old_first_name, old_last_name, new_first_name, new_last_name } = await db
42
+ * .updateTable('person')
43
+ * .set({ first_name: 'John', last_name: 'Doe' })
44
+ * .output([
45
+ * 'deleted.first_name as old_first_name',
46
+ * 'deleted.last_name as old_last_name',
47
+ * 'inserted.first_name as new_first_name',
48
+ * 'inserted.last_name as new_last_name',
49
+ * ])
50
+ * .where('created_at', '<', new Date())
51
+ * .executeTakeFirstOrThrow()
52
+ * ```
53
+ *
54
+ * The generated SQL (MSSQL):
55
+ *
56
+ * ```sql
57
+ * update "person"
58
+ * set "first_name" = @1, "last_name" = @2
59
+ * output "deleted"."first_name" as "old_first_name",
60
+ * "deleted"."last_name" as "old_last_name",
61
+ * "inserted"."first_name" as "new_first_name",
62
+ * "inserted"."last_name" as "new_last_name"
63
+ * where "created_at" < @3
64
+ * ```
65
+ *
66
+ * Return arbitrary expressions:
67
+ *
68
+ * ```ts
69
+ * import { sql } from 'kysely'
70
+ *
71
+ * const { full_name } = await db
72
+ * .deleteFrom('person')
73
+ * .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name'))
74
+ * .where('created_at', '<', new Date())
75
+ * .executeTakeFirstOrThrow()
76
+ * ```
77
+ *
78
+ * The generated SQL (MSSQL):
79
+ *
80
+ * ```sql
81
+ * delete from "person"
82
+ * output concat("deleted"."first_name", ' ', "deleted"."last_name") as "full_name"
83
+ * where "created_at" < @1
84
+ * ```
85
+ *
86
+ * Return the action performed on the row:
87
+ *
88
+ * ```ts
89
+ * await db
90
+ * .mergeInto('person')
91
+ * .using('pet', 'pet.owner_id', 'person.id')
92
+ * .whenMatched()
93
+ * .thenDelete()
94
+ * .whenNotMatched()
95
+ * .thenInsertValues({
96
+ * first_name: 'John',
97
+ * last_name: 'Doe',
98
+ * gender: 'male'
99
+ * })
100
+ * .output([
101
+ * 'inserted.id as inserted_id',
102
+ * 'deleted.id as deleted_id',
103
+ * ])
104
+ * .execute()
105
+ * ```
106
+ *
107
+ * The generated SQL (MSSQL):
108
+ *
109
+ * ```sql
110
+ * merge into "person"
111
+ * using "pet" on "pet"."owner_id" = "person"."id"
112
+ * when matched then delete
113
+ * when not matched then
114
+ * insert ("first_name", "last_name", "gender")
115
+ * values (@1, @2, @3)
116
+ * output "inserted"."id" as "inserted_id", "deleted"."id" as "deleted_id"
117
+ * ```
118
+ *
119
+ */
120
+ output<OE extends OutputExpression<DB, TB, OP>>(selections: ReadonlyArray<OE>): OutputInterface<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>, OP>;
121
+ output<CB extends OutputCallback<DB, TB, OP>>(callback: CB): OutputInterface<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputCallback<CB>>, OP>;
122
+ output<OE extends OutputExpression<DB, TB, OP>>(selection: OE): OutputInterface<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>, OP>;
123
+ /**
124
+ * Adds an `output {prefix}.*` to an `insert`/`update`/`delete`/`merge` query on databases
125
+ * that support `output` such as MS SQL Server (MSSQL).
126
+ *
127
+ * Also see the {@link output} method.
128
+ */
129
+ outputAll(table: OP): OutputInterface<DB, TB, ReturningAllRow<DB, TB, O>, OP>;
130
+ }
131
+ export type OutputPrefix = 'deleted' | 'inserted';
132
+ export type OutputDatabase<DB, TB extends keyof DB, OP extends OutputPrefix = OutputPrefix> = {
133
+ [K in OP]: DB[TB];
134
+ };
135
+ export type OutputExpression<DB, TB extends keyof DB, OP extends OutputPrefix = OutputPrefix, ODB = OutputDatabase<DB, TB, OP>, OTB extends keyof ODB = keyof ODB> = AnyAliasedColumnWithTable<ODB, OTB> | AnyColumnWithTable<ODB, OTB> | AliasedExpressionOrFactory<ODB, OTB>;
136
+ export type OutputCallback<DB, TB extends keyof DB, OP extends OutputPrefix = OutputPrefix> = (eb: ExpressionBuilder<OutputDatabase<DB, TB, OP>, OP>) => ReadonlyArray<OutputExpression<DB, TB, OP>>;
137
+ export type SelectExpressionFromOutputExpression<OE> = OE extends `${OutputPrefix}.${infer C}` ? C : OE;
138
+ export type SelectExpressionFromOutputCallback<CB> = CB extends (eb: ExpressionBuilder<any, any>) => ReadonlyArray<infer OE> ? SelectExpressionFromOutputExpression<OE> : never;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -26,20 +26,20 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
26
26
  * last_name: 'Aniston'
27
27
  * })
28
28
  * .returning('id')
29
- * .executeTakeFirst()
29
+ * .executeTakeFirstOrThrow()
30
30
  * ```
31
31
  *
32
32
  * Return multiple columns:
33
33
  *
34
34
  * ```ts
35
- * const { id, first_name } = await db
35
+ * const { id, last_name } = await db
36
36
  * .insertInto('person')
37
37
  * .values({
38
38
  * first_name: 'Jennifer',
39
39
  * last_name: 'Aniston'
40
40
  * })
41
41
  * .returning(['id', 'last_name'])
42
- * .executeTakeFirst()
42
+ * .executeTakeFirstOrThrow()
43
43
  * ```
44
44
  *
45
45
  * Return arbitrary expressions:
@@ -56,9 +56,9 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
56
56
  * .returning((eb) => [
57
57
  * 'id as id',
58
58
  * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
59
- * eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
59
+ * eb.selectFrom('pet').select('pet.id').limit(1).as('first_pet_id')
60
60
  * ])
61
- * .executeTakeFirst()
61
+ * .executeTakeFirstOrThrow()
62
62
  * ```
63
63
  */
64
64
  returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
@@ -67,6 +67,8 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
67
67
  /**
68
68
  * Adds a `returning *` to an insert/update/delete query on databases
69
69
  * that support `returning` such as PostgreSQL.
70
+ *
71
+ * Also see the {@link returning} method.
70
72
  */
71
73
  returningAll(): ReturningInterface<DB, TB, Selectable<DB[TB]>>;
72
74
  }
@@ -5,11 +5,19 @@ export interface SelectQueryBuilderExpression<O> extends AliasableExpression<O>
5
5
  /**
6
6
  * Creates the OperationNode that describes how to compile this expression into SQL.
7
7
  *
8
+ * ### Examples
9
+ *
8
10
  * If you are creating a custom expression, it's often easiest to use the {@link sql}
9
11
  * template tag to build the node:
10
12
  *
11
13
  * ```ts
14
+ * import { type Expression, type OperationNode, sql } from 'kysely'
15
+ *
12
16
  * class SomeExpression<T> implements Expression<T> {
17
+ * get expressionType(): T | undefined {
18
+ * return undefined
19
+ * }
20
+ *
13
21
  * toOperationNode(): OperationNode {
14
22
  * return sql`some sql here`.toOperationNode()
15
23
  * }