kysely 0.21.6 → 0.23.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 (380) hide show
  1. package/CONTRIBUTING.md +70 -0
  2. package/README.md +27 -4
  3. package/dist/cjs/dialect/database-introspector.d.ts +4 -0
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +6 -3
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-driver.js +7 -2
  7. package/dist/cjs/dialect/postgres/postgres-introspector.js +8 -0
  8. package/dist/cjs/dialect/sqlite/sqlite-driver.js +4 -3
  9. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
  10. package/dist/cjs/driver/database-connection.d.ts +6 -2
  11. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +2 -3
  12. package/dist/cjs/dynamic/dynamic-reference-builder.js +1 -1
  13. package/dist/cjs/expression/expression.d.ts +100 -0
  14. package/dist/cjs/expression/expression.js +16 -0
  15. package/dist/cjs/index.d.ts +17 -8
  16. package/dist/cjs/index.js +15 -4
  17. package/dist/cjs/kysely.d.ts +3 -3
  18. package/dist/cjs/kysely.js +3 -3
  19. package/dist/cjs/migration/file-migration-provider.js +11 -4
  20. package/dist/cjs/operation-node/aggregate-function-node.d.ts +25 -0
  21. package/dist/cjs/operation-node/aggregate-function-node.js +48 -0
  22. package/dist/cjs/operation-node/alias-node.d.ts +3 -10
  23. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
  24. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
  25. package/dist/cjs/operation-node/alter-table-node.js +9 -1
  26. package/dist/cjs/operation-node/and-node.d.ts +3 -4
  27. package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
  28. package/dist/cjs/operation-node/binary-operation-node.js +20 -0
  29. package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
  30. package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
  31. package/dist/cjs/operation-node/column-definition-node.js +16 -0
  32. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  33. package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
  34. package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
  35. package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
  36. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  37. package/dist/cjs/operation-node/create-type-node.js +1 -2
  38. package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
  39. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
  40. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/drop-type-node.js +1 -2
  42. package/dist/cjs/operation-node/explain-node.d.ts +2 -4
  43. package/dist/cjs/operation-node/explain-node.js +1 -1
  44. package/dist/cjs/operation-node/from-node.d.ts +3 -4
  45. package/dist/cjs/operation-node/generated-node.d.ts +2 -3
  46. package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
  47. package/dist/cjs/operation-node/group-by-node.d.ts +1 -1
  48. package/dist/cjs/operation-node/group-by-node.js +3 -3
  49. package/dist/cjs/operation-node/having-node.d.ts +3 -4
  50. package/dist/cjs/operation-node/having-node.js +4 -4
  51. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -4
  52. package/dist/cjs/operation-node/join-node.d.ts +5 -9
  53. package/dist/cjs/operation-node/join-node.js +6 -6
  54. package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
  55. package/dist/cjs/operation-node/on-conflict-node.js +12 -12
  56. package/dist/cjs/operation-node/on-node.d.ts +3 -4
  57. package/dist/cjs/operation-node/on-node.js +4 -4
  58. package/dist/cjs/operation-node/operation-node-transformer.d.ts +14 -4
  59. package/dist/cjs/operation-node/operation-node-transformer.js +60 -20
  60. package/dist/cjs/operation-node/operation-node-visitor.d.ts +14 -4
  61. package/dist/cjs/operation-node/operation-node-visitor.js +7 -2
  62. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  63. package/dist/cjs/operation-node/operator-node.d.ts +5 -3
  64. package/dist/cjs/operation-node/operator-node.js +3 -5
  65. package/dist/cjs/operation-node/or-node.d.ts +3 -4
  66. package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
  67. package/dist/cjs/operation-node/over-node.d.ts +19 -0
  68. package/dist/cjs/operation-node/over-node.js +35 -0
  69. package/dist/cjs/operation-node/parens-node.d.ts +2 -3
  70. package/dist/cjs/operation-node/partition-by-item-node.d.ts +13 -0
  71. package/dist/cjs/operation-node/{filter-node.js → partition-by-item-node.js} +6 -8
  72. package/dist/cjs/operation-node/partition-by-node.d.ts +14 -0
  73. package/dist/cjs/operation-node/partition-by-node.js +24 -0
  74. package/dist/cjs/operation-node/query-node.d.ts +2 -3
  75. package/dist/cjs/operation-node/query-node.js +6 -6
  76. package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
  77. package/dist/cjs/operation-node/select-modifier-node.js +1 -1
  78. package/dist/cjs/operation-node/select-query-node.d.ts +8 -9
  79. package/dist/cjs/operation-node/select-query-node.js +14 -14
  80. package/dist/cjs/operation-node/selection-node.d.ts +2 -3
  81. package/dist/cjs/operation-node/set-operation-node.d.ts +15 -0
  82. package/dist/cjs/operation-node/{union-node.js → set-operation-node.js} +7 -6
  83. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
  84. package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
  85. package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
  86. package/dist/cjs/operation-node/unary-operation-node.js +19 -0
  87. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  88. package/dist/cjs/operation-node/value-list-node.d.ts +2 -8
  89. package/dist/cjs/operation-node/where-node.d.ts +3 -4
  90. package/dist/cjs/operation-node/where-node.js +4 -4
  91. package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
  92. package/dist/cjs/parser/binary-operation-parser.js +99 -0
  93. package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
  94. package/dist/cjs/parser/coalesce-parser.js +11 -0
  95. package/dist/cjs/parser/data-type-parser.d.ts +5 -5
  96. package/dist/cjs/parser/default-value-parser.d.ts +4 -5
  97. package/dist/cjs/parser/default-value-parser.js +2 -2
  98. package/dist/cjs/parser/expression-parser.d.ts +10 -0
  99. package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
  100. package/dist/cjs/parser/group-by-parser.d.ts +1 -1
  101. package/dist/cjs/parser/group-by-parser.js +2 -2
  102. package/dist/cjs/parser/identifier-parser.d.ts +2 -0
  103. package/dist/cjs/parser/identifier-parser.js +23 -0
  104. package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
  105. package/dist/cjs/parser/insert-values-parser.js +2 -2
  106. package/dist/cjs/parser/join-parser.js +2 -2
  107. package/dist/cjs/parser/order-by-parser.d.ts +2 -2
  108. package/dist/cjs/parser/parse-utils.d.ts +2 -0
  109. package/dist/cjs/parser/parse-utils.js +9 -1
  110. package/dist/cjs/parser/partition-by-parser.d.ts +6 -0
  111. package/dist/cjs/parser/partition-by-parser.js +9 -0
  112. package/dist/cjs/parser/reference-parser.d.ts +14 -13
  113. package/dist/cjs/parser/reference-parser.js +12 -9
  114. package/dist/cjs/parser/select-parser.d.ts +6 -6
  115. package/dist/cjs/parser/select-parser.js +2 -2
  116. package/dist/cjs/parser/set-operation-parser.d.ts +3 -0
  117. package/dist/cjs/parser/set-operation-parser.js +8 -0
  118. package/dist/cjs/parser/table-parser.d.ts +11 -12
  119. package/dist/cjs/parser/table-parser.js +2 -2
  120. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
  121. package/dist/cjs/parser/unary-operation-parser.js +17 -0
  122. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  123. package/dist/cjs/parser/value-parser.d.ts +5 -8
  124. package/dist/cjs/parser/value-parser.js +4 -4
  125. package/dist/cjs/parser/with-parser.d.ts +3 -4
  126. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  127. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +348 -0
  128. package/dist/cjs/query-builder/aggregate-function-builder.js +298 -0
  129. package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
  130. package/dist/cjs/query-builder/delete-query-builder.js +19 -16
  131. package/dist/cjs/query-builder/expression-builder.d.ts +3 -3
  132. package/dist/cjs/query-builder/expression-builder.js +3 -3
  133. package/dist/cjs/query-builder/function-module.d.ts +241 -0
  134. package/dist/cjs/query-builder/function-module.js +214 -0
  135. package/dist/cjs/query-builder/having-interface.d.ts +9 -8
  136. package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
  137. package/dist/cjs/query-builder/insert-query-builder.js +11 -9
  138. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  139. package/dist/cjs/query-builder/insert-result.js +12 -1
  140. package/dist/cjs/query-builder/join-builder.d.ts +9 -8
  141. package/dist/cjs/query-builder/join-builder.js +10 -9
  142. package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
  143. package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
  144. package/dist/cjs/query-builder/over-builder.d.ts +59 -0
  145. package/dist/cjs/query-builder/over-builder.js +50 -0
  146. package/dist/cjs/query-builder/select-query-builder.d.ts +138 -47
  147. package/dist/cjs/query-builder/select-query-builder.js +122 -40
  148. package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
  149. package/dist/cjs/query-builder/update-query-builder.js +19 -16
  150. package/dist/cjs/query-builder/where-interface.d.ts +12 -11
  151. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  152. package/dist/cjs/query-compiler/default-query-compiler.d.ts +15 -5
  153. package/dist/cjs/query-compiler/default-query-compiler.js +78 -47
  154. package/dist/cjs/query-executor/query-executor-base.js +16 -1
  155. package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
  156. package/dist/cjs/raw-builder/raw-builder.js +24 -14
  157. package/dist/cjs/raw-builder/sql.d.ts +15 -7
  158. package/dist/cjs/raw-builder/sql.js +6 -0
  159. package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
  160. package/dist/cjs/schema/alter-column-builder.js +55 -0
  161. package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
  162. package/dist/cjs/schema/alter-table-builder.js +65 -280
  163. package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
  164. package/dist/cjs/schema/column-definition-builder.js +189 -0
  165. package/dist/cjs/schema/create-index-builder.d.ts +2 -2
  166. package/dist/cjs/schema/create-table-builder.d.ts +38 -5
  167. package/dist/cjs/schema/create-table-builder.js +36 -1
  168. package/dist/cjs/schema/create-view-builder.d.ts +3 -2
  169. package/dist/cjs/schema/schema.d.ts +2 -2
  170. package/dist/cjs/schema/schema.js +6 -5
  171. package/dist/cjs/util/compilable.d.ts +2 -2
  172. package/dist/cjs/util/explainable.d.ts +2 -2
  173. package/dist/cjs/util/infer-result.d.ts +46 -0
  174. package/dist/cjs/util/infer-result.js +2 -0
  175. package/dist/cjs/util/log-once.d.ts +5 -0
  176. package/dist/cjs/util/log-once.js +16 -0
  177. package/dist/cjs/util/object-utils.d.ts +1 -0
  178. package/dist/cjs/util/object-utils.js +5 -1
  179. package/dist/cjs/util/type-utils.d.ts +3 -13
  180. package/dist/esm/dialect/database-introspector.d.ts +4 -0
  181. package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
  182. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  183. package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
  184. package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
  185. package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
  186. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  187. package/dist/esm/driver/database-connection.d.ts +6 -2
  188. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
  189. package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
  190. package/dist/esm/expression/expression.d.ts +100 -0
  191. package/dist/esm/expression/expression.js +12 -0
  192. package/dist/esm/index.d.ts +17 -8
  193. package/dist/esm/index.js +13 -4
  194. package/dist/esm/kysely.d.ts +3 -3
  195. package/dist/esm/kysely.js +3 -3
  196. package/dist/esm/migration/file-migration-provider.js +11 -4
  197. package/dist/esm/operation-node/aggregate-function-node.d.ts +25 -0
  198. package/dist/esm/operation-node/aggregate-function-node.js +46 -0
  199. package/dist/esm/operation-node/alias-node.d.ts +3 -10
  200. package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
  201. package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
  202. package/dist/esm/operation-node/alter-table-node.js +9 -1
  203. package/dist/esm/operation-node/and-node.d.ts +3 -4
  204. package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
  205. package/dist/esm/operation-node/binary-operation-node.js +18 -0
  206. package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
  207. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  208. package/dist/esm/operation-node/column-definition-node.js +16 -0
  209. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  210. package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
  211. package/dist/esm/operation-node/create-index-node.d.ts +1 -3
  212. package/dist/esm/operation-node/create-table-node.d.ts +4 -5
  213. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  214. package/dist/esm/operation-node/create-type-node.js +1 -2
  215. package/dist/esm/operation-node/default-value-node.d.ts +2 -4
  216. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  217. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  218. package/dist/esm/operation-node/drop-type-node.js +1 -2
  219. package/dist/esm/operation-node/explain-node.d.ts +2 -4
  220. package/dist/esm/operation-node/explain-node.js +1 -1
  221. package/dist/esm/operation-node/from-node.d.ts +3 -4
  222. package/dist/esm/operation-node/generated-node.d.ts +2 -3
  223. package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
  224. package/dist/esm/operation-node/group-by-node.d.ts +1 -1
  225. package/dist/esm/operation-node/group-by-node.js +3 -3
  226. package/dist/esm/operation-node/having-node.d.ts +3 -4
  227. package/dist/esm/operation-node/having-node.js +4 -4
  228. package/dist/esm/operation-node/insert-query-node.d.ts +1 -4
  229. package/dist/esm/operation-node/join-node.d.ts +5 -9
  230. package/dist/esm/operation-node/join-node.js +6 -6
  231. package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
  232. package/dist/esm/operation-node/on-conflict-node.js +12 -12
  233. package/dist/esm/operation-node/on-node.d.ts +3 -4
  234. package/dist/esm/operation-node/on-node.js +4 -4
  235. package/dist/esm/operation-node/operation-node-transformer.d.ts +14 -4
  236. package/dist/esm/operation-node/operation-node-transformer.js +60 -20
  237. package/dist/esm/operation-node/operation-node-visitor.d.ts +14 -4
  238. package/dist/esm/operation-node/operation-node-visitor.js +7 -2
  239. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  240. package/dist/esm/operation-node/operator-node.d.ts +5 -3
  241. package/dist/esm/operation-node/operator-node.js +2 -4
  242. package/dist/esm/operation-node/or-node.d.ts +3 -4
  243. package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
  244. package/dist/esm/operation-node/over-node.d.ts +19 -0
  245. package/dist/esm/operation-node/over-node.js +33 -0
  246. package/dist/esm/operation-node/parens-node.d.ts +2 -3
  247. package/dist/esm/operation-node/partition-by-item-node.d.ts +13 -0
  248. package/dist/esm/operation-node/partition-by-item-node.js +16 -0
  249. package/dist/esm/operation-node/partition-by-node.d.ts +14 -0
  250. package/dist/esm/operation-node/partition-by-node.js +22 -0
  251. package/dist/esm/operation-node/query-node.d.ts +2 -3
  252. package/dist/esm/operation-node/query-node.js +6 -6
  253. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
  254. package/dist/esm/operation-node/select-modifier-node.js +1 -1
  255. package/dist/esm/operation-node/select-query-node.d.ts +8 -9
  256. package/dist/esm/operation-node/select-query-node.js +14 -14
  257. package/dist/esm/operation-node/selection-node.d.ts +2 -3
  258. package/dist/esm/operation-node/set-operation-node.d.ts +15 -0
  259. package/dist/esm/operation-node/set-operation-node.js +18 -0
  260. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
  261. package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
  262. package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
  263. package/dist/esm/operation-node/unary-operation-node.js +17 -0
  264. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  265. package/dist/esm/operation-node/value-list-node.d.ts +2 -8
  266. package/dist/esm/operation-node/where-node.d.ts +3 -4
  267. package/dist/esm/operation-node/where-node.js +4 -4
  268. package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
  269. package/dist/esm/parser/binary-operation-parser.js +92 -0
  270. package/dist/esm/parser/coalesce-parser.d.ts +4 -0
  271. package/dist/esm/parser/coalesce-parser.js +8 -0
  272. package/dist/esm/parser/data-type-parser.d.ts +5 -5
  273. package/dist/esm/parser/default-value-parser.d.ts +4 -5
  274. package/dist/esm/parser/default-value-parser.js +2 -2
  275. package/dist/esm/parser/expression-parser.d.ts +10 -0
  276. package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
  277. package/dist/esm/parser/group-by-parser.d.ts +1 -1
  278. package/dist/esm/parser/group-by-parser.js +2 -2
  279. package/dist/esm/parser/identifier-parser.d.ts +2 -0
  280. package/dist/esm/parser/identifier-parser.js +20 -0
  281. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  282. package/dist/esm/parser/insert-values-parser.js +2 -2
  283. package/dist/esm/parser/join-parser.js +2 -2
  284. package/dist/esm/parser/order-by-parser.d.ts +2 -2
  285. package/dist/esm/parser/parse-utils.d.ts +2 -0
  286. package/dist/esm/parser/parse-utils.js +7 -0
  287. package/dist/esm/parser/partition-by-parser.d.ts +6 -0
  288. package/dist/esm/parser/partition-by-parser.js +6 -0
  289. package/dist/esm/parser/reference-parser.d.ts +14 -13
  290. package/dist/esm/parser/reference-parser.js +10 -8
  291. package/dist/esm/parser/select-parser.d.ts +6 -6
  292. package/dist/esm/parser/select-parser.js +2 -2
  293. package/dist/esm/parser/set-operation-parser.d.ts +3 -0
  294. package/dist/esm/parser/set-operation-parser.js +5 -0
  295. package/dist/esm/parser/table-parser.d.ts +11 -12
  296. package/dist/esm/parser/table-parser.js +2 -2
  297. package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
  298. package/dist/esm/parser/unary-operation-parser.js +13 -0
  299. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  300. package/dist/esm/parser/value-parser.d.ts +5 -8
  301. package/dist/esm/parser/value-parser.js +4 -4
  302. package/dist/esm/parser/with-parser.d.ts +3 -4
  303. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  304. package/dist/esm/query-builder/aggregate-function-builder.d.ts +348 -0
  305. package/dist/esm/query-builder/aggregate-function-builder.js +294 -0
  306. package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
  307. package/dist/esm/query-builder/delete-query-builder.js +19 -16
  308. package/dist/esm/query-builder/expression-builder.d.ts +3 -3
  309. package/dist/esm/query-builder/expression-builder.js +3 -3
  310. package/dist/esm/query-builder/function-module.d.ts +241 -0
  311. package/dist/esm/query-builder/function-module.js +211 -0
  312. package/dist/esm/query-builder/having-interface.d.ts +9 -8
  313. package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
  314. package/dist/esm/query-builder/insert-query-builder.js +11 -9
  315. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  316. package/dist/esm/query-builder/insert-result.js +12 -1
  317. package/dist/esm/query-builder/join-builder.d.ts +9 -8
  318. package/dist/esm/query-builder/join-builder.js +10 -9
  319. package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
  320. package/dist/esm/query-builder/on-conflict-builder.js +18 -17
  321. package/dist/esm/query-builder/over-builder.d.ts +59 -0
  322. package/dist/esm/query-builder/over-builder.js +47 -0
  323. package/dist/esm/query-builder/select-query-builder.d.ts +138 -47
  324. package/dist/esm/query-builder/select-query-builder.js +120 -38
  325. package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
  326. package/dist/esm/query-builder/update-query-builder.js +19 -16
  327. package/dist/esm/query-builder/where-interface.d.ts +12 -11
  328. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  329. package/dist/esm/query-compiler/default-query-compiler.d.ts +15 -5
  330. package/dist/esm/query-compiler/default-query-compiler.js +79 -48
  331. package/dist/esm/query-executor/query-executor-base.js +16 -1
  332. package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
  333. package/dist/esm/raw-builder/raw-builder.js +23 -14
  334. package/dist/esm/raw-builder/sql.d.ts +15 -7
  335. package/dist/esm/raw-builder/sql.js +6 -0
  336. package/dist/esm/schema/alter-column-builder.d.ts +28 -0
  337. package/dist/esm/schema/alter-column-builder.js +51 -0
  338. package/dist/esm/schema/alter-table-builder.d.ts +39 -341
  339. package/dist/esm/schema/alter-table-builder.js +61 -274
  340. package/dist/esm/schema/column-definition-builder.d.ts +43 -155
  341. package/dist/esm/schema/column-definition-builder.js +189 -0
  342. package/dist/esm/schema/create-index-builder.d.ts +2 -2
  343. package/dist/esm/schema/create-table-builder.d.ts +38 -5
  344. package/dist/esm/schema/create-table-builder.js +36 -1
  345. package/dist/esm/schema/create-view-builder.d.ts +3 -2
  346. package/dist/esm/schema/schema.d.ts +2 -2
  347. package/dist/esm/schema/schema.js +6 -5
  348. package/dist/esm/util/compilable.d.ts +2 -2
  349. package/dist/esm/util/explainable.d.ts +2 -2
  350. package/dist/esm/util/infer-result.d.ts +46 -0
  351. package/dist/esm/util/infer-result.js +2 -0
  352. package/dist/esm/util/log-once.d.ts +5 -0
  353. package/dist/esm/util/log-once.js +13 -0
  354. package/dist/esm/util/object-utils.d.ts +1 -0
  355. package/dist/esm/util/object-utils.js +3 -0
  356. package/dist/esm/util/type-utils.d.ts +3 -13
  357. package/package.json +4 -1
  358. package/dist/cjs/operation-node/filter-node.d.ts +0 -18
  359. package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -17
  360. package/dist/cjs/operation-node/union-node.d.ts +0 -16
  361. package/dist/cjs/parser/complex-expression-parser.d.ts +0 -10
  362. package/dist/cjs/parser/filter-parser.d.ts +0 -24
  363. package/dist/cjs/parser/filter-parser.js +0 -109
  364. package/dist/cjs/parser/union-parser.d.ts +0 -5
  365. package/dist/cjs/parser/union-parser.js +0 -8
  366. package/dist/cjs/query-builder/function-builder.d.ts +0 -133
  367. package/dist/cjs/query-builder/function-builder.js +0 -160
  368. package/dist/esm/operation-node/filter-node.d.ts +0 -18
  369. package/dist/esm/operation-node/filter-node.js +0 -18
  370. package/dist/esm/operation-node/operation-node-utils.d.ts +0 -17
  371. package/dist/esm/operation-node/operation-node-utils.js +0 -2
  372. package/dist/esm/operation-node/union-node.d.ts +0 -16
  373. package/dist/esm/operation-node/union-node.js +0 -17
  374. package/dist/esm/parser/complex-expression-parser.d.ts +0 -10
  375. package/dist/esm/parser/filter-parser.d.ts +0 -24
  376. package/dist/esm/parser/filter-parser.js +0 -100
  377. package/dist/esm/parser/union-parser.d.ts +0 -5
  378. package/dist/esm/parser/union-parser.js +0 -5
  379. package/dist/esm/query-builder/function-builder.d.ts +0 -133
  380. package/dist/esm/query-builder/function-builder.js +0 -157
@@ -1,14 +1,12 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { RawNode } from './raw-node.js';
3
- import { ValueNode } from './value-node.js';
4
2
  export interface DefaultValueNode extends OperationNode {
5
3
  readonly kind: 'DefaultValueNode';
6
- readonly defaultValue: ValueNode | RawNode;
4
+ readonly defaultValue: OperationNode;
7
5
  }
8
6
  /**
9
7
  * @internal
10
8
  */
11
9
  export declare const DefaultValueNode: Readonly<{
12
10
  is(node: OperationNode): node is DefaultValueNode;
13
- create(defaultValue: ValueNode | RawNode): DefaultValueNode;
11
+ create(defaultValue: OperationNode): DefaultValueNode;
14
12
  }>;
@@ -1,7 +1,6 @@
1
1
  import { FromNode } from './from-node.js';
2
2
  import { JoinNode } from './join-node.js';
3
3
  import { OperationNode } from './operation-node.js';
4
- import { TableExpressionNode } from './operation-node-utils.js';
5
4
  import { ReturningNode } from './returning-node.js';
6
5
  import { WhereNode } from './where-node.js';
7
6
  import { WithNode } from './with-node.js';
@@ -25,7 +24,7 @@ export interface DeleteQueryNode extends OperationNode {
25
24
  */
26
25
  export declare const DeleteQueryNode: Readonly<{
27
26
  is(node: OperationNode): node is DeleteQueryNode;
28
- create(fromItem: TableExpressionNode, withNode?: WithNode): DeleteQueryNode;
27
+ create(fromItem: OperationNode, withNode?: WithNode): DeleteQueryNode;
29
28
  cloneWithOrderByItem(deleteNode: DeleteQueryNode, item: OrderByItemNode): DeleteQueryNode;
30
29
  cloneWithLimit(deleteNode: DeleteQueryNode, limit: LimitNode): DeleteQueryNode;
31
30
  cloneWithExplain(deleteNode: DeleteQueryNode, explain: ExplainNode): DeleteQueryNode;
@@ -11,6 +11,6 @@ export interface DropTypeNode extends OperationNode {
11
11
  */
12
12
  export declare const DropTypeNode: Readonly<{
13
13
  is(node: OperationNode): node is DropTypeNode;
14
- create(name: string): DropTypeNode;
14
+ create(name: SchemableIdentifierNode): DropTypeNode;
15
15
  cloneWith(dropType: DropTypeNode, params: DropTypeNodeParams): DropTypeNode;
16
16
  }>;
@@ -1,6 +1,5 @@
1
1
  /// <reference types="./drop-type-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
- import { SchemableIdentifierNode } from './schemable-identifier-node.js';
4
3
  /**
5
4
  * @internal
6
5
  */
@@ -11,7 +10,7 @@ export const DropTypeNode = freeze({
11
10
  create(name) {
12
11
  return freeze({
13
12
  kind: 'DropTypeNode',
14
- name: SchemableIdentifierNode.create(name),
13
+ name,
15
14
  });
16
15
  },
17
16
  cloneWith(dropType, params) {
@@ -1,16 +1,14 @@
1
1
  import { ExplainFormat } from '../util/explainable.js';
2
- import { AnyRawBuilder } from '../util/type-utils.js';
3
2
  import { OperationNode } from './operation-node.js';
4
- import { RawNode } from './raw-node.js';
5
3
  export interface ExplainNode extends OperationNode {
6
4
  readonly kind: 'ExplainNode';
7
5
  readonly format?: ExplainFormat;
8
- readonly options?: RawNode;
6
+ readonly options?: OperationNode;
9
7
  }
10
8
  /**
11
9
  * @internal
12
10
  */
13
11
  export declare const ExplainNode: Readonly<{
14
12
  is(node: OperationNode): node is ExplainNode;
15
- create(format?: ExplainFormat, options?: AnyRawBuilder): ExplainNode;
13
+ create(format?: ExplainFormat, options?: OperationNode): ExplainNode;
16
14
  }>;
@@ -11,7 +11,7 @@ export const ExplainNode = freeze({
11
11
  return freeze({
12
12
  kind: 'ExplainNode',
13
13
  format,
14
- options: options?.toOperationNode(),
14
+ options,
15
15
  });
16
16
  },
17
17
  });
@@ -1,14 +1,13 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { TableExpressionNode } from './operation-node-utils.js';
3
2
  export interface FromNode extends OperationNode {
4
3
  readonly kind: 'FromNode';
5
- readonly froms: ReadonlyArray<TableExpressionNode>;
4
+ readonly froms: ReadonlyArray<OperationNode>;
6
5
  }
7
6
  /**
8
7
  * @internal
9
8
  */
10
9
  export declare const FromNode: Readonly<{
11
10
  is(node: OperationNode): node is FromNode;
12
- create(froms: ReadonlyArray<TableExpressionNode>): FromNode;
13
- cloneWithFroms(from: FromNode, froms: ReadonlyArray<TableExpressionNode>): FromNode;
11
+ create(froms: ReadonlyArray<OperationNode>): FromNode;
12
+ cloneWithFroms(from: FromNode, froms: ReadonlyArray<OperationNode>): FromNode;
14
13
  }>;
@@ -1,5 +1,4 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { RawNode } from './raw-node.js';
3
2
  export declare type GeneratedNodeParams = Omit<GeneratedNode, 'kind' | 'expression'>;
4
3
  export interface GeneratedNode extends OperationNode {
5
4
  readonly kind: 'GeneratedNode';
@@ -7,7 +6,7 @@ export interface GeneratedNode extends OperationNode {
7
6
  readonly always?: boolean;
8
7
  readonly identity?: boolean;
9
8
  readonly stored?: boolean;
10
- readonly expression?: RawNode;
9
+ readonly expression?: OperationNode;
11
10
  }
12
11
  /**
13
12
  * @internal
@@ -15,6 +14,6 @@ export interface GeneratedNode extends OperationNode {
15
14
  export declare const GeneratedNode: Readonly<{
16
15
  is(node: OperationNode): node is GeneratedNode;
17
16
  create(params: GeneratedNodeParams): GeneratedNode;
18
- createWithExpression(expression: RawNode): GeneratedNode;
17
+ createWithExpression(expression: OperationNode): GeneratedNode;
19
18
  cloneWith(node: GeneratedNode, params: GeneratedNodeParams): GeneratedNode;
20
19
  }>;
@@ -1,13 +1,12 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { ReferenceExpressionNode } from './operation-node-utils.js';
3
2
  export interface GroupByItemNode extends OperationNode {
4
3
  readonly kind: 'GroupByItemNode';
5
- readonly groupBy: ReferenceExpressionNode;
4
+ readonly groupBy: OperationNode;
6
5
  }
7
6
  /**
8
7
  * @internal
9
8
  */
10
9
  export declare const GroupByItemNode: Readonly<{
11
10
  is(node: OperationNode): node is GroupByItemNode;
12
- create(groupBy: ReferenceExpressionNode): GroupByItemNode;
11
+ create(groupBy: OperationNode): GroupByItemNode;
13
12
  }>;
@@ -10,5 +10,5 @@ export interface GroupByNode extends OperationNode {
10
10
  export declare const GroupByNode: Readonly<{
11
11
  is(node: OperationNode): node is GroupByNode;
12
12
  create(items: ReadonlyArray<GroupByItemNode>): GroupByNode;
13
- cloneWithItems(orderBy: GroupByNode, items: ReadonlyArray<GroupByItemNode>): GroupByNode;
13
+ cloneWithItems(groupBy: GroupByNode, items: ReadonlyArray<GroupByItemNode>): GroupByNode;
14
14
  }>;
@@ -13,10 +13,10 @@ export const GroupByNode = freeze({
13
13
  items: freeze(items),
14
14
  });
15
15
  },
16
- cloneWithItems(orderBy, items) {
16
+ cloneWithItems(groupBy, items) {
17
17
  return freeze({
18
- ...orderBy,
19
- items: freeze([...orderBy.items, ...items]),
18
+ ...groupBy,
19
+ items: freeze([...groupBy.items, ...items]),
20
20
  });
21
21
  },
22
22
  });
@@ -1,14 +1,13 @@
1
- import { FilterExpressionNode } from './operation-node-utils.js';
2
1
  import { OperationNode } from './operation-node.js';
3
2
  export interface HavingNode extends OperationNode {
4
3
  readonly kind: 'HavingNode';
5
- readonly having: FilterExpressionNode;
4
+ readonly having: OperationNode;
6
5
  }
7
6
  /**
8
7
  * @internal
9
8
  */
10
9
  export declare const HavingNode: Readonly<{
11
10
  is(node: OperationNode): node is HavingNode;
12
- create(filter: FilterExpressionNode): HavingNode;
13
- cloneWithFilter(havingNode: HavingNode, op: 'And' | 'Or', filter: FilterExpressionNode): HavingNode;
11
+ create(filter: OperationNode): HavingNode;
12
+ cloneWithOperation(havingNode: HavingNode, operator: 'And' | 'Or', operation: OperationNode): HavingNode;
14
13
  }>;
@@ -15,12 +15,12 @@ export const HavingNode = freeze({
15
15
  having: filter,
16
16
  });
17
17
  },
18
- cloneWithFilter(havingNode, op, filter) {
18
+ cloneWithOperation(havingNode, operator, operation) {
19
19
  return freeze({
20
20
  ...havingNode,
21
- having: op === 'And'
22
- ? AndNode.create(havingNode.having, filter)
23
- : OrNode.create(havingNode.having, filter),
21
+ having: operator === 'And'
22
+ ? AndNode.create(havingNode.having, operation)
23
+ : OrNode.create(havingNode.having, operation),
24
24
  });
25
25
  },
26
26
  });
@@ -3,18 +3,15 @@ import { ExplainNode } from './explain-node.js';
3
3
  import { OnConflictNode } from './on-conflict-node.js';
4
4
  import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
5
5
  import { OperationNode } from './operation-node.js';
6
- import { RawNode } from './raw-node.js';
7
6
  import { ReturningNode } from './returning-node.js';
8
- import { SelectQueryNode } from './select-query-node.js';
9
7
  import { TableNode } from './table-node.js';
10
- import { ValuesNode } from './values-node.js';
11
8
  import { WithNode } from './with-node.js';
12
9
  export declare type InsertQueryNodeProps = Omit<InsertQueryNode, 'kind' | 'into'>;
13
10
  export interface InsertQueryNode extends OperationNode {
14
11
  readonly kind: 'InsertQueryNode';
15
12
  readonly into: TableNode;
16
13
  readonly columns?: ReadonlyArray<ColumnNode>;
17
- readonly values?: ValuesNode | SelectQueryNode | RawNode;
14
+ readonly values?: OperationNode;
18
15
  readonly returning?: ReturningNode;
19
16
  readonly onConflict?: OnConflictNode;
20
17
  readonly onDuplicateKey?: OnDuplicateKeyNode;
@@ -1,14 +1,10 @@
1
- import { AliasNode } from './alias-node.js';
2
1
  import { OnNode } from './on-node.js';
3
- import { FilterExpressionNode } from './operation-node-utils.js';
4
2
  import { OperationNode } from './operation-node.js';
5
- import { TableNode } from './table-node.js';
6
- export declare type JoinTableNode = TableNode | AliasNode;
7
3
  export declare type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin' | 'LateralInnerJoin' | 'LateralLeftJoin';
8
4
  export interface JoinNode extends OperationNode {
9
5
  readonly kind: 'JoinNode';
10
6
  readonly joinType: JoinType;
11
- readonly table: JoinTableNode;
7
+ readonly table: OperationNode;
12
8
  readonly on?: OnNode;
13
9
  }
14
10
  /**
@@ -16,8 +12,8 @@ export interface JoinNode extends OperationNode {
16
12
  */
17
13
  export declare const JoinNode: Readonly<{
18
14
  is(node: OperationNode): node is JoinNode;
19
- create(joinType: JoinType, table: JoinTableNode): JoinNode;
20
- createWithOn(joinType: JoinType, table: JoinTableNode, on: FilterExpressionNode): JoinNode;
21
- cloneWithOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
22
- cloneWithOrOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
15
+ create(joinType: JoinType, table: OperationNode): JoinNode;
16
+ createWithOn(joinType: JoinType, table: OperationNode, on: OperationNode): JoinNode;
17
+ cloneWithOn(joinNode: JoinNode, operation: OperationNode): JoinNode;
18
+ cloneWithOrOn(joinNode: JoinNode, operation: OperationNode): JoinNode;
23
19
  }>;
@@ -24,20 +24,20 @@ export const JoinNode = freeze({
24
24
  on: OnNode.create(on),
25
25
  });
26
26
  },
27
- cloneWithOn(joinNode, filter) {
27
+ cloneWithOn(joinNode, operation) {
28
28
  return freeze({
29
29
  ...joinNode,
30
30
  on: joinNode.on
31
- ? OnNode.cloneWithFilter(joinNode.on, 'And', filter)
32
- : OnNode.create(filter),
31
+ ? OnNode.cloneWithOperation(joinNode.on, 'And', operation)
32
+ : OnNode.create(operation),
33
33
  });
34
34
  },
35
- cloneWithOrOn(joinNode, filter) {
35
+ cloneWithOrOn(joinNode, operation) {
36
36
  return freeze({
37
37
  ...joinNode,
38
38
  on: joinNode.on
39
- ? OnNode.cloneWithFilter(joinNode.on, 'Or', filter)
40
- : OnNode.create(filter),
39
+ ? OnNode.cloneWithOperation(joinNode.on, 'Or', operation)
40
+ : OnNode.create(operation),
41
41
  });
42
42
  },
43
43
  });
@@ -1,16 +1,14 @@
1
1
  import { ColumnNode } from './column-node.js';
2
2
  import { ColumnUpdateNode } from './column-update-node.js';
3
3
  import { IdentifierNode } from './identifier-node.js';
4
- import { FilterExpressionNode } from './operation-node-utils.js';
5
4
  import { OperationNode } from './operation-node.js';
6
- import { RawNode } from './raw-node.js';
7
5
  import { WhereNode } from './where-node.js';
8
6
  export declare type OnConflictNodeProps = Omit<OnConflictNode, 'kind' | 'indexWhere' | 'updateWhere'>;
9
7
  export interface OnConflictNode extends OperationNode {
10
8
  readonly kind: 'OnConflictNode';
11
9
  readonly columns?: ReadonlyArray<ColumnNode>;
12
10
  readonly constraint?: IdentifierNode;
13
- readonly indexExpression?: RawNode;
11
+ readonly indexExpression?: OperationNode;
14
12
  readonly indexWhere?: WhereNode;
15
13
  readonly updates?: ReadonlyArray<ColumnUpdateNode>;
16
14
  readonly updateWhere?: WhereNode;
@@ -23,8 +21,8 @@ export declare const OnConflictNode: Readonly<{
23
21
  is(node: OperationNode): node is OnConflictNode;
24
22
  create(): OnConflictNode;
25
23
  cloneWith(node: OnConflictNode, props: OnConflictNodeProps): OnConflictNode;
26
- cloneWithIndexWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
27
- cloneWithIndexOrWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
28
- cloneWithUpdateWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
29
- cloneWithUpdateOrWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
24
+ cloneWithIndexWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
25
+ cloneWithIndexOrWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
26
+ cloneWithUpdateWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
27
+ cloneWithUpdateOrWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
30
28
  }>;
@@ -19,36 +19,36 @@ export const OnConflictNode = freeze({
19
19
  ...props,
20
20
  });
21
21
  },
22
- cloneWithIndexWhere(node, filter) {
22
+ cloneWithIndexWhere(node, operation) {
23
23
  return freeze({
24
24
  ...node,
25
25
  indexWhere: node.indexWhere
26
- ? WhereNode.cloneWithFilter(node.indexWhere, 'And', filter)
27
- : WhereNode.create(filter),
26
+ ? WhereNode.cloneWithOperation(node.indexWhere, 'And', operation)
27
+ : WhereNode.create(operation),
28
28
  });
29
29
  },
30
- cloneWithIndexOrWhere(node, filter) {
30
+ cloneWithIndexOrWhere(node, operation) {
31
31
  return freeze({
32
32
  ...node,
33
33
  indexWhere: node.indexWhere
34
- ? WhereNode.cloneWithFilter(node.indexWhere, 'Or', filter)
35
- : WhereNode.create(filter),
34
+ ? WhereNode.cloneWithOperation(node.indexWhere, 'Or', operation)
35
+ : WhereNode.create(operation),
36
36
  });
37
37
  },
38
- cloneWithUpdateWhere(node, filter) {
38
+ cloneWithUpdateWhere(node, operation) {
39
39
  return freeze({
40
40
  ...node,
41
41
  updateWhere: node.updateWhere
42
- ? WhereNode.cloneWithFilter(node.updateWhere, 'And', filter)
43
- : WhereNode.create(filter),
42
+ ? WhereNode.cloneWithOperation(node.updateWhere, 'And', operation)
43
+ : WhereNode.create(operation),
44
44
  });
45
45
  },
46
- cloneWithUpdateOrWhere(node, filter) {
46
+ cloneWithUpdateOrWhere(node, operation) {
47
47
  return freeze({
48
48
  ...node,
49
49
  updateWhere: node.updateWhere
50
- ? WhereNode.cloneWithFilter(node.updateWhere, 'Or', filter)
51
- : WhereNode.create(filter),
50
+ ? WhereNode.cloneWithOperation(node.updateWhere, 'Or', operation)
51
+ : WhereNode.create(operation),
52
52
  });
53
53
  },
54
54
  });
@@ -1,14 +1,13 @@
1
- import { FilterExpressionNode } from './operation-node-utils.js';
2
1
  import { OperationNode } from './operation-node.js';
3
2
  export interface OnNode extends OperationNode {
4
3
  readonly kind: 'OnNode';
5
- readonly on: FilterExpressionNode;
4
+ readonly on: OperationNode;
6
5
  }
7
6
  /**
8
7
  * @internal
9
8
  */
10
9
  export declare const OnNode: Readonly<{
11
10
  is(node: OperationNode): node is OnNode;
12
- create(filter: FilterExpressionNode): OnNode;
13
- cloneWithFilter(onNode: OnNode, op: 'And' | 'Or', filter: FilterExpressionNode): OnNode;
11
+ create(filter: OperationNode): OnNode;
12
+ cloneWithOperation(onNode: OnNode, operator: 'And' | 'Or', operation: OperationNode): OnNode;
14
13
  }>;
@@ -15,12 +15,12 @@ export const OnNode = freeze({
15
15
  on: filter,
16
16
  });
17
17
  },
18
- cloneWithFilter(onNode, op, filter) {
18
+ cloneWithOperation(onNode, operator, operation) {
19
19
  return freeze({
20
20
  ...onNode,
21
- on: op === 'And'
22
- ? AndNode.create(onNode.on, filter)
23
- : OrNode.create(onNode.on, filter),
21
+ on: operator === 'And'
22
+ ? AndNode.create(onNode.on, operation)
23
+ : OrNode.create(onNode.on, operation),
24
24
  });
25
25
  },
26
26
  });
@@ -15,7 +15,6 @@ import { RawNode } from './raw-node.js';
15
15
  import { SelectQueryNode } from './select-query-node.js';
16
16
  import { ValueListNode } from './value-list-node.js';
17
17
  import { ValueNode } from './value-node.js';
18
- import { FilterNode } from './filter-node.js';
19
18
  import { OperatorNode } from './operator-node.js';
20
19
  import { FromNode } from './from-node.js';
21
20
  import { WhereNode } from './where-node.js';
@@ -58,7 +57,6 @@ import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
58
57
  import { ColumnDefinitionNode } from './column-definition-node.js';
59
58
  import { ModifyColumnNode } from './modify-column-node.js';
60
59
  import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
61
- import { UnionNode } from './union-node.js';
62
60
  import { CreateViewNode } from './create-view-node.js';
63
61
  import { DropViewNode } from './drop-view-node.js';
64
62
  import { GeneratedNode } from './generated-node.js';
@@ -71,6 +69,13 @@ import { DropTypeNode } from './drop-type-node.js';
71
69
  import { ExplainNode } from './explain-node.js';
72
70
  import { SchemableIdentifierNode } from './schemable-identifier-node.js';
73
71
  import { DefaultInsertValueNode } from './default-insert-value-node.js';
72
+ import { AggregateFunctionNode } from './aggregate-function-node.js';
73
+ import { OverNode } from './over-node.js';
74
+ import { PartitionByNode } from './partition-by-node.js';
75
+ import { PartitionByItemNode } from './partition-by-item-node.js';
76
+ import { SetOperationNode } from './set-operation-node.js';
77
+ import { BinaryOperationNode } from './binary-operation-node.js';
78
+ import { UnaryOperationNode } from './unary-operation-node.js';
74
79
  /**
75
80
  * Transforms an operation node tree into another one.
76
81
  *
@@ -113,7 +118,6 @@ export declare class OperationNodeTransformer {
113
118
  protected transformTable(node: TableNode): TableNode;
114
119
  protected transformFrom(node: FromNode): FromNode;
115
120
  protected transformReference(node: ReferenceNode): ReferenceNode;
116
- protected transformFilter(node: FilterNode): FilterNode;
117
121
  protected transformAnd(node: AndNode): AndNode;
118
122
  protected transformOr(node: OrNode): OrNode;
119
123
  protected transformValueList(node: ValueListNode): ValueListNode;
@@ -145,7 +149,7 @@ export declare class OperationNodeTransformer {
145
149
  protected transformPrimaryKeyConstraint(node: PrimaryKeyConstraintNode): PrimaryKeyConstraintNode;
146
150
  protected transformUniqueConstraint(node: UniqueConstraintNode): UniqueConstraintNode;
147
151
  protected transformForeignKeyConstraint(node: ForeignKeyConstraintNode): ForeignKeyConstraintNode;
148
- protected transformUnion(node: UnionNode): UnionNode;
152
+ protected transformSetOperation(node: SetOperationNode): SetOperationNode;
149
153
  protected transformReferences(node: ReferencesNode): ReferencesNode;
150
154
  protected transformCheckConstraint(node: CheckConstraintNode): CheckConstraintNode;
151
155
  protected transformWith(node: WithNode): WithNode;
@@ -171,6 +175,12 @@ export declare class OperationNodeTransformer {
171
175
  protected transformDropType(node: DropTypeNode): DropTypeNode;
172
176
  protected transformExplain(node: ExplainNode): ExplainNode;
173
177
  protected transformSchemableIdentifier(node: SchemableIdentifierNode): SchemableIdentifierNode;
178
+ protected transformAggregateFunction(node: AggregateFunctionNode): AggregateFunctionNode;
179
+ protected transformOver(node: OverNode): OverNode;
180
+ protected transformPartitionBy(node: PartitionByNode): PartitionByNode;
181
+ protected transformPartitionByItem(node: PartitionByItemNode): PartitionByItemNode;
182
+ protected transformBinaryOperation(node: BinaryOperationNode): BinaryOperationNode;
183
+ protected transformUnaryOperation(node: UnaryOperationNode): UnaryOperationNode;
174
184
  protected transformDataType(node: DataTypeNode): DataTypeNode;
175
185
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
176
186
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -44,7 +44,6 @@ export class OperationNodeTransformer {
44
44
  TableNode: this.transformTable.bind(this),
45
45
  FromNode: this.transformFrom.bind(this),
46
46
  SelectAllNode: this.transformSelectAll.bind(this),
47
- FilterNode: this.transformFilter.bind(this),
48
47
  AndNode: this.transformAnd.bind(this),
49
48
  OrNode: this.transformOr.bind(this),
50
49
  ValueNode: this.transformValue.bind(this),
@@ -93,7 +92,6 @@ export class OperationNodeTransformer {
93
92
  AddConstraintNode: this.transformAddConstraint.bind(this),
94
93
  DropConstraintNode: this.transformDropConstraint.bind(this),
95
94
  ForeignKeyConstraintNode: this.transformForeignKeyConstraint.bind(this),
96
- UnionNode: this.transformUnion.bind(this),
97
95
  CreateViewNode: this.transformCreateView.bind(this),
98
96
  DropViewNode: this.transformDropView.bind(this),
99
97
  GeneratedNode: this.transformGenerated.bind(this),
@@ -105,6 +103,13 @@ export class OperationNodeTransformer {
105
103
  DropTypeNode: this.transformDropType.bind(this),
106
104
  ExplainNode: this.transformExplain.bind(this),
107
105
  DefaultInsertValueNode: this.transformDefaultInsertValue.bind(this),
106
+ AggregateFunctionNode: this.transformAggregateFunction.bind(this),
107
+ OverNode: this.transformOver.bind(this),
108
+ PartitionByNode: this.transformPartitionBy.bind(this),
109
+ PartitionByItemNode: this.transformPartitionByItem.bind(this),
110
+ SetOperationNode: this.transformSetOperation.bind(this),
111
+ BinaryOperationNode: this.transformBinaryOperation.bind(this),
112
+ UnaryOperationNode: this.transformUnaryOperation.bind(this),
108
113
  });
109
114
  transformNode(node) {
110
115
  if (!node) {
@@ -129,7 +134,7 @@ export class OperationNodeTransformer {
129
134
  kind: 'SelectQueryNode',
130
135
  from: this.transformNode(node.from),
131
136
  selections: this.transformNodeList(node.selections),
132
- distinctOnSelections: this.transformNodeList(node.distinctOnSelections),
137
+ distinctOn: this.transformNodeList(node.distinctOn),
133
138
  joins: this.transformNodeList(node.joins),
134
139
  groupBy: this.transformNode(node.groupBy),
135
140
  orderBy: this.transformNode(node.orderBy),
@@ -140,8 +145,8 @@ export class OperationNodeTransformer {
140
145
  offset: this.transformNode(node.offset),
141
146
  with: this.transformNode(node.with),
142
147
  having: this.transformNode(node.having),
143
- union: this.transformNodeList(node.union),
144
148
  explain: this.transformNode(node.explain),
149
+ setOperations: this.transformNodeList(node.setOperations),
145
150
  });
146
151
  }
147
152
  transformSelection(node) {
@@ -182,14 +187,6 @@ export class OperationNodeTransformer {
182
187
  column: this.transformNode(node.column),
183
188
  });
184
189
  }
185
- transformFilter(node) {
186
- return requireAllProps({
187
- kind: 'FilterNode',
188
- left: this.transformNode(node.left),
189
- op: this.transformNode(node.op),
190
- right: this.transformNode(node.right),
191
- });
192
- }
193
190
  transformAnd(node) {
194
191
  return requireAllProps({
195
192
  kind: 'AndNode',
@@ -304,6 +301,8 @@ export class OperationNodeTransformer {
304
301
  defaultTo: this.transformNode(node.defaultTo),
305
302
  check: this.transformNode(node.check),
306
303
  generated: this.transformNode(node.generated),
304
+ frontModifiers: this.transformNodeList(node.frontModifiers),
305
+ endModifiers: this.transformNodeList(node.endModifiers),
307
306
  });
308
307
  }
309
308
  transformAddColumn(node) {
@@ -444,10 +443,11 @@ export class OperationNodeTransformer {
444
443
  onUpdate: node.onUpdate,
445
444
  });
446
445
  }
447
- transformUnion(node) {
446
+ transformSetOperation(node) {
448
447
  return requireAllProps({
449
- kind: 'UnionNode',
450
- union: this.transformNode(node.union),
448
+ kind: 'SetOperationNode',
449
+ operator: node.operator,
450
+ expression: this.transformNode(node.expression),
451
451
  all: node.all,
452
452
  });
453
453
  }
@@ -515,11 +515,7 @@ export class OperationNodeTransformer {
515
515
  table: this.transformNode(node.table),
516
516
  renameTo: this.transformNode(node.renameTo),
517
517
  setSchema: this.transformNode(node.setSchema),
518
- renameColumn: this.transformNode(node.renameColumn),
519
- addColumn: this.transformNode(node.addColumn),
520
- dropColumn: this.transformNode(node.dropColumn),
521
- alterColumn: this.transformNode(node.alterColumn),
522
- modifyColumn: this.transformNode(node.modifyColumn),
518
+ columnAlterations: this.transformNodeList(node.columnAlterations),
523
519
  addConstraint: this.transformNode(node.addConstraint),
524
520
  dropConstraint: this.transformNode(node.dropConstraint),
525
521
  });
@@ -647,6 +643,50 @@ export class OperationNodeTransformer {
647
643
  identifier: this.transformNode(node.identifier),
648
644
  });
649
645
  }
646
+ transformAggregateFunction(node) {
647
+ return requireAllProps({
648
+ kind: 'AggregateFunctionNode',
649
+ column: this.transformNode(node.column),
650
+ distinct: node.distinct,
651
+ filter: this.transformNode(node.filter),
652
+ func: node.func,
653
+ over: this.transformNode(node.over),
654
+ });
655
+ }
656
+ transformOver(node) {
657
+ return requireAllProps({
658
+ kind: 'OverNode',
659
+ orderBy: this.transformNode(node.orderBy),
660
+ partitionBy: this.transformNode(node.partitionBy),
661
+ });
662
+ }
663
+ transformPartitionBy(node) {
664
+ return requireAllProps({
665
+ kind: 'PartitionByNode',
666
+ items: this.transformNodeList(node.items),
667
+ });
668
+ }
669
+ transformPartitionByItem(node) {
670
+ return requireAllProps({
671
+ kind: 'PartitionByItemNode',
672
+ partitionBy: this.transformNode(node.partitionBy),
673
+ });
674
+ }
675
+ transformBinaryOperation(node) {
676
+ return requireAllProps({
677
+ kind: 'BinaryOperationNode',
678
+ leftOperand: this.transformNode(node.leftOperand),
679
+ operator: this.transformNode(node.operator),
680
+ rightOperand: this.transformNode(node.rightOperand),
681
+ });
682
+ }
683
+ transformUnaryOperation(node) {
684
+ return requireAllProps({
685
+ kind: 'UnaryOperationNode',
686
+ operator: this.transformNode(node.operator),
687
+ operand: this.transformNode(node.operand),
688
+ });
689
+ }
650
690
  transformDataType(node) {
651
691
  // An Object.freezed leaf node. No need to clone.
652
692
  return node;