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
@@ -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
  export declare abstract class OperationNodeVisitor {
75
80
  #private;
76
81
  protected readonly nodeStack: OperationNode[];
@@ -83,7 +88,6 @@ export declare abstract class OperationNodeVisitor {
83
88
  protected abstract visitTable(node: TableNode): void;
84
89
  protected abstract visitFrom(node: FromNode): void;
85
90
  protected abstract visitReference(node: ReferenceNode): void;
86
- protected abstract visitFilter(node: FilterNode): void;
87
91
  protected abstract visitAnd(node: AndNode): void;
88
92
  protected abstract visitOr(node: OrNode): void;
89
93
  protected abstract visitValueList(node: ValueListNode): void;
@@ -129,7 +133,6 @@ export declare abstract class OperationNodeVisitor {
129
133
  protected abstract visitAddConstraint(node: AddConstraintNode): void;
130
134
  protected abstract visitDropConstraint(node: DropConstraintNode): void;
131
135
  protected abstract visitForeignKeyConstraint(node: ForeignKeyConstraintNode): void;
132
- protected abstract visitUnion(node: UnionNode): void;
133
136
  protected abstract visitDataType(node: DataTypeNode): void;
134
137
  protected abstract visitSelectAll(node: SelectAllNode): void;
135
138
  protected abstract visitIdentifier(node: IdentifierNode): void;
@@ -148,4 +151,11 @@ export declare abstract class OperationNodeVisitor {
148
151
  protected abstract visitDropType(node: DropTypeNode): void;
149
152
  protected abstract visitExplain(node: ExplainNode): void;
150
153
  protected abstract visitDefaultInsertValue(node: DefaultInsertValueNode): void;
154
+ protected abstract visitAggregateFunction(node: AggregateFunctionNode): void;
155
+ protected abstract visitOver(node: OverNode): void;
156
+ protected abstract visitPartitionBy(node: PartitionByNode): void;
157
+ protected abstract visitPartitionByItem(node: PartitionByItemNode): void;
158
+ protected abstract visitSetOperation(node: SetOperationNode): void;
159
+ protected abstract visitBinaryOperation(node: BinaryOperationNode): void;
160
+ protected abstract visitUnaryOperation(node: UnaryOperationNode): void;
151
161
  }
@@ -17,7 +17,6 @@ export class OperationNodeVisitor {
17
17
  TableNode: this.visitTable.bind(this),
18
18
  FromNode: this.visitFrom.bind(this),
19
19
  SelectAllNode: this.visitSelectAll.bind(this),
20
- FilterNode: this.visitFilter.bind(this),
21
20
  AndNode: this.visitAnd.bind(this),
22
21
  OrNode: this.visitOr.bind(this),
23
22
  ValueNode: this.visitValue.bind(this),
@@ -66,7 +65,6 @@ export class OperationNodeVisitor {
66
65
  AddConstraintNode: this.visitAddConstraint.bind(this),
67
66
  DropConstraintNode: this.visitDropConstraint.bind(this),
68
67
  ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),
69
- UnionNode: this.visitUnion.bind(this),
70
68
  CreateViewNode: this.visitCreateView.bind(this),
71
69
  DropViewNode: this.visitDropView.bind(this),
72
70
  GeneratedNode: this.visitGenerated.bind(this),
@@ -78,6 +76,13 @@ export class OperationNodeVisitor {
78
76
  DropTypeNode: this.visitDropType.bind(this),
79
77
  ExplainNode: this.visitExplain.bind(this),
80
78
  DefaultInsertValueNode: this.visitDefaultInsertValue.bind(this),
79
+ AggregateFunctionNode: this.visitAggregateFunction.bind(this),
80
+ OverNode: this.visitOver.bind(this),
81
+ PartitionByNode: this.visitPartitionBy.bind(this),
82
+ PartitionByItemNode: this.visitPartitionByItem.bind(this),
83
+ SetOperationNode: this.visitSetOperation.bind(this),
84
+ BinaryOperationNode: this.visitBinaryOperation.bind(this),
85
+ UnaryOperationNode: this.visitUnaryOperation.bind(this),
81
86
  });
82
87
  visitNode = (node) => {
83
88
  this.nodeStack.push(node);
@@ -1,4 +1,4 @@
1
- export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode';
1
+ export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -1,7 +1,9 @@
1
- import { ArrayItemType } from '../util/type-utils.js';
2
1
  import { OperationNode } from './operation-node.js';
3
- export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "ilike", "not ilike", "@>", "<@", "?", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "exists", "not exists", "&&", "||", "@@", "@@@", "!!", "<->"];
4
- export declare type Operator = ArrayItemType<typeof OPERATORS>;
2
+ export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "&&", "||", "@@", "@@@", "!!", "<->"];
3
+ export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
4
+ export declare type ComparisonOperator = typeof COMPARISON_OPERATORS[number];
5
+ export declare type UnaryFilterOperator = typeof UNARY_FILTER_OPERATORS[number];
6
+ export declare type Operator = ComparisonOperator | UnaryFilterOperator;
5
7
  export interface OperatorNode extends OperationNode {
6
8
  readonly kind: 'OperatorNode';
7
9
  readonly operator: Operator;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="./operator-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
- export const OPERATORS = [
3
+ export const COMPARISON_OPERATORS = [
4
4
  '=',
5
5
  '==',
6
6
  '!=',
@@ -20,7 +20,6 @@ export const OPERATORS = [
20
20
  '@>',
21
21
  '<@',
22
22
  '?',
23
- '?',
24
23
  '?&',
25
24
  '!<',
26
25
  '!>',
@@ -29,8 +28,6 @@ export const OPERATORS = [
29
28
  '~',
30
29
  '~*',
31
30
  '!~*',
32
- 'exists',
33
- 'not exists',
34
31
  '&&',
35
32
  '||',
36
33
  '@@',
@@ -38,6 +35,7 @@ export const OPERATORS = [
38
35
  '!!',
39
36
  '<->',
40
37
  ];
38
+ export const UNARY_FILTER_OPERATORS = ['exists', 'not exists'];
41
39
  /**
42
40
  * @internal
43
41
  */
@@ -1,14 +1,13 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { FilterExpressionNode } from './operation-node-utils.js';
3
2
  export interface OrNode extends OperationNode {
4
3
  readonly kind: 'OrNode';
5
- readonly left: FilterExpressionNode;
6
- readonly right: FilterExpressionNode;
4
+ readonly left: OperationNode;
5
+ readonly right: OperationNode;
7
6
  }
8
7
  /**
9
8
  * @internal
10
9
  */
11
10
  export declare const OrNode: Readonly<{
12
11
  is(node: OperationNode): node is OrNode;
13
- create(left: FilterExpressionNode, right: FilterExpressionNode): OrNode;
12
+ create(left: OperationNode, right: OperationNode): OrNode;
14
13
  }>;
@@ -1,15 +1,13 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { ReferenceExpressionNode } from './operation-node-utils.js';
3
- import { RawNode } from './raw-node.js';
4
2
  export interface OrderByItemNode extends OperationNode {
5
3
  readonly kind: 'OrderByItemNode';
6
- readonly orderBy: ReferenceExpressionNode;
7
- readonly direction?: RawNode;
4
+ readonly orderBy: OperationNode;
5
+ readonly direction?: OperationNode;
8
6
  }
9
7
  /**
10
8
  * @internal
11
9
  */
12
10
  export declare const OrderByItemNode: Readonly<{
13
11
  is(node: OperationNode): node is OrderByItemNode;
14
- create(orderBy: ReferenceExpressionNode, direction?: RawNode): OrderByItemNode;
12
+ create(orderBy: OperationNode, direction?: OperationNode): OrderByItemNode;
15
13
  }>;
@@ -0,0 +1,19 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { OrderByItemNode } from './order-by-item-node.js';
3
+ import { OrderByNode } from './order-by-node.js';
4
+ import { PartitionByItemNode } from './partition-by-item-node.js';
5
+ import { PartitionByNode } from './partition-by-node.js';
6
+ export interface OverNode extends OperationNode {
7
+ readonly kind: 'OverNode';
8
+ readonly orderBy?: OrderByNode;
9
+ readonly partitionBy?: PartitionByNode;
10
+ }
11
+ /**
12
+ * @internal
13
+ */
14
+ export declare const OverNode: Readonly<{
15
+ is(node: OperationNode): node is OverNode;
16
+ create(): OverNode;
17
+ cloneWithOrderByItem(overNode: OverNode, item: OrderByItemNode): OverNode;
18
+ cloneWithPartitionByItems(overNode: OverNode, items: ReadonlyArray<PartitionByItemNode>): OverNode;
19
+ }>;
@@ -0,0 +1,33 @@
1
+ /// <reference types="./over-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ import { OrderByNode } from './order-by-node.js';
4
+ import { PartitionByNode } from './partition-by-node.js';
5
+ /**
6
+ * @internal
7
+ */
8
+ export const OverNode = freeze({
9
+ is(node) {
10
+ return node.kind === 'OverNode';
11
+ },
12
+ create() {
13
+ return freeze({
14
+ kind: 'OverNode',
15
+ });
16
+ },
17
+ cloneWithOrderByItem(overNode, item) {
18
+ return freeze({
19
+ ...overNode,
20
+ orderBy: overNode.orderBy
21
+ ? OrderByNode.cloneWithItem(overNode.orderBy, item)
22
+ : OrderByNode.create(item),
23
+ });
24
+ },
25
+ cloneWithPartitionByItems(overNode, items) {
26
+ return freeze({
27
+ ...overNode,
28
+ partitionBy: overNode.partitionBy
29
+ ? PartitionByNode.cloneWithItems(overNode.partitionBy, items)
30
+ : PartitionByNode.create(items),
31
+ });
32
+ },
33
+ });
@@ -1,13 +1,12 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { FilterExpressionNode } from './operation-node-utils.js';
3
2
  export interface ParensNode extends OperationNode {
4
3
  readonly kind: 'ParensNode';
5
- readonly node: FilterExpressionNode;
4
+ readonly node: OperationNode;
6
5
  }
7
6
  /**
8
7
  * @internal
9
8
  */
10
9
  export declare const ParensNode: Readonly<{
11
10
  is(node: OperationNode): node is ParensNode;
12
- create(node: FilterExpressionNode): ParensNode;
11
+ create(node: OperationNode): ParensNode;
13
12
  }>;
@@ -0,0 +1,13 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { SimpleReferenceExpressionNode } from './simple-reference-expression-node.js';
3
+ export interface PartitionByItemNode extends OperationNode {
4
+ readonly kind: 'PartitionByItemNode';
5
+ readonly partitionBy: SimpleReferenceExpressionNode;
6
+ }
7
+ /**
8
+ * @internal
9
+ */
10
+ export declare const PartitionByItemNode: Readonly<{
11
+ is(node: OperationNode): node is PartitionByItemNode;
12
+ create(partitionBy: SimpleReferenceExpressionNode): PartitionByItemNode;
13
+ }>;
@@ -0,0 +1,16 @@
1
+ /// <reference types="./partition-by-item-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const PartitionByItemNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'PartitionByItemNode';
9
+ },
10
+ create(partitionBy) {
11
+ return freeze({
12
+ kind: 'PartitionByItemNode',
13
+ partitionBy,
14
+ });
15
+ },
16
+ });
@@ -0,0 +1,14 @@
1
+ import { PartitionByItemNode } from './partition-by-item-node.js';
2
+ import { OperationNode } from './operation-node.js';
3
+ export interface PartitionByNode extends OperationNode {
4
+ readonly kind: 'PartitionByNode';
5
+ readonly items: ReadonlyArray<PartitionByItemNode>;
6
+ }
7
+ /**
8
+ * @internal
9
+ */
10
+ export declare const PartitionByNode: Readonly<{
11
+ is(node: OperationNode): node is PartitionByNode;
12
+ create(items: ReadonlyArray<PartitionByItemNode>): PartitionByNode;
13
+ cloneWithItems(partitionBy: PartitionByNode, items: ReadonlyArray<PartitionByItemNode>): PartitionByNode;
14
+ }>;
@@ -0,0 +1,22 @@
1
+ /// <reference types="./partition-by-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const PartitionByNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'PartitionByNode';
9
+ },
10
+ create(items) {
11
+ return freeze({
12
+ kind: 'PartitionByNode',
13
+ items: freeze(items),
14
+ });
15
+ },
16
+ cloneWithItems(partitionBy, items) {
17
+ return freeze({
18
+ ...partitionBy,
19
+ items: freeze([...partitionBy.items, ...items]),
20
+ });
21
+ },
22
+ });
@@ -5,7 +5,6 @@ import { DeleteQueryNode } from './delete-query-node.js';
5
5
  import { JoinNode } from './join-node.js';
6
6
  import { SelectionNode } from './selection-node.js';
7
7
  import { OperationNode } from './operation-node.js';
8
- import { FilterExpressionNode } from './operation-node-utils.js';
9
8
  export declare type QueryNode = SelectQueryNode | DeleteQueryNode | InsertQueryNode | UpdateQueryNode;
10
9
  export declare type MutatingQueryNode = DeleteQueryNode | InsertQueryNode | UpdateQueryNode;
11
10
  export declare type FilterableQueryNode = SelectQueryNode | DeleteQueryNode | UpdateQueryNode;
@@ -14,8 +13,8 @@ export declare type FilterableQueryNode = SelectQueryNode | DeleteQueryNode | Up
14
13
  */
15
14
  export declare const QueryNode: Readonly<{
16
15
  is(node: OperationNode): node is QueryNode;
17
- cloneWithWhere<T extends FilterableQueryNode>(node: T, filter: FilterExpressionNode): T;
18
- cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, filter: FilterExpressionNode): T_1;
16
+ cloneWithWhere<T extends FilterableQueryNode>(node: T, operation: OperationNode): T;
17
+ cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, operation: OperationNode): T_1;
19
18
  cloneWithJoin<T_2 extends FilterableQueryNode>(node: T_2, join: JoinNode): T_2;
20
19
  cloneWithReturning<T_3 extends MutatingQueryNode>(node: T_3, selections: ReadonlyArray<SelectionNode>): T_3;
21
20
  }>;
@@ -16,20 +16,20 @@ export const QueryNode = freeze({
16
16
  UpdateQueryNode.is(node) ||
17
17
  SelectQueryNode.is(node));
18
18
  },
19
- cloneWithWhere(node, filter) {
19
+ cloneWithWhere(node, operation) {
20
20
  return freeze({
21
21
  ...node,
22
22
  where: node.where
23
- ? WhereNode.cloneWithFilter(node.where, 'And', filter)
24
- : WhereNode.create(filter),
23
+ ? WhereNode.cloneWithOperation(node.where, 'And', operation)
24
+ : WhereNode.create(operation),
25
25
  });
26
26
  },
27
- cloneWithOrWhere(node, filter) {
27
+ cloneWithOrWhere(node, operation) {
28
28
  return freeze({
29
29
  ...node,
30
30
  where: node.where
31
- ? WhereNode.cloneWithFilter(node.where, 'Or', filter)
32
- : WhereNode.create(filter),
31
+ ? WhereNode.cloneWithOperation(node.where, 'Or', operation)
32
+ : WhereNode.create(operation),
33
33
  });
34
34
  },
35
35
  cloneWithJoin(node, join) {
@@ -1,10 +1,9 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { RawNode } from './raw-node.js';
3
2
  export declare type SelectModifier = 'ForUpdate' | 'ForNoKeyUpdate' | 'ForShare' | 'ForKeyShare' | 'NoWait' | 'SkipLocked' | 'Distinct';
4
3
  export interface SelectModifierNode extends OperationNode {
5
4
  readonly kind: 'SelectModifierNode';
6
5
  readonly modifier?: SelectModifier;
7
- readonly rawModifier?: RawNode;
6
+ readonly rawModifier?: OperationNode;
8
7
  }
9
8
  /**
10
9
  * @internal
@@ -12,5 +11,5 @@ export interface SelectModifierNode extends OperationNode {
12
11
  export declare const SelectModifierNode: Readonly<{
13
12
  is(node: OperationNode): node is SelectModifierNode;
14
13
  create(modifier: SelectModifier): SelectModifierNode;
15
- createWithRaw(modifier: RawNode): SelectModifierNode;
14
+ createWithExpression(modifier: OperationNode): SelectModifierNode;
16
15
  }>;
@@ -13,7 +13,7 @@ export const SelectModifierNode = freeze({
13
13
  modifier,
14
14
  });
15
15
  },
16
- createWithRaw(modifier) {
16
+ createWithExpression(modifier) {
17
17
  return freeze({
18
18
  kind: 'SelectModifierNode',
19
19
  rawModifier: modifier,
@@ -6,20 +6,19 @@ import { JoinNode } from './join-node.js';
6
6
  import { LimitNode } from './limit-node.js';
7
7
  import { OffsetNode } from './offset-node.js';
8
8
  import { OperationNode } from './operation-node.js';
9
- import { FilterExpressionNode, TableExpressionNode } from './operation-node-utils.js';
10
9
  import { OrderByItemNode } from './order-by-item-node.js';
11
10
  import { OrderByNode } from './order-by-node.js';
12
11
  import { SelectionNode } from './selection-node.js';
13
12
  import { WhereNode } from './where-node.js';
14
13
  import { WithNode } from './with-node.js';
15
- import { UnionNode } from './union-node.js';
16
14
  import { SelectModifierNode } from './select-modifier-node.js';
17
15
  import { ExplainNode } from './explain-node.js';
16
+ import { SetOperationNode } from './set-operation-node.js';
18
17
  export interface SelectQueryNode extends OperationNode {
19
18
  readonly kind: 'SelectQueryNode';
20
19
  readonly from: FromNode;
21
20
  readonly selections?: ReadonlyArray<SelectionNode>;
22
- readonly distinctOnSelections?: ReadonlyArray<SelectionNode>;
21
+ readonly distinctOn?: ReadonlyArray<OperationNode>;
23
22
  readonly joins?: ReadonlyArray<JoinNode>;
24
23
  readonly groupBy?: GroupByNode;
25
24
  readonly orderBy?: OrderByNode;
@@ -30,25 +29,25 @@ export interface SelectQueryNode extends OperationNode {
30
29
  readonly offset?: OffsetNode;
31
30
  readonly with?: WithNode;
32
31
  readonly having?: HavingNode;
33
- readonly union?: ReadonlyArray<UnionNode>;
34
32
  readonly explain?: ExplainNode;
33
+ readonly setOperations?: ReadonlyArray<SetOperationNode>;
35
34
  }
36
35
  /**
37
36
  * @internal
38
37
  */
39
38
  export declare const SelectQueryNode: Readonly<{
40
39
  is(node: OperationNode): node is SelectQueryNode;
41
- create(fromItems: ReadonlyArray<TableExpressionNode>, withNode?: WithNode): SelectQueryNode;
40
+ create(fromItems: ReadonlyArray<OperationNode>, withNode?: WithNode): SelectQueryNode;
42
41
  cloneWithSelections(select: SelectQueryNode, selections: ReadonlyArray<SelectionNode>): SelectQueryNode;
43
- cloneWithDistinctOnSelections(select: SelectQueryNode, selections: ReadonlyArray<SelectionNode>): SelectQueryNode;
42
+ cloneWithDistinctOn(select: SelectQueryNode, expressions: ReadonlyArray<OperationNode>): SelectQueryNode;
44
43
  cloneWithFrontModifier(select: SelectQueryNode, modifier: SelectModifierNode): SelectQueryNode;
45
44
  cloneWithEndModifier(select: SelectQueryNode, modifier: SelectModifierNode): SelectQueryNode;
46
45
  cloneWithOrderByItem(selectNode: SelectQueryNode, item: OrderByItemNode): SelectQueryNode;
47
46
  cloneWithGroupByItems(selectNode: SelectQueryNode, items: ReadonlyArray<GroupByItemNode>): SelectQueryNode;
48
47
  cloneWithLimit(selectNode: SelectQueryNode, limit: LimitNode): SelectQueryNode;
49
48
  cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
50
- cloneWithHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
51
- cloneWithOrHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
52
- cloneWithUnion(selectNode: SelectQueryNode, union: UnionNode): SelectQueryNode;
49
+ cloneWithHaving(selectNode: SelectQueryNode, operation: OperationNode): SelectQueryNode;
50
+ cloneWithOrHaving(selectNode: SelectQueryNode, operation: OperationNode): SelectQueryNode;
51
+ cloneWithSetOperation(selectNode: SelectQueryNode, setOperation: SetOperationNode): SelectQueryNode;
53
52
  cloneWithExplain(selectNode: SelectQueryNode, explain: ExplainNode): SelectQueryNode;
54
53
  }>;
@@ -26,12 +26,12 @@ export const SelectQueryNode = freeze({
26
26
  : freeze(selections),
27
27
  });
28
28
  },
29
- cloneWithDistinctOnSelections(select, selections) {
29
+ cloneWithDistinctOn(select, expressions) {
30
30
  return freeze({
31
31
  ...select,
32
- distinctOnSelections: select.distinctOnSelections
33
- ? freeze([...select.distinctOnSelections, ...selections])
34
- : freeze(selections),
32
+ distinctOn: select.distinctOn
33
+ ? freeze([...select.distinctOn, ...expressions])
34
+ : freeze(expressions),
35
35
  });
36
36
  },
37
37
  cloneWithFrontModifier(select, modifier) {
@@ -78,28 +78,28 @@ export const SelectQueryNode = freeze({
78
78
  offset,
79
79
  });
80
80
  },
81
- cloneWithHaving(selectNode, filter) {
81
+ cloneWithHaving(selectNode, operation) {
82
82
  return freeze({
83
83
  ...selectNode,
84
84
  having: selectNode.having
85
- ? HavingNode.cloneWithFilter(selectNode.having, 'And', filter)
86
- : HavingNode.create(filter),
85
+ ? HavingNode.cloneWithOperation(selectNode.having, 'And', operation)
86
+ : HavingNode.create(operation),
87
87
  });
88
88
  },
89
- cloneWithOrHaving(selectNode, filter) {
89
+ cloneWithOrHaving(selectNode, operation) {
90
90
  return freeze({
91
91
  ...selectNode,
92
92
  having: selectNode.having
93
- ? HavingNode.cloneWithFilter(selectNode.having, 'Or', filter)
94
- : HavingNode.create(filter),
93
+ ? HavingNode.cloneWithOperation(selectNode.having, 'Or', operation)
94
+ : HavingNode.create(operation),
95
95
  });
96
96
  },
97
- cloneWithUnion(selectNode, union) {
97
+ cloneWithSetOperation(selectNode, setOperation) {
98
98
  return freeze({
99
99
  ...selectNode,
100
- union: selectNode.union
101
- ? freeze([...selectNode.union, union])
102
- : freeze([union]),
100
+ setOperations: selectNode.setOperations
101
+ ? freeze([...selectNode.setOperations, setOperation])
102
+ : freeze([setOperation]),
103
103
  });
104
104
  },
105
105
  cloneWithExplain(selectNode, explain) {
@@ -1,10 +1,9 @@
1
1
  import { AliasNode } from './alias-node.js';
2
- import { ColumnNode } from './column-node.js';
3
2
  import { OperationNode } from './operation-node.js';
4
- import { ReferenceNode } from './reference-node.js';
5
3
  import { SelectAllNode } from './select-all-node.js';
4
+ import { SimpleReferenceExpressionNode } from './simple-reference-expression-node.js';
6
5
  import { TableNode } from './table-node.js';
7
- declare type SelectionNodeChild = ColumnNode | ReferenceNode | AliasNode | SelectAllNode;
6
+ declare type SelectionNodeChild = SimpleReferenceExpressionNode | AliasNode | SelectAllNode;
8
7
  export interface SelectionNode extends OperationNode {
9
8
  readonly kind: 'SelectionNode';
10
9
  readonly selection: SelectionNodeChild;
@@ -0,0 +1,15 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ export declare type SetOperator = 'union' | 'intersect' | 'except';
3
+ export interface SetOperationNode extends OperationNode {
4
+ kind: 'SetOperationNode';
5
+ operator: SetOperator;
6
+ expression: OperationNode;
7
+ all: boolean;
8
+ }
9
+ /**
10
+ * @internal
11
+ */
12
+ export declare const SetOperationNode: Readonly<{
13
+ is(node: OperationNode): node is SetOperationNode;
14
+ create(operator: SetOperator, expression: OperationNode, all: boolean): SetOperationNode;
15
+ }>;
@@ -0,0 +1,18 @@
1
+ /// <reference types="./set-operation-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const SetOperationNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'SetOperationNode';
9
+ },
10
+ create(operator, expression, all) {
11
+ return freeze({
12
+ kind: 'SetOperationNode',
13
+ operator,
14
+ expression,
15
+ all,
16
+ });
17
+ },
18
+ });
@@ -0,0 +1,3 @@
1
+ import { ColumnNode } from './column-node.js';
2
+ import { ReferenceNode } from './reference-node.js';
3
+ export declare type SimpleReferenceExpressionNode = ColumnNode | ReferenceNode;
@@ -0,0 +1,2 @@
1
+ /// <reference types="./simple-reference-expression-node.d.ts" />
2
+ export {};
@@ -0,0 +1,13 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ export interface UnaryOperationNode extends OperationNode {
3
+ readonly kind: 'UnaryOperationNode';
4
+ readonly operator: OperationNode;
5
+ readonly operand: OperationNode;
6
+ }
7
+ /**
8
+ * @internal
9
+ */
10
+ export declare const UnaryOperationNode: Readonly<{
11
+ is(node: OperationNode): node is UnaryOperationNode;
12
+ create(operator: OperationNode, operand: OperationNode): UnaryOperationNode;
13
+ }>;
@@ -0,0 +1,17 @@
1
+ /// <reference types="./unary-operation-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const UnaryOperationNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'UnaryOperationNode';
9
+ },
10
+ create(operator, operand) {
11
+ return freeze({
12
+ kind: 'UnaryOperationNode',
13
+ operator,
14
+ operand,
15
+ });
16
+ },
17
+ });
@@ -1,7 +1,6 @@
1
1
  import { ColumnUpdateNode } from './column-update-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 { PrimitiveValueListNode } from './primitive-value-list-node.js';
6
5
  import { ReturningNode } from './returning-node.js';
7
6
  import { ValueListNode } from './value-list-node.js';
@@ -12,7 +11,7 @@ import { ExplainNode } from './explain-node.js';
12
11
  export declare type UpdateValuesNode = ValueListNode | PrimitiveValueListNode;
13
12
  export interface UpdateQueryNode extends OperationNode {
14
13
  readonly kind: 'UpdateQueryNode';
15
- readonly table: TableExpressionNode;
14
+ readonly table: OperationNode;
16
15
  readonly from?: FromNode;
17
16
  readonly joins?: ReadonlyArray<JoinNode>;
18
17
  readonly where?: WhereNode;
@@ -26,8 +25,8 @@ export interface UpdateQueryNode extends OperationNode {
26
25
  */
27
26
  export declare const UpdateQueryNode: Readonly<{
28
27
  is(node: OperationNode): node is UpdateQueryNode;
29
- create(table: TableExpressionNode, withNode?: WithNode): UpdateQueryNode;
30
- cloneWithFromItems(updateQuery: UpdateQueryNode, fromItems: ReadonlyArray<TableExpressionNode>): UpdateQueryNode;
28
+ create(table: OperationNode, withNode?: WithNode): UpdateQueryNode;
29
+ cloneWithFromItems(updateQuery: UpdateQueryNode, fromItems: ReadonlyArray<OperationNode>): UpdateQueryNode;
31
30
  cloneWithUpdates(updateQuery: UpdateQueryNode, updates: ReadonlyArray<ColumnUpdateNode>): UpdateQueryNode;
32
31
  cloneWithExplain(updateQuery: UpdateQueryNode, explain: ExplainNode): UpdateQueryNode;
33
32
  }>;