kysely 0.24.2 → 0.26.0

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 (351) hide show
  1. package/README.md +31 -567
  2. package/dist/cjs/dialect/database-introspector.d.ts +1 -1
  3. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +5 -1
  5. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -1
  7. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
  8. package/dist/cjs/driver/database-connection.d.ts +6 -0
  9. package/dist/cjs/driver/driver.d.ts +1 -1
  10. package/dist/cjs/driver/runtime-driver.js +6 -6
  11. package/dist/cjs/dynamic/dynamic.d.ts +1 -1
  12. package/dist/cjs/dynamic/dynamic.js +1 -1
  13. package/dist/cjs/expression/expression-builder.d.ts +263 -109
  14. package/dist/cjs/expression/expression-builder.js +38 -7
  15. package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
  16. package/dist/cjs/expression/expression-wrapper.js +70 -2
  17. package/dist/cjs/helpers/mysql.d.ts +3 -3
  18. package/dist/cjs/helpers/mysql.js +2 -2
  19. package/dist/cjs/helpers/postgres.d.ts +31 -19
  20. package/dist/cjs/helpers/postgres.js +30 -18
  21. package/dist/cjs/index.d.ts +10 -0
  22. package/dist/cjs/index.js +10 -0
  23. package/dist/cjs/kysely.d.ts +42 -15
  24. package/dist/cjs/kysely.js +41 -10
  25. package/dist/cjs/migration/file-migration-provider.js +2 -2
  26. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -7
  27. package/dist/cjs/operation-node/aggregate-function-node.js +1 -1
  28. package/dist/cjs/operation-node/alter-column-node.d.ts +3 -5
  29. package/dist/cjs/operation-node/alter-column-node.js +2 -7
  30. package/dist/cjs/operation-node/alter-table-node.d.ts +3 -3
  31. package/dist/cjs/operation-node/alter-table-node.js +1 -2
  32. package/dist/cjs/operation-node/case-node.d.ts +19 -0
  33. package/dist/cjs/operation-node/case-node.js +42 -0
  34. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  36. package/dist/cjs/operation-node/create-index-node.d.ts +4 -3
  37. package/dist/cjs/operation-node/create-index-node.js +6 -0
  38. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/create-table-node.d.ts +2 -2
  40. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/create-view-node.d.ts +1 -1
  42. package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
  43. package/dist/cjs/operation-node/drop-constraint-node.d.ts +1 -1
  44. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
  45. package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
  47. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  48. package/dist/cjs/operation-node/drop-view-node.d.ts +1 -1
  49. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
  50. package/dist/cjs/operation-node/generated-node.d.ts +1 -1
  51. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/join-node.d.ts +1 -2
  53. package/dist/cjs/operation-node/join-node.js +0 -8
  54. package/dist/cjs/operation-node/json-operator-chain-node.d.ts +16 -0
  55. package/dist/cjs/operation-node/json-operator-chain-node.js +25 -0
  56. package/dist/cjs/operation-node/json-path-leg-node.d.ts +14 -0
  57. package/dist/cjs/operation-node/json-path-leg-node.js +19 -0
  58. package/dist/cjs/operation-node/json-path-node.d.ts +16 -0
  59. package/dist/cjs/operation-node/json-path-node.js +25 -0
  60. package/dist/cjs/operation-node/json-reference-node.d.ts +17 -0
  61. package/dist/cjs/operation-node/json-reference-node.js +25 -0
  62. package/dist/cjs/operation-node/on-conflict-node.d.ts +1 -1
  63. package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +1 -1
  64. package/dist/cjs/operation-node/operation-node-transformer.d.ts +12 -0
  65. package/dist/cjs/operation-node/operation-node-transformer.js +53 -3
  66. package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -0
  67. package/dist/cjs/operation-node/operation-node-visitor.js +6 -0
  68. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  69. package/dist/cjs/operation-node/operator-node.d.ts +13 -9
  70. package/dist/cjs/operation-node/operator-node.js +12 -2
  71. package/dist/cjs/operation-node/query-node.d.ts +9 -10
  72. package/dist/cjs/operation-node/query-node.js +0 -8
  73. package/dist/cjs/operation-node/reference-node.d.ts +2 -2
  74. package/dist/cjs/operation-node/reference-node.js +1 -1
  75. package/dist/cjs/operation-node/references-node.d.ts +1 -1
  76. package/dist/cjs/operation-node/select-modifier-node.d.ts +1 -1
  77. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  78. package/dist/cjs/operation-node/select-query-node.js +0 -8
  79. package/dist/cjs/operation-node/selection-node.d.ts +1 -1
  80. package/dist/cjs/operation-node/set-operation-node.d.ts +1 -1
  81. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +1 -1
  82. package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
  83. package/dist/cjs/operation-node/values-node.d.ts +1 -1
  84. package/dist/cjs/operation-node/when-node.d.ts +14 -0
  85. package/dist/cjs/operation-node/when-node.js +24 -0
  86. package/dist/cjs/operation-node/with-node.d.ts +1 -1
  87. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -11
  88. package/dist/cjs/parser/binary-operation-parser.js +40 -103
  89. package/dist/cjs/parser/coalesce-parser.d.ts +1 -1
  90. package/dist/cjs/parser/data-type-parser.d.ts +1 -1
  91. package/dist/cjs/parser/default-value-parser.d.ts +1 -1
  92. package/dist/cjs/parser/expression-parser.d.ts +6 -5
  93. package/dist/cjs/parser/group-by-parser.d.ts +2 -2
  94. package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
  95. package/dist/cjs/parser/join-parser.d.ts +4 -4
  96. package/dist/cjs/parser/order-by-parser.d.ts +4 -3
  97. package/dist/cjs/parser/order-by-parser.js +5 -1
  98. package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
  99. package/dist/cjs/parser/reference-parser.d.ts +16 -8
  100. package/dist/cjs/parser/reference-parser.js +43 -16
  101. package/dist/cjs/parser/returning-parser.d.ts +2 -2
  102. package/dist/cjs/parser/select-parser.d.ts +9 -9
  103. package/dist/cjs/parser/table-parser.d.ts +14 -13
  104. package/dist/cjs/parser/unary-operation-parser.d.ts +1 -1
  105. package/dist/cjs/parser/update-set-parser.d.ts +3 -3
  106. package/dist/cjs/parser/update-set-parser.js +1 -3
  107. package/dist/cjs/parser/value-parser.d.ts +4 -4
  108. package/dist/cjs/parser/with-parser.d.ts +14 -9
  109. package/dist/cjs/plugin/camel-case/camel-case.d.ts +1 -1
  110. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  111. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +32 -0
  112. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +22 -6
  113. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -38
  114. package/dist/cjs/query-builder/aggregate-function-builder.js +4 -59
  115. package/dist/cjs/query-builder/case-builder.d.ts +111 -0
  116. package/dist/cjs/query-builder/case-builder.js +75 -0
  117. package/dist/cjs/query-builder/delete-query-builder.d.ts +130 -63
  118. package/dist/cjs/query-builder/delete-query-builder.js +42 -59
  119. package/dist/cjs/query-builder/delete-result.d.ts +1 -2
  120. package/dist/cjs/query-builder/delete-result.js +2 -8
  121. package/dist/cjs/query-builder/function-module.d.ts +78 -69
  122. package/dist/cjs/query-builder/function-module.js +12 -16
  123. package/dist/cjs/query-builder/having-interface.d.ts +2 -35
  124. package/dist/cjs/query-builder/insert-query-builder.d.ts +99 -47
  125. package/dist/cjs/query-builder/insert-query-builder.js +57 -26
  126. package/dist/cjs/query-builder/insert-result.d.ts +3 -4
  127. package/dist/cjs/query-builder/insert-result.js +5 -14
  128. package/dist/cjs/query-builder/join-builder.d.ts +2 -35
  129. package/dist/cjs/query-builder/join-builder.js +1 -56
  130. package/dist/cjs/query-builder/json-path-builder.d.ts +212 -0
  131. package/dist/cjs/query-builder/json-path-builder.js +191 -0
  132. package/dist/cjs/query-builder/no-result-error.d.ts +1 -1
  133. package/dist/cjs/query-builder/on-conflict-builder.d.ts +144 -73
  134. package/dist/cjs/query-builder/on-conflict-builder.js +2 -111
  135. package/dist/cjs/query-builder/over-builder.d.ts +2 -2
  136. package/dist/cjs/query-builder/over-builder.js +1 -1
  137. package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
  138. package/dist/cjs/query-builder/select-query-builder.d.ts +184 -138
  139. package/dist/cjs/query-builder/select-query-builder.js +64 -130
  140. package/dist/cjs/query-builder/update-query-builder.d.ts +143 -71
  141. package/dist/cjs/query-builder/update-query-builder.js +47 -60
  142. package/dist/cjs/query-builder/update-result.d.ts +3 -3
  143. package/dist/cjs/query-builder/update-result.js +5 -9
  144. package/dist/cjs/query-builder/where-interface.d.ts +73 -38
  145. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  146. package/dist/cjs/query-compiler/compiled-query.js +2 -2
  147. package/dist/cjs/query-compiler/default-query-compiler.d.ts +12 -0
  148. package/dist/cjs/query-compiler/default-query-compiler.js +67 -5
  149. package/dist/cjs/query-compiler/query-compiler.d.ts +1 -1
  150. package/dist/cjs/query-creator.d.ts +4 -2
  151. package/dist/cjs/schema/alter-column-builder.d.ts +13 -7
  152. package/dist/cjs/schema/alter-column-builder.js +20 -22
  153. package/dist/cjs/schema/alter-table-builder.d.ts +0 -4
  154. package/dist/cjs/schema/alter-table-builder.js +2 -9
  155. package/dist/cjs/schema/column-definition-builder.d.ts +1 -1
  156. package/dist/cjs/schema/column-definition-builder.js +1 -2
  157. package/dist/cjs/schema/create-index-builder.d.ts +49 -7
  158. package/dist/cjs/schema/create-index-builder.js +52 -14
  159. package/dist/cjs/schema/create-table-builder.d.ts +2 -6
  160. package/dist/cjs/schema/create-table-builder.js +0 -6
  161. package/dist/cjs/schema/schema.d.ts +1 -2
  162. package/dist/cjs/schema/schema.js +2 -3
  163. package/dist/cjs/util/column-type.d.ts +21 -16
  164. package/dist/cjs/util/explainable.d.ts +1 -1
  165. package/dist/cjs/util/infer-result.d.ts +2 -2
  166. package/dist/cjs/util/log.d.ts +6 -6
  167. package/dist/cjs/util/log.js +4 -4
  168. package/dist/cjs/util/object-utils.d.ts +2 -1
  169. package/dist/cjs/util/require-all-props.d.ts +1 -1
  170. package/dist/cjs/util/type-utils.d.ts +54 -40
  171. package/dist/esm/dialect/database-introspector.d.ts +1 -1
  172. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -1
  173. package/dist/esm/dialect/mysql/mysql-driver.js +5 -1
  174. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  175. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
  176. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
  177. package/dist/esm/driver/database-connection.d.ts +6 -0
  178. package/dist/esm/driver/driver.d.ts +1 -1
  179. package/dist/esm/driver/runtime-driver.js +6 -6
  180. package/dist/esm/dynamic/dynamic.d.ts +1 -1
  181. package/dist/esm/dynamic/dynamic.js +1 -1
  182. package/dist/esm/expression/expression-builder.d.ts +263 -109
  183. package/dist/esm/expression/expression-builder.js +40 -9
  184. package/dist/esm/expression/expression-wrapper.d.ts +296 -5
  185. package/dist/esm/expression/expression-wrapper.js +67 -1
  186. package/dist/esm/helpers/mysql.d.ts +3 -3
  187. package/dist/esm/helpers/mysql.js +2 -2
  188. package/dist/esm/helpers/postgres.d.ts +31 -19
  189. package/dist/esm/helpers/postgres.js +30 -18
  190. package/dist/esm/index.d.ts +10 -0
  191. package/dist/esm/index.js +10 -0
  192. package/dist/esm/kysely.d.ts +42 -15
  193. package/dist/esm/kysely.js +42 -11
  194. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -7
  195. package/dist/esm/operation-node/aggregate-function-node.js +1 -1
  196. package/dist/esm/operation-node/alter-column-node.d.ts +3 -5
  197. package/dist/esm/operation-node/alter-column-node.js +2 -7
  198. package/dist/esm/operation-node/alter-table-node.d.ts +3 -3
  199. package/dist/esm/operation-node/alter-table-node.js +1 -2
  200. package/dist/esm/operation-node/case-node.d.ts +19 -0
  201. package/dist/esm/operation-node/case-node.js +40 -0
  202. package/dist/esm/operation-node/column-definition-node.d.ts +1 -1
  203. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  204. package/dist/esm/operation-node/create-index-node.d.ts +4 -3
  205. package/dist/esm/operation-node/create-index-node.js +6 -0
  206. package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
  207. package/dist/esm/operation-node/create-table-node.d.ts +2 -2
  208. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  209. package/dist/esm/operation-node/create-view-node.d.ts +1 -1
  210. package/dist/esm/operation-node/data-type-node.d.ts +2 -2
  211. package/dist/esm/operation-node/drop-constraint-node.d.ts +1 -1
  212. package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
  213. package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
  214. package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
  215. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  216. package/dist/esm/operation-node/drop-view-node.d.ts +1 -1
  217. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
  218. package/dist/esm/operation-node/generated-node.d.ts +1 -1
  219. package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
  220. package/dist/esm/operation-node/join-node.d.ts +1 -2
  221. package/dist/esm/operation-node/join-node.js +0 -8
  222. package/dist/esm/operation-node/json-operator-chain-node.d.ts +16 -0
  223. package/dist/esm/operation-node/json-operator-chain-node.js +23 -0
  224. package/dist/esm/operation-node/json-path-leg-node.d.ts +14 -0
  225. package/dist/esm/operation-node/json-path-leg-node.js +17 -0
  226. package/dist/esm/operation-node/json-path-node.d.ts +16 -0
  227. package/dist/esm/operation-node/json-path-node.js +23 -0
  228. package/dist/esm/operation-node/json-reference-node.d.ts +17 -0
  229. package/dist/esm/operation-node/json-reference-node.js +23 -0
  230. package/dist/esm/operation-node/on-conflict-node.d.ts +1 -1
  231. package/dist/esm/operation-node/on-duplicate-key-node.d.ts +1 -1
  232. package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -0
  233. package/dist/esm/operation-node/operation-node-transformer.js +53 -3
  234. package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -0
  235. package/dist/esm/operation-node/operation-node-visitor.js +6 -0
  236. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  237. package/dist/esm/operation-node/operator-node.d.ts +13 -9
  238. package/dist/esm/operation-node/operator-node.js +10 -1
  239. package/dist/esm/operation-node/query-node.d.ts +9 -10
  240. package/dist/esm/operation-node/query-node.js +0 -8
  241. package/dist/esm/operation-node/reference-node.d.ts +2 -2
  242. package/dist/esm/operation-node/reference-node.js +1 -1
  243. package/dist/esm/operation-node/references-node.d.ts +1 -1
  244. package/dist/esm/operation-node/select-modifier-node.d.ts +1 -1
  245. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  246. package/dist/esm/operation-node/select-query-node.js +0 -8
  247. package/dist/esm/operation-node/selection-node.d.ts +1 -1
  248. package/dist/esm/operation-node/set-operation-node.d.ts +1 -1
  249. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +1 -1
  250. package/dist/esm/operation-node/update-query-node.d.ts +1 -1
  251. package/dist/esm/operation-node/values-node.d.ts +1 -1
  252. package/dist/esm/operation-node/when-node.d.ts +14 -0
  253. package/dist/esm/operation-node/when-node.js +22 -0
  254. package/dist/esm/operation-node/with-node.d.ts +1 -1
  255. package/dist/esm/parser/binary-operation-parser.d.ts +9 -11
  256. package/dist/esm/parser/binary-operation-parser.js +38 -99
  257. package/dist/esm/parser/coalesce-parser.d.ts +1 -1
  258. package/dist/esm/parser/data-type-parser.d.ts +1 -1
  259. package/dist/esm/parser/default-value-parser.d.ts +1 -1
  260. package/dist/esm/parser/expression-parser.d.ts +6 -5
  261. package/dist/esm/parser/group-by-parser.d.ts +2 -2
  262. package/dist/esm/parser/insert-values-parser.d.ts +4 -4
  263. package/dist/esm/parser/join-parser.d.ts +4 -4
  264. package/dist/esm/parser/order-by-parser.d.ts +4 -3
  265. package/dist/esm/parser/order-by-parser.js +3 -0
  266. package/dist/esm/parser/partition-by-parser.d.ts +2 -2
  267. package/dist/esm/parser/reference-parser.d.ts +16 -8
  268. package/dist/esm/parser/reference-parser.js +40 -15
  269. package/dist/esm/parser/returning-parser.d.ts +2 -2
  270. package/dist/esm/parser/select-parser.d.ts +9 -9
  271. package/dist/esm/parser/table-parser.d.ts +14 -13
  272. package/dist/esm/parser/unary-operation-parser.d.ts +1 -1
  273. package/dist/esm/parser/update-set-parser.d.ts +3 -3
  274. package/dist/esm/parser/update-set-parser.js +2 -4
  275. package/dist/esm/parser/value-parser.d.ts +4 -4
  276. package/dist/esm/parser/with-parser.d.ts +14 -9
  277. package/dist/esm/plugin/camel-case/camel-case.d.ts +1 -1
  278. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  279. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +29 -0
  280. package/dist/esm/plugin/with-schema/with-schema-transformer.js +22 -6
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -38
  282. package/dist/esm/query-builder/aggregate-function-builder.js +5 -60
  283. package/dist/esm/query-builder/case-builder.d.ts +111 -0
  284. package/dist/esm/query-builder/case-builder.js +69 -0
  285. package/dist/esm/query-builder/delete-query-builder.d.ts +130 -63
  286. package/dist/esm/query-builder/delete-query-builder.js +43 -60
  287. package/dist/esm/query-builder/delete-result.d.ts +1 -2
  288. package/dist/esm/query-builder/delete-result.js +2 -8
  289. package/dist/esm/query-builder/function-module.d.ts +78 -69
  290. package/dist/esm/query-builder/function-module.js +13 -17
  291. package/dist/esm/query-builder/having-interface.d.ts +2 -35
  292. package/dist/esm/query-builder/insert-query-builder.d.ts +99 -47
  293. package/dist/esm/query-builder/insert-query-builder.js +57 -26
  294. package/dist/esm/query-builder/insert-result.d.ts +3 -4
  295. package/dist/esm/query-builder/insert-result.js +5 -14
  296. package/dist/esm/query-builder/join-builder.d.ts +2 -35
  297. package/dist/esm/query-builder/join-builder.js +2 -57
  298. package/dist/esm/query-builder/json-path-builder.d.ts +212 -0
  299. package/dist/esm/query-builder/json-path-builder.js +186 -0
  300. package/dist/esm/query-builder/no-result-error.d.ts +1 -1
  301. package/dist/esm/query-builder/on-conflict-builder.d.ts +144 -73
  302. package/dist/esm/query-builder/on-conflict-builder.js +3 -112
  303. package/dist/esm/query-builder/over-builder.d.ts +2 -2
  304. package/dist/esm/query-builder/over-builder.js +1 -1
  305. package/dist/esm/query-builder/returning-interface.d.ts +1 -1
  306. package/dist/esm/query-builder/select-query-builder.d.ts +184 -138
  307. package/dist/esm/query-builder/select-query-builder.js +65 -131
  308. package/dist/esm/query-builder/update-query-builder.d.ts +143 -71
  309. package/dist/esm/query-builder/update-query-builder.js +48 -61
  310. package/dist/esm/query-builder/update-result.d.ts +3 -3
  311. package/dist/esm/query-builder/update-result.js +5 -9
  312. package/dist/esm/query-builder/where-interface.d.ts +73 -38
  313. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  314. package/dist/esm/query-compiler/compiled-query.js +2 -2
  315. package/dist/esm/query-compiler/default-query-compiler.d.ts +12 -0
  316. package/dist/esm/query-compiler/default-query-compiler.js +67 -5
  317. package/dist/esm/query-compiler/query-compiler.d.ts +1 -1
  318. package/dist/esm/query-creator.d.ts +4 -2
  319. package/dist/esm/schema/alter-column-builder.d.ts +13 -7
  320. package/dist/esm/schema/alter-column-builder.js +20 -22
  321. package/dist/esm/schema/alter-table-builder.d.ts +0 -4
  322. package/dist/esm/schema/alter-table-builder.js +2 -9
  323. package/dist/esm/schema/column-definition-builder.d.ts +1 -1
  324. package/dist/esm/schema/column-definition-builder.js +1 -2
  325. package/dist/esm/schema/create-index-builder.d.ts +49 -7
  326. package/dist/esm/schema/create-index-builder.js +54 -16
  327. package/dist/esm/schema/create-table-builder.d.ts +2 -6
  328. package/dist/esm/schema/create-table-builder.js +0 -6
  329. package/dist/esm/schema/schema.d.ts +1 -2
  330. package/dist/esm/schema/schema.js +2 -3
  331. package/dist/esm/util/column-type.d.ts +21 -16
  332. package/dist/esm/util/explainable.d.ts +1 -1
  333. package/dist/esm/util/infer-result.d.ts +2 -2
  334. package/dist/esm/util/log.d.ts +6 -6
  335. package/dist/esm/util/log.js +4 -4
  336. package/dist/esm/util/object-utils.d.ts +2 -1
  337. package/dist/esm/util/require-all-props.d.ts +1 -1
  338. package/dist/esm/util/type-utils.d.ts +54 -40
  339. package/package.json +25 -23
  340. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  341. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +0 -2
  342. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  343. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +0 -2
  344. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  345. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +0 -2
  346. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  347. package/dist/esm/query-builder/deprecated-having-expression-builder.js +0 -2
  348. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  349. package/dist/esm/query-builder/deprecated-on-expression-builder.js +0 -2
  350. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  351. package/dist/esm/query-builder/deprecated-where-expression-builder.js +0 -2
@@ -5,13 +5,23 @@ const sql_js_1 = require("../raw-builder/sql.js");
5
5
  /**
6
6
  * A postgres helper for aggregating a subquery (or other expression) into a JSONB array.
7
7
  *
8
- * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
9
- * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
10
- * may not parse the nested results into arrays.
11
- *
12
8
  * ### Examples
13
9
  *
10
+ * <!-- siteExample("select", "Nested array", 110) -->
11
+ *
12
+ * While kysely is not an ORM and it doesn't have the concept of relations, we do provide
13
+ * helpers for fetching nested objects and arrays in a single query. In this example we
14
+ * use the `jsonArrayFrom` helper to fetch person's pets along with the person's id.
15
+ *
16
+ * Please keep in mind that the helpers under the `kysely/helpers` folder, including
17
+ * `jsonArrayFrom`, are not guaranteed to work with third party dialects. In order for
18
+ * them to work, the dialect must automatically parse the `json` data type into
19
+ * javascript JSON values like objects and arrays. Some dialects might simply return
20
+ * the data as a JSON string.
21
+ *
14
22
  * ```ts
23
+ * import { jsonArrayFrom } from 'kysely/helpers/postgres'
24
+ *
15
25
  * const result = await db
16
26
  * .selectFrom('person')
17
27
  * .select((eb) => [
@@ -19,15 +29,11 @@ const sql_js_1 = require("../raw-builder/sql.js");
19
29
  * jsonArrayFrom(
20
30
  * eb.selectFrom('pet')
21
31
  * .select(['pet.id as pet_id', 'pet.name'])
22
- * .where('pet.owner_id', '=', 'person.id')
32
+ * .whereRef('pet.owner_id', '=', 'person.id')
23
33
  * .orderBy('pet.name')
24
34
  * ).as('pets')
25
35
  * ])
26
36
  * .execute()
27
- *
28
- * result[0].id
29
- * result[0].pets[0].pet_id
30
- * result[0].pets[0].name
31
37
  * ```
32
38
  *
33
39
  * The generated SQL (PostgreSQL):
@@ -53,13 +59,23 @@ exports.jsonArrayFrom = jsonArrayFrom;
53
59
  *
54
60
  * The subquery must only return one row.
55
61
  *
56
- * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
57
- * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
58
- * may not parse the nested results into objects.
59
- *
60
62
  * ### Examples
61
63
  *
64
+ * <!-- siteExample("select", "Nested object", 120) -->
65
+ *
66
+ * While kysely is not an ORM and it doesn't have the concept of relations, we do provide
67
+ * helpers for fetching nested objects and arrays in a single query. In this example we
68
+ * use the `jsonObjectFrom` helper to fetch person's favorite pet along with the person's id.
69
+ *
70
+ * Please keep in mind that the helpers under the `kysely/helpers` folder, including
71
+ * `jsonObjectFrom`, are not guaranteed to work with third party dialects. In order for
72
+ * them to work, the dialect must automatically parse the `json` data type into
73
+ * javascript JSON values like objects and arrays. Some dialects might simply return
74
+ * the data as a JSON string.
75
+ *
62
76
  * ```ts
77
+ * import { jsonObjectFrom } from 'kysely/helpers/postgres'
78
+ *
63
79
  * const result = await db
64
80
  * .selectFrom('person')
65
81
  * .select((eb) => [
@@ -67,15 +83,11 @@ exports.jsonArrayFrom = jsonArrayFrom;
67
83
  * jsonObjectFrom(
68
84
  * eb.selectFrom('pet')
69
85
  * .select(['pet.id as pet_id', 'pet.name'])
70
- * .where('pet.owner_id', '=', 'person.id')
86
+ * .whereRef('pet.owner_id', '=', 'person.id')
71
87
  * .where('pet.is_favorite', '=', true)
72
88
  * ).as('favorite_pet')
73
89
  * ])
74
90
  * .execute()
75
- *
76
- * result[0].id
77
- * result[0].favorite_pet.pet_id
78
- * result[0].favorite_pet.name
79
91
  * ```
80
92
  *
81
93
  * The generated SQL (PostgreSQL):
@@ -2,6 +2,7 @@ export * from './kysely.js';
2
2
  export * from './query-creator.js';
3
3
  export * from './expression/expression.js';
4
4
  export { ExpressionBuilder, expressionBuilder, } from './expression/expression-builder.js';
5
+ export * from './expression/expression-wrapper.js';
5
6
  export * from './query-builder/where-interface.js';
6
7
  export * from './query-builder/returning-interface.js';
7
8
  export * from './query-builder/having-interface.js';
@@ -17,6 +18,8 @@ export * from './query-builder/delete-result.js';
17
18
  export * from './query-builder/update-result.js';
18
19
  export * from './query-builder/on-conflict-builder.js';
19
20
  export * from './query-builder/aggregate-function-builder.js';
21
+ export * from './query-builder/case-builder.js';
22
+ export * from './query-builder/json-path-builder.js';
20
23
  export * from './raw-builder/raw-builder.js';
21
24
  export * from './raw-builder/sql.js';
22
25
  export * from './query-executor/query-executor.js';
@@ -77,12 +80,14 @@ export * from './plugin/kysely-plugin.js';
77
80
  export * from './plugin/camel-case/camel-case-plugin.js';
78
81
  export * from './plugin/deduplicate-joins/deduplicate-joins-plugin.js';
79
82
  export * from './plugin/with-schema/with-schema-plugin.js';
83
+ export * from './plugin/parse-json-results/parse-json-results-plugin.js';
80
84
  export * from './operation-node/add-column-node.js';
81
85
  export * from './operation-node/add-constraint-node.js';
82
86
  export * from './operation-node/alias-node.js';
83
87
  export * from './operation-node/alter-column-node.js';
84
88
  export * from './operation-node/alter-table-node.js';
85
89
  export * from './operation-node/and-node.js';
90
+ export * from './operation-node/case-node.js';
86
91
  export * from './operation-node/check-constraint-node.js';
87
92
  export * from './operation-node/column-definition-node.js';
88
93
  export * from './operation-node/column-node.js';
@@ -148,6 +153,7 @@ export * from './operation-node/update-query-node.js';
148
153
  export * from './operation-node/value-list-node.js';
149
154
  export * from './operation-node/value-node.js';
150
155
  export * from './operation-node/values-node.js';
156
+ export * from './operation-node/when-node.js';
151
157
  export * from './operation-node/where-node.js';
152
158
  export * from './operation-node/with-node.js';
153
159
  export * from './operation-node/explain-node.js';
@@ -160,6 +166,10 @@ export * from './operation-node/set-operation-node.js';
160
166
  export * from './operation-node/binary-operation-node.js';
161
167
  export * from './operation-node/unary-operation-node.js';
162
168
  export * from './operation-node/using-node.js';
169
+ export * from './operation-node/json-reference-node.js';
170
+ export * from './operation-node/json-path-leg-node.js';
171
+ export * from './operation-node/json-path-node.js';
172
+ export * from './operation-node/json-operator-chain-node.js';
163
173
  export * from './util/column-type.js';
164
174
  export * from './util/compilable.js';
165
175
  export * from './util/explainable.js';
package/dist/cjs/index.js CHANGED
@@ -20,6 +20,7 @@ __exportStar(require("./query-creator.js"), exports);
20
20
  __exportStar(require("./expression/expression.js"), exports);
21
21
  var expression_builder_js_1 = require("./expression/expression-builder.js");
22
22
  Object.defineProperty(exports, "expressionBuilder", { enumerable: true, get: function () { return expression_builder_js_1.expressionBuilder; } });
23
+ __exportStar(require("./expression/expression-wrapper.js"), exports);
23
24
  __exportStar(require("./query-builder/where-interface.js"), exports);
24
25
  __exportStar(require("./query-builder/returning-interface.js"), exports);
25
26
  __exportStar(require("./query-builder/having-interface.js"), exports);
@@ -35,6 +36,8 @@ __exportStar(require("./query-builder/delete-result.js"), exports);
35
36
  __exportStar(require("./query-builder/update-result.js"), exports);
36
37
  __exportStar(require("./query-builder/on-conflict-builder.js"), exports);
37
38
  __exportStar(require("./query-builder/aggregate-function-builder.js"), exports);
39
+ __exportStar(require("./query-builder/case-builder.js"), exports);
40
+ __exportStar(require("./query-builder/json-path-builder.js"), exports);
38
41
  __exportStar(require("./raw-builder/raw-builder.js"), exports);
39
42
  __exportStar(require("./raw-builder/sql.js"), exports);
40
43
  __exportStar(require("./query-executor/query-executor.js"), exports);
@@ -95,12 +98,14 @@ __exportStar(require("./plugin/kysely-plugin.js"), exports);
95
98
  __exportStar(require("./plugin/camel-case/camel-case-plugin.js"), exports);
96
99
  __exportStar(require("./plugin/deduplicate-joins/deduplicate-joins-plugin.js"), exports);
97
100
  __exportStar(require("./plugin/with-schema/with-schema-plugin.js"), exports);
101
+ __exportStar(require("./plugin/parse-json-results/parse-json-results-plugin.js"), exports);
98
102
  __exportStar(require("./operation-node/add-column-node.js"), exports);
99
103
  __exportStar(require("./operation-node/add-constraint-node.js"), exports);
100
104
  __exportStar(require("./operation-node/alias-node.js"), exports);
101
105
  __exportStar(require("./operation-node/alter-column-node.js"), exports);
102
106
  __exportStar(require("./operation-node/alter-table-node.js"), exports);
103
107
  __exportStar(require("./operation-node/and-node.js"), exports);
108
+ __exportStar(require("./operation-node/case-node.js"), exports);
104
109
  __exportStar(require("./operation-node/check-constraint-node.js"), exports);
105
110
  __exportStar(require("./operation-node/column-definition-node.js"), exports);
106
111
  __exportStar(require("./operation-node/column-node.js"), exports);
@@ -166,6 +171,7 @@ __exportStar(require("./operation-node/update-query-node.js"), exports);
166
171
  __exportStar(require("./operation-node/value-list-node.js"), exports);
167
172
  __exportStar(require("./operation-node/value-node.js"), exports);
168
173
  __exportStar(require("./operation-node/values-node.js"), exports);
174
+ __exportStar(require("./operation-node/when-node.js"), exports);
169
175
  __exportStar(require("./operation-node/where-node.js"), exports);
170
176
  __exportStar(require("./operation-node/with-node.js"), exports);
171
177
  __exportStar(require("./operation-node/explain-node.js"), exports);
@@ -178,6 +184,10 @@ __exportStar(require("./operation-node/set-operation-node.js"), exports);
178
184
  __exportStar(require("./operation-node/binary-operation-node.js"), exports);
179
185
  __exportStar(require("./operation-node/unary-operation-node.js"), exports);
180
186
  __exportStar(require("./operation-node/using-node.js"), exports);
187
+ __exportStar(require("./operation-node/json-reference-node.js"), exports);
188
+ __exportStar(require("./operation-node/json-path-leg-node.js"), exports);
189
+ __exportStar(require("./operation-node/json-path-node.js"), exports);
190
+ __exportStar(require("./operation-node/json-operator-chain-node.js"), exports);
181
191
  __exportStar(require("./util/column-type.js"), exports);
182
192
  __exportStar(require("./util/compilable.js"), exports);
183
193
  __exportStar(require("./util/explainable.js"), exports);
@@ -13,6 +13,8 @@ import { QueryResult } from './driver/database-connection.js';
13
13
  import { CompiledQuery } from './query-compiler/compiled-query.js';
14
14
  import { QueryId } from './util/query-id.js';
15
15
  import { Compilable } from './util/compilable.js';
16
+ import { CaseBuilder } from './query-builder/case-builder.js';
17
+ import { Expression } from './expression/expression.js';
16
18
  /**
17
19
  * The main Kysely class.
18
20
  *
@@ -75,21 +77,26 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
75
77
  * Returns a {@link DatabaseIntrospector | database introspector}.
76
78
  */
77
79
  get introspection(): DatabaseIntrospector;
80
+ /**
81
+ * Creates a `case` statement/operator.
82
+ *
83
+ * See {@link ExpressionBuilder.case} for more information.
84
+ */
85
+ case(): CaseBuilder<DB, keyof DB>;
86
+ case<V>(value: Expression<V>): CaseBuilder<DB, keyof DB, V>;
78
87
  /**
79
88
  * Returns a {@link FunctionModule} that can be used to write type safe function
80
89
  * calls.
81
90
  *
82
91
  * ```ts
83
- * const { count } = db.fn
84
- *
85
92
  * await db.selectFrom('person')
86
93
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
87
- * .select([
94
+ * .select((eb) => [
88
95
  * 'person.id',
89
- * count('pet.id').as('pet_count')
96
+ * eb.fn.count('pet.id').as('pet_count')
90
97
  * ])
91
98
  * .groupBy('person.id')
92
- * .having(count('pet.id'), '>', 10)
99
+ * .having((eb) => eb.fn.count('pet.id'), '>', 10)
93
100
  * .execute()
94
101
  * ```
95
102
  *
@@ -120,25 +127,31 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
120
127
  *
121
128
  * ### Examples
122
129
  *
130
+ * <!-- siteExample("transactions", "Simple transaction", 10) -->
131
+ *
132
+ * This example inserts two rows in a transaction. If an error is thrown inside
133
+ * the callback passed to the `execute` method, the transaction is rolled back.
134
+ * Otherwise it's committed.
135
+ *
123
136
  * ```ts
124
137
  * const catto = await db.transaction().execute(async (trx) => {
125
138
  * const jennifer = await trx.insertInto('person')
126
139
  * .values({
127
140
  * first_name: 'Jennifer',
128
141
  * last_name: 'Aniston',
142
+ * age: 40,
129
143
  * })
130
144
  * .returning('id')
131
145
  * .executeTakeFirstOrThrow()
132
146
  *
133
- * await someFunction(trx, jennifer)
134
- *
135
147
  * return await trx.insertInto('pet')
136
148
  * .values({
137
- * user_id: jennifer.id,
149
+ * owner_id: jennifer.id,
138
150
  * name: 'Catto',
139
- * species: 'cat'
151
+ * species: 'cat',
152
+ * is_favorite: false,
140
153
  * })
141
- * .returning('*')
154
+ * .returningAll()
142
155
  * .executeTakeFirst()
143
156
  * })
144
157
  * ```
@@ -180,6 +193,10 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
180
193
  * Returns a copy of this Kysely instance without any plugins.
181
194
  */
182
195
  withoutPlugins(): Kysely<DB>;
196
+ /**
197
+ * @override
198
+ */
199
+ withSchema(schema: string): Kysely<DB>;
183
200
  /**
184
201
  * Returns a copy of this Kysely instance with tables added to its
185
202
  * database type.
@@ -261,25 +278,31 @@ export declare class Transaction<DB> extends Kysely<DB> {
261
278
  *
262
279
  * ### Examples
263
280
  *
281
+ * <!-- siteExample("transactions", "Simple transaction", 10) -->
282
+ *
283
+ * This example inserts two rows in a transaction. If an error is thrown inside
284
+ * the callback passed to the `execute` method, the transaction is rolled back.
285
+ * Otherwise it's committed.
286
+ *
264
287
  * ```ts
265
288
  * const catto = await db.transaction().execute(async (trx) => {
266
289
  * const jennifer = await trx.insertInto('person')
267
290
  * .values({
268
291
  * first_name: 'Jennifer',
269
292
  * last_name: 'Aniston',
293
+ * age: 40,
270
294
  * })
271
295
  * .returning('id')
272
296
  * .executeTakeFirstOrThrow()
273
297
  *
274
- * await someFunction(trx, jennifer)
275
- *
276
298
  * return await trx.insertInto('pet')
277
299
  * .values({
278
- * user_id: jennifer.id,
300
+ * owner_id: jennifer.id,
279
301
  * name: 'Catto',
280
- * species: 'cat'
302
+ * species: 'cat',
303
+ * is_favorite: false,
281
304
  * })
282
- * .returning('*')
305
+ * .returningAll()
283
306
  * .executeTakeFirst()
284
307
  * })
285
308
  * ```
@@ -327,6 +350,10 @@ export declare class Transaction<DB> extends Kysely<DB> {
327
350
  * Returns a copy of this Kysely instance without any plugins.
328
351
  */
329
352
  withoutPlugins(): Transaction<DB>;
353
+ /**
354
+ * @override
355
+ */
356
+ withSchema(schema: string): Transaction<DB>;
330
357
  /**
331
358
  * Returns a copy of this Kysely instance with tables added to its
332
359
  * database type.
@@ -15,6 +15,10 @@ const function_module_js_1 = require("./query-builder/function-module.js");
15
15
  const log_js_1 = require("./util/log.js");
16
16
  const query_id_js_1 = require("./util/query-id.js");
17
17
  const compilable_js_1 = require("./util/compilable.js");
18
+ const case_builder_js_1 = require("./query-builder/case-builder.js");
19
+ const case_node_js_1 = require("./operation-node/case-node.js");
20
+ const expression_parser_js_1 = require("./parser/expression-parser.js");
21
+ const with_schema_plugin_js_1 = require("./plugin/with-schema/with-schema-plugin.js");
18
22
  /**
19
23
  * The main Kysely class.
20
24
  *
@@ -108,21 +112,24 @@ class Kysely extends query_creator_js_1.QueryCreator {
108
112
  get introspection() {
109
113
  return this.#props.dialect.createIntrospector(this.withoutPlugins());
110
114
  }
115
+ case(value) {
116
+ return new case_builder_js_1.CaseBuilder({
117
+ node: case_node_js_1.CaseNode.create((0, object_utils_js_1.isUndefined)(value) ? undefined : (0, expression_parser_js_1.parseExpression)(value)),
118
+ });
119
+ }
111
120
  /**
112
121
  * Returns a {@link FunctionModule} that can be used to write type safe function
113
122
  * calls.
114
123
  *
115
124
  * ```ts
116
- * const { count } = db.fn
117
- *
118
125
  * await db.selectFrom('person')
119
126
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
120
- * .select([
127
+ * .select((eb) => [
121
128
  * 'person.id',
122
- * count('pet.id').as('pet_count')
129
+ * eb.fn.count('pet.id').as('pet_count')
123
130
  * ])
124
131
  * .groupBy('person.id')
125
- * .having(count('pet.id'), '>', 10)
132
+ * .having((eb) => eb.fn.count('pet.id'), '>', 10)
126
133
  * .execute()
127
134
  * ```
128
135
  *
@@ -155,25 +162,31 @@ class Kysely extends query_creator_js_1.QueryCreator {
155
162
  *
156
163
  * ### Examples
157
164
  *
165
+ * <!-- siteExample("transactions", "Simple transaction", 10) -->
166
+ *
167
+ * This example inserts two rows in a transaction. If an error is thrown inside
168
+ * the callback passed to the `execute` method, the transaction is rolled back.
169
+ * Otherwise it's committed.
170
+ *
158
171
  * ```ts
159
172
  * const catto = await db.transaction().execute(async (trx) => {
160
173
  * const jennifer = await trx.insertInto('person')
161
174
  * .values({
162
175
  * first_name: 'Jennifer',
163
176
  * last_name: 'Aniston',
177
+ * age: 40,
164
178
  * })
165
179
  * .returning('id')
166
180
  * .executeTakeFirstOrThrow()
167
181
  *
168
- * await someFunction(trx, jennifer)
169
- *
170
182
  * return await trx.insertInto('pet')
171
183
  * .values({
172
- * user_id: jennifer.id,
184
+ * owner_id: jennifer.id,
173
185
  * name: 'Catto',
174
- * species: 'cat'
186
+ * species: 'cat',
187
+ * is_favorite: false,
175
188
  * })
176
- * .returning('*')
189
+ * .returningAll()
177
190
  * .executeTakeFirst()
178
191
  * })
179
192
  * ```
@@ -229,6 +242,15 @@ class Kysely extends query_creator_js_1.QueryCreator {
229
242
  executor: this.#props.executor.withoutPlugins(),
230
243
  });
231
244
  }
245
+ /**
246
+ * @override
247
+ */
248
+ withSchema(schema) {
249
+ return new Kysely({
250
+ ...this.#props,
251
+ executor: this.#props.executor.withPluginAtFront(new with_schema_plugin_js_1.WithSchemaPlugin(schema)),
252
+ });
253
+ }
232
254
  /**
233
255
  * Returns a copy of this Kysely instance with tables added to its
234
256
  * database type.
@@ -330,6 +352,15 @@ class Transaction extends Kysely {
330
352
  executor: this.#props.executor.withoutPlugins(),
331
353
  });
332
354
  }
355
+ /**
356
+ * @override
357
+ */
358
+ withSchema(schema) {
359
+ return new Transaction({
360
+ ...this.#props,
361
+ executor: this.#props.executor.withPluginAtFront(new with_schema_plugin_js_1.WithSchemaPlugin(schema)),
362
+ });
363
+ }
333
364
  withTables() {
334
365
  return new Transaction({ ...this.#props });
335
366
  }
@@ -31,8 +31,8 @@ class FileMigrationProvider {
31
31
  (fileName.endsWith('.ts') && !fileName.endsWith('.d.ts')) ||
32
32
  fileName.endsWith('.mjs') ||
33
33
  (fileName.endsWith('.mts') && !fileName.endsWith('.d.mts'))) {
34
- const migration = await Promise.resolve().then(() => require(
35
- /* webpackIgnore: true */ this.#props.path.join(this.#props.migrationFolder, fileName)));
34
+ const migration = await Promise.resolve(`${
35
+ /* webpackIgnore: true */ this.#props.path.join(this.#props.migrationFolder, fileName)}`).then(s => require(s));
36
36
  const migrationKey = fileName.substring(0, fileName.lastIndexOf('.'));
37
37
  // Handle esModuleInterop export's `default` prop...
38
38
  if (isMigration(migration?.default)) {
@@ -1,13 +1,10 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { OverNode } from './over-node.js';
3
- import { SelectionNode } from './selection-node.js';
4
- import { SimpleReferenceExpressionNode } from './simple-reference-expression-node.js';
5
3
  import { WhereNode } from './where-node.js';
6
- declare type AggregateFunction = 'avg' | 'count' | 'max' | 'min' | 'sum';
7
4
  export interface AggregateFunctionNode extends OperationNode {
8
5
  readonly kind: 'AggregateFunctionNode';
9
- readonly func: AggregateFunction;
10
- readonly aggregated: SimpleReferenceExpressionNode | SelectionNode;
6
+ readonly func: string;
7
+ readonly aggregated: readonly OperationNode[];
11
8
  readonly distinct?: boolean;
12
9
  readonly filter?: WhereNode;
13
10
  readonly over?: OverNode;
@@ -17,10 +14,9 @@ export interface AggregateFunctionNode extends OperationNode {
17
14
  */
18
15
  export declare const AggregateFunctionNode: Readonly<{
19
16
  is(node: OperationNode): node is AggregateFunctionNode;
20
- create(aggregateFunction: AggregateFunction, aggregated: SimpleReferenceExpressionNode | SelectionNode): AggregateFunctionNode;
17
+ create(aggregateFunction: string, aggregated?: readonly OperationNode[]): AggregateFunctionNode;
21
18
  cloneWithDistinct(aggregateFunctionNode: AggregateFunctionNode): AggregateFunctionNode;
22
19
  cloneWithFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
23
20
  cloneWithOrFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
24
21
  cloneWithOver(aggregateFunctionNode: AggregateFunctionNode, over?: OverNode): AggregateFunctionNode;
25
22
  }>;
26
- export {};
@@ -10,7 +10,7 @@ exports.AggregateFunctionNode = (0, object_utils_js_1.freeze)({
10
10
  is(node) {
11
11
  return node.kind === 'AggregateFunctionNode';
12
12
  },
13
- create(aggregateFunction, aggregated) {
13
+ create(aggregateFunction, aggregated = []) {
14
14
  return (0, object_utils_js_1.freeze)({
15
15
  kind: 'AggregateFunctionNode',
16
16
  func: aggregateFunction,
@@ -1,12 +1,11 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { ColumnNode } from './column-node.js';
3
- import { DataTypeNode } from './data-type-node.js';
4
3
  import { RawNode } from './raw-node.js';
5
- export declare type AlterColumnNodeProps = Omit<AlterColumnNode, 'kind' | 'column'>;
4
+ export type AlterColumnNodeProps = Omit<AlterColumnNode, 'kind' | 'column'>;
6
5
  export interface AlterColumnNode extends OperationNode {
7
6
  readonly kind: 'AlterColumnNode';
8
7
  readonly column: ColumnNode;
9
- readonly dataType?: DataTypeNode;
8
+ readonly dataType?: OperationNode;
10
9
  readonly dataTypeExpression?: RawNode;
11
10
  readonly setDefault?: OperationNode;
12
11
  readonly dropDefault?: true;
@@ -18,6 +17,5 @@ export interface AlterColumnNode extends OperationNode {
18
17
  */
19
18
  export declare const AlterColumnNode: Readonly<{
20
19
  is(node: OperationNode): node is AlterColumnNode;
21
- create(column: string): AlterColumnNode;
22
- cloneWith(node: AlterColumnNode, props: AlterColumnNodeProps): AlterColumnNode;
20
+ create<T extends "dataType" | "dataTypeExpression" | "setDefault" | "dropDefault" | "setNotNull" | "dropNotNull">(column: string, prop: T, value: Required<AlterColumnNodeProps>[T]): AlterColumnNode;
23
21
  }>;
@@ -10,16 +10,11 @@ exports.AlterColumnNode = (0, object_utils_js_1.freeze)({
10
10
  is(node) {
11
11
  return node.kind === 'AlterColumnNode';
12
12
  },
13
- create(column) {
13
+ create(column, prop, value) {
14
14
  return (0, object_utils_js_1.freeze)({
15
15
  kind: 'AlterColumnNode',
16
16
  column: column_node_js_1.ColumnNode.create(column),
17
- });
18
- },
19
- cloneWith(node, props) {
20
- return (0, object_utils_js_1.freeze)({
21
- ...node,
22
- ...props,
17
+ [prop]: value,
23
18
  });
24
19
  },
25
20
  });
@@ -8,8 +8,8 @@ import { AlterColumnNode } from './alter-column-node.js';
8
8
  import { AddConstraintNode } from './add-constraint-node.js';
9
9
  import { DropConstraintNode } from './drop-constraint-node.js';
10
10
  import { ModifyColumnNode } from './modify-column-node.js';
11
- export declare type AlterTableNodeTableProps = Pick<AlterTableNode, 'renameTo' | 'setSchema' | 'addConstraint' | 'dropConstraint'>;
12
- export declare type AlterTableColumnAlterationNode = RenameColumnNode | AddColumnNode | DropColumnNode | AlterColumnNode | ModifyColumnNode;
11
+ export type AlterTableNodeTableProps = Pick<AlterTableNode, 'renameTo' | 'setSchema' | 'addConstraint' | 'dropConstraint'>;
12
+ export type AlterTableColumnAlterationNode = RenameColumnNode | AddColumnNode | DropColumnNode | AlterColumnNode | ModifyColumnNode;
13
13
  export interface AlterTableNode extends OperationNode {
14
14
  readonly kind: 'AlterTableNode';
15
15
  readonly table: TableNode;
@@ -24,7 +24,7 @@ export interface AlterTableNode extends OperationNode {
24
24
  */
25
25
  export declare const AlterTableNode: Readonly<{
26
26
  is(node: OperationNode): node is AlterTableNode;
27
- create(table: string): AlterTableNode;
27
+ create(table: TableNode): AlterTableNode;
28
28
  cloneWithTableProps(node: AlterTableNode, props: AlterTableNodeTableProps): AlterTableNode;
29
29
  cloneWithColumnAlteration(node: AlterTableNode, columnAlteration: AlterTableColumnAlterationNode): AlterTableNode;
30
30
  }>;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AlterTableNode = void 0;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
- const table_node_js_1 = require("./table-node.js");
6
5
  /**
7
6
  * @internal
8
7
  */
@@ -13,7 +12,7 @@ exports.AlterTableNode = (0, object_utils_js_1.freeze)({
13
12
  create(table) {
14
13
  return (0, object_utils_js_1.freeze)({
15
14
  kind: 'AlterTableNode',
16
- table: table_node_js_1.TableNode.create(table),
15
+ table,
17
16
  });
18
17
  },
19
18
  cloneWithTableProps(node, props) {
@@ -0,0 +1,19 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { WhenNode } from './when-node.js';
3
+ export interface CaseNode extends OperationNode {
4
+ readonly kind: 'CaseNode';
5
+ readonly value?: OperationNode;
6
+ readonly when?: ReadonlyArray<WhenNode>;
7
+ readonly else?: OperationNode;
8
+ readonly isStatement?: boolean;
9
+ }
10
+ /**
11
+ * @internal
12
+ */
13
+ export declare const CaseNode: Readonly<{
14
+ is(node: OperationNode): node is CaseNode;
15
+ create(value?: OperationNode): CaseNode;
16
+ cloneWithWhen(caseNode: CaseNode, when: WhenNode): CaseNode;
17
+ cloneWithThen(caseNode: CaseNode, then: OperationNode): CaseNode;
18
+ cloneWith(caseNode: CaseNode, props: Partial<Pick<CaseNode, 'else' | 'isStatement'>>): CaseNode;
19
+ }>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CaseNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const when_node_js_1 = require("./when-node.js");
6
+ /**
7
+ * @internal
8
+ */
9
+ exports.CaseNode = (0, object_utils_js_1.freeze)({
10
+ is(node) {
11
+ return node.kind === 'CaseNode';
12
+ },
13
+ create(value) {
14
+ return (0, object_utils_js_1.freeze)({
15
+ kind: 'CaseNode',
16
+ value,
17
+ });
18
+ },
19
+ cloneWithWhen(caseNode, when) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...caseNode,
22
+ when: (0, object_utils_js_1.freeze)(caseNode.when ? [...caseNode.when, when] : [when]),
23
+ });
24
+ },
25
+ cloneWithThen(caseNode, then) {
26
+ return (0, object_utils_js_1.freeze)({
27
+ ...caseNode,
28
+ when: caseNode.when
29
+ ? (0, object_utils_js_1.freeze)([
30
+ ...caseNode.when.slice(0, -1),
31
+ when_node_js_1.WhenNode.cloneWithResult(caseNode.when[caseNode.when.length - 1], then),
32
+ ])
33
+ : undefined,
34
+ });
35
+ },
36
+ cloneWith(caseNode, props) {
37
+ return (0, object_utils_js_1.freeze)({
38
+ ...caseNode,
39
+ ...props,
40
+ });
41
+ },
42
+ });
@@ -4,7 +4,7 @@ import { DefaultValueNode } from './default-value-node.js';
4
4
  import { GeneratedNode } from './generated-node.js';
5
5
  import { OperationNode } from './operation-node.js';
6
6
  import { ReferencesNode } from './references-node.js';
7
- export declare type ColumnDefinitionNodeProps = Omit<Partial<ColumnDefinitionNode>, 'kind' | 'dataType'>;
7
+ export type ColumnDefinitionNodeProps = Omit<Partial<ColumnDefinitionNode>, 'kind' | 'dataType'>;
8
8
  export interface ColumnDefinitionNode extends OperationNode {
9
9
  readonly kind: 'ColumnDefinitionNode';
10
10
  readonly column: ColumnNode;
@@ -2,4 +2,4 @@ import { CheckConstraintNode } from './check-constraint-node.js';
2
2
  import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
3
3
  import { PrimaryKeyConstraintNode } from './primary-constraint-node.js';
4
4
  import { UniqueConstraintNode } from './unique-constraint-node.js';
5
- export declare type ConstraintNode = PrimaryKeyConstraintNode | UniqueConstraintNode | CheckConstraintNode | ForeignKeyConstraintNode;
5
+ export type ConstraintNode = PrimaryKeyConstraintNode | UniqueConstraintNode | CheckConstraintNode | ForeignKeyConstraintNode;