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
@@ -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/esm/index.js CHANGED
@@ -3,6 +3,7 @@ export * from './kysely.js';
3
3
  export * from './query-creator.js';
4
4
  export * from './expression/expression.js';
5
5
  export { expressionBuilder, } from './expression/expression-builder.js';
6
+ export * from './expression/expression-wrapper.js';
6
7
  export * from './query-builder/where-interface.js';
7
8
  export * from './query-builder/returning-interface.js';
8
9
  export * from './query-builder/having-interface.js';
@@ -18,6 +19,8 @@ export * from './query-builder/delete-result.js';
18
19
  export * from './query-builder/update-result.js';
19
20
  export * from './query-builder/on-conflict-builder.js';
20
21
  export * from './query-builder/aggregate-function-builder.js';
22
+ export * from './query-builder/case-builder.js';
23
+ export * from './query-builder/json-path-builder.js';
21
24
  export * from './raw-builder/raw-builder.js';
22
25
  export * from './raw-builder/sql.js';
23
26
  export * from './query-executor/query-executor.js';
@@ -78,12 +81,14 @@ export * from './plugin/kysely-plugin.js';
78
81
  export * from './plugin/camel-case/camel-case-plugin.js';
79
82
  export * from './plugin/deduplicate-joins/deduplicate-joins-plugin.js';
80
83
  export * from './plugin/with-schema/with-schema-plugin.js';
84
+ export * from './plugin/parse-json-results/parse-json-results-plugin.js';
81
85
  export * from './operation-node/add-column-node.js';
82
86
  export * from './operation-node/add-constraint-node.js';
83
87
  export * from './operation-node/alias-node.js';
84
88
  export * from './operation-node/alter-column-node.js';
85
89
  export * from './operation-node/alter-table-node.js';
86
90
  export * from './operation-node/and-node.js';
91
+ export * from './operation-node/case-node.js';
87
92
  export * from './operation-node/check-constraint-node.js';
88
93
  export * from './operation-node/column-definition-node.js';
89
94
  export * from './operation-node/column-node.js';
@@ -149,6 +154,7 @@ export * from './operation-node/update-query-node.js';
149
154
  export * from './operation-node/value-list-node.js';
150
155
  export * from './operation-node/value-node.js';
151
156
  export * from './operation-node/values-node.js';
157
+ export * from './operation-node/when-node.js';
152
158
  export * from './operation-node/where-node.js';
153
159
  export * from './operation-node/with-node.js';
154
160
  export * from './operation-node/explain-node.js';
@@ -161,6 +167,10 @@ export * from './operation-node/set-operation-node.js';
161
167
  export * from './operation-node/binary-operation-node.js';
162
168
  export * from './operation-node/unary-operation-node.js';
163
169
  export * from './operation-node/using-node.js';
170
+ export * from './operation-node/json-reference-node.js';
171
+ export * from './operation-node/json-path-leg-node.js';
172
+ export * from './operation-node/json-path-node.js';
173
+ export * from './operation-node/json-operator-chain-node.js';
164
174
  export * from './util/column-type.js';
165
175
  export * from './util/compilable.js';
166
176
  export * from './util/explainable.js';
@@ -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.
@@ -4,7 +4,7 @@ import { DynamicModule } from './dynamic/dynamic.js';
4
4
  import { DefaultConnectionProvider } from './driver/default-connection-provider.js';
5
5
  import { QueryCreator } from './query-creator.js';
6
6
  import { DefaultQueryExecutor } from './query-executor/default-query-executor.js';
7
- import { freeze, isObject } from './util/object-utils.js';
7
+ import { freeze, isObject, isUndefined } from './util/object-utils.js';
8
8
  import { RuntimeDriver } from './driver/runtime-driver.js';
9
9
  import { SingleConnectionProvider } from './driver/single-connection-provider.js';
10
10
  import { TRANSACTION_ISOLATION_LEVELS, } from './driver/driver.js';
@@ -13,6 +13,10 @@ import { createFunctionModule, } from './query-builder/function-module.js';
13
13
  import { Log } from './util/log.js';
14
14
  import { createQueryId } from './util/query-id.js';
15
15
  import { isCompilable } from './util/compilable.js';
16
+ import { CaseBuilder } from './query-builder/case-builder.js';
17
+ import { CaseNode } from './operation-node/case-node.js';
18
+ import { parseExpression } from './parser/expression-parser.js';
19
+ import { WithSchemaPlugin } from './plugin/with-schema/with-schema-plugin.js';
16
20
  /**
17
21
  * The main Kysely class.
18
22
  *
@@ -106,21 +110,24 @@ export class Kysely extends QueryCreator {
106
110
  get introspection() {
107
111
  return this.#props.dialect.createIntrospector(this.withoutPlugins());
108
112
  }
113
+ case(value) {
114
+ return new CaseBuilder({
115
+ node: CaseNode.create(isUndefined(value) ? undefined : parseExpression(value)),
116
+ });
117
+ }
109
118
  /**
110
119
  * Returns a {@link FunctionModule} that can be used to write type safe function
111
120
  * calls.
112
121
  *
113
122
  * ```ts
114
- * const { count } = db.fn
115
- *
116
123
  * await db.selectFrom('person')
117
124
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
118
- * .select([
125
+ * .select((eb) => [
119
126
  * 'person.id',
120
- * count('pet.id').as('pet_count')
127
+ * eb.fn.count('pet.id').as('pet_count')
121
128
  * ])
122
129
  * .groupBy('person.id')
123
- * .having(count('pet.id'), '>', 10)
130
+ * .having((eb) => eb.fn.count('pet.id'), '>', 10)
124
131
  * .execute()
125
132
  * ```
126
133
  *
@@ -153,25 +160,31 @@ export class Kysely extends QueryCreator {
153
160
  *
154
161
  * ### Examples
155
162
  *
163
+ * <!-- siteExample("transactions", "Simple transaction", 10) -->
164
+ *
165
+ * This example inserts two rows in a transaction. If an error is thrown inside
166
+ * the callback passed to the `execute` method, the transaction is rolled back.
167
+ * Otherwise it's committed.
168
+ *
156
169
  * ```ts
157
170
  * const catto = await db.transaction().execute(async (trx) => {
158
171
  * const jennifer = await trx.insertInto('person')
159
172
  * .values({
160
173
  * first_name: 'Jennifer',
161
174
  * last_name: 'Aniston',
175
+ * age: 40,
162
176
  * })
163
177
  * .returning('id')
164
178
  * .executeTakeFirstOrThrow()
165
179
  *
166
- * await someFunction(trx, jennifer)
167
- *
168
180
  * return await trx.insertInto('pet')
169
181
  * .values({
170
- * user_id: jennifer.id,
182
+ * owner_id: jennifer.id,
171
183
  * name: 'Catto',
172
- * species: 'cat'
184
+ * species: 'cat',
185
+ * is_favorite: false,
173
186
  * })
174
- * .returning('*')
187
+ * .returningAll()
175
188
  * .executeTakeFirst()
176
189
  * })
177
190
  * ```
@@ -227,6 +240,15 @@ export class Kysely extends QueryCreator {
227
240
  executor: this.#props.executor.withoutPlugins(),
228
241
  });
229
242
  }
243
+ /**
244
+ * @override
245
+ */
246
+ withSchema(schema) {
247
+ return new Kysely({
248
+ ...this.#props,
249
+ executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),
250
+ });
251
+ }
230
252
  /**
231
253
  * Returns a copy of this Kysely instance with tables added to its
232
254
  * database type.
@@ -327,6 +349,15 @@ export class Transaction extends Kysely {
327
349
  executor: this.#props.executor.withoutPlugins(),
328
350
  });
329
351
  }
352
+ /**
353
+ * @override
354
+ */
355
+ withSchema(schema) {
356
+ return new Transaction({
357
+ ...this.#props,
358
+ executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),
359
+ });
360
+ }
330
361
  withTables() {
331
362
  return new Transaction({ ...this.#props });
332
363
  }
@@ -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 {};
@@ -8,7 +8,7 @@ export const AggregateFunctionNode = freeze({
8
8
  is(node) {
9
9
  return node.kind === 'AggregateFunctionNode';
10
10
  },
11
- create(aggregateFunction, aggregated) {
11
+ create(aggregateFunction, aggregated = []) {
12
12
  return freeze({
13
13
  kind: 'AggregateFunctionNode',
14
14
  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
  }>;
@@ -8,16 +8,11 @@ export const AlterColumnNode = freeze({
8
8
  is(node) {
9
9
  return node.kind === 'AlterColumnNode';
10
10
  },
11
- create(column) {
11
+ create(column, prop, value) {
12
12
  return freeze({
13
13
  kind: 'AlterColumnNode',
14
14
  column: ColumnNode.create(column),
15
- });
16
- },
17
- cloneWith(node, props) {
18
- return freeze({
19
- ...node,
20
- ...props,
15
+ [prop]: value,
21
16
  });
22
17
  },
23
18
  });
@@ -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
  }>;
@@ -1,6 +1,5 @@
1
1
  /// <reference types="./alter-table-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
- import { TableNode } from './table-node.js';
4
3
  /**
5
4
  * @internal
6
5
  */
@@ -11,7 +10,7 @@ export const AlterTableNode = freeze({
11
10
  create(table) {
12
11
  return freeze({
13
12
  kind: 'AlterTableNode',
14
- table: TableNode.create(table),
13
+ table,
15
14
  });
16
15
  },
17
16
  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,40 @@
1
+ /// <reference types="./case-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ import { WhenNode } from './when-node.js';
4
+ /**
5
+ * @internal
6
+ */
7
+ export const CaseNode = freeze({
8
+ is(node) {
9
+ return node.kind === 'CaseNode';
10
+ },
11
+ create(value) {
12
+ return freeze({
13
+ kind: 'CaseNode',
14
+ value,
15
+ });
16
+ },
17
+ cloneWithWhen(caseNode, when) {
18
+ return freeze({
19
+ ...caseNode,
20
+ when: freeze(caseNode.when ? [...caseNode.when, when] : [when]),
21
+ });
22
+ },
23
+ cloneWithThen(caseNode, then) {
24
+ return freeze({
25
+ ...caseNode,
26
+ when: caseNode.when
27
+ ? freeze([
28
+ ...caseNode.when.slice(0, -1),
29
+ WhenNode.cloneWithResult(caseNode.when[caseNode.when.length - 1], then),
30
+ ])
31
+ : undefined,
32
+ });
33
+ },
34
+ cloneWith(caseNode, props) {
35
+ return freeze({
36
+ ...caseNode,
37
+ ...props,
38
+ });
39
+ },
40
+ });
@@ -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;
@@ -3,13 +3,13 @@ import { OperationNode } from './operation-node.js';
3
3
  import { RawNode } from './raw-node.js';
4
4
  import { TableNode } from './table-node.js';
5
5
  import { WhereNode } from './where-node.js';
6
- export declare type CreateIndexNodeProps = Omit<CreateIndexNode, 'kind' | 'name'>;
7
- export declare type IndexType = 'btree' | 'hash' | 'gist' | 'gin';
6
+ export type CreateIndexNodeProps = Omit<CreateIndexNode, 'kind' | 'name'>;
7
+ export type IndexType = 'btree' | 'hash' | 'gist' | 'gin';
8
8
  export interface CreateIndexNode extends OperationNode {
9
9
  readonly kind: 'CreateIndexNode';
10
10
  readonly name: IdentifierNode;
11
11
  readonly table?: TableNode;
12
- readonly expression?: OperationNode;
12
+ readonly columns?: OperationNode[];
13
13
  readonly unique?: boolean;
14
14
  readonly using?: RawNode;
15
15
  readonly ifNotExists?: boolean;
@@ -22,4 +22,5 @@ export declare const CreateIndexNode: Readonly<{
22
22
  is(node: OperationNode): node is CreateIndexNode;
23
23
  create(name: string): CreateIndexNode;
24
24
  cloneWith(node: CreateIndexNode, props: CreateIndexNodeProps): CreateIndexNode;
25
+ cloneWithColumns(node: CreateIndexNode, columns: OperationNode[]): CreateIndexNode;
25
26
  }>;
@@ -20,4 +20,10 @@ export const CreateIndexNode = freeze({
20
20
  ...props,
21
21
  });
22
22
  },
23
+ cloneWithColumns(node, columns) {
24
+ return freeze({
25
+ ...node,
26
+ columns: [...(node.columns || []), ...columns],
27
+ });
28
+ },
23
29
  });
@@ -1,6 +1,6 @@
1
1
  import { IdentifierNode } from './identifier-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- export declare type CreateSchemaNodeParams = Omit<Partial<CreateSchemaNode>, 'kind' | 'schema'>;
3
+ export type CreateSchemaNodeParams = Omit<Partial<CreateSchemaNode>, 'kind' | 'schema'>;
4
4
  export interface CreateSchemaNode extends OperationNode {
5
5
  readonly kind: 'CreateSchemaNode';
6
6
  readonly schema: IdentifierNode;
@@ -4,8 +4,8 @@ import { ConstraintNode } from './constraint-node.js';
4
4
  import { ColumnDefinitionNode } from './column-definition-node.js';
5
5
  import { ArrayItemType } from '../util/type-utils.js';
6
6
  export declare const ON_COMMIT_ACTIONS: string[];
7
- export declare type OnCommitAction = ArrayItemType<typeof ON_COMMIT_ACTIONS>;
8
- export declare type CreateTableNodeParams = Omit<CreateTableNode, 'kind' | 'table' | 'columns' | 'constraints' | 'frontModifiers' | 'endModifiers'>;
7
+ export type OnCommitAction = ArrayItemType<typeof ON_COMMIT_ACTIONS>;
8
+ export type CreateTableNodeParams = Omit<CreateTableNode, 'kind' | 'table' | 'columns' | 'constraints' | 'frontModifiers' | 'endModifiers'>;
9
9
  export interface CreateTableNode extends OperationNode {
10
10
  readonly kind: 'CreateTableNode';
11
11
  readonly table: TableNode;
@@ -1,7 +1,7 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { SchemableIdentifierNode } from './schemable-identifier-node.js';
3
3
  import { ValueListNode } from './value-list-node.js';
4
- export declare type CreateTypeNodeParams = Omit<Partial<CreateTypeNode>, 'kind'>;
4
+ export type CreateTypeNodeParams = Omit<Partial<CreateTypeNode>, 'kind'>;
5
5
  export interface CreateTypeNode extends OperationNode {
6
6
  readonly kind: 'CreateTypeNode';
7
7
  readonly name: SchemableIdentifierNode;
@@ -3,7 +3,7 @@ import { OperationNode } from './operation-node.js';
3
3
  import { RawNode } from './raw-node.js';
4
4
  import { SchemableIdentifierNode } from './schemable-identifier-node.js';
5
5
  import { SelectQueryNode } from './select-query-node.js';
6
- export declare type CreateViewNodeParams = Omit<Partial<CreateViewNode>, 'kind' | 'name'>;
6
+ export type CreateViewNodeParams = Omit<Partial<CreateViewNode>, 'kind' | 'name'>;
7
7
  export interface CreateViewNode extends OperationNode {
8
8
  readonly kind: 'CreateViewNode';
9
9
  readonly name: SchemableIdentifierNode;
@@ -1,6 +1,6 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- export declare type ColumnDataType = 'varchar' | `varchar(${number})` | 'text' | 'integer' | 'int2' | 'int4' | 'int8' | 'bigint' | 'boolean' | 'real' | 'double precision' | 'float4' | 'float8' | 'decimal' | `decimal(${number}, ${number})` | 'numeric' | `numeric(${number}, ${number})` | 'binary' | 'date' | 'datetime' | `datetime(${number})` | 'time' | `time(${number})` | 'timetz' | `timetz(${number})` | 'timestamp' | `timestamp(${number})` | 'timestamptz' | `timestamptz(${number})` | 'serial' | 'bigserial' | 'uuid' | 'json' | 'jsonb' | 'blob';
3
- export declare type DataTypeParams = Omit<DataTypeNode, 'kind' | 'dataType'>;
2
+ export type ColumnDataType = 'varchar' | `varchar(${number})` | 'char' | `char(${number})` | 'text' | 'integer' | 'int2' | 'int4' | 'int8' | 'bigint' | 'boolean' | 'real' | 'double precision' | 'float4' | 'float8' | 'decimal' | `decimal(${number}, ${number})` | 'numeric' | `numeric(${number}, ${number})` | 'binary' | `binary(${number})` | 'bytea' | 'date' | 'datetime' | `datetime(${number})` | 'time' | `time(${number})` | 'timetz' | `timetz(${number})` | 'timestamp' | `timestamp(${number})` | 'timestamptz' | `timestamptz(${number})` | 'serial' | 'bigserial' | 'uuid' | 'json' | 'jsonb' | 'blob';
3
+ export type DataTypeParams = Omit<DataTypeNode, 'kind' | 'dataType'>;
4
4
  export interface DataTypeNode extends OperationNode {
5
5
  readonly kind: 'DataTypeNode';
6
6
  readonly dataType: ColumnDataType;
@@ -1,6 +1,6 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { IdentifierNode } from './identifier-node.js';
3
- export declare type DropConstraintNodeProps = Omit<DropConstraintNode, 'kind' | 'constraintName'>;
3
+ export type DropConstraintNodeProps = Omit<DropConstraintNode, 'kind' | 'constraintName'>;
4
4
  export interface DropConstraintNode extends OperationNode {
5
5
  readonly kind: 'DropConstraintNode';
6
6
  readonly constraintName: IdentifierNode;