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,8 +1,9 @@
1
+ import { Expression } from '../expression/expression.js';
1
2
  import { JoinNode } from '../operation-node/join-node.js';
2
3
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
- import { ExistsExpression, FilterOperator, FilterValueExpressionOrList } from '../parser/filter-parser.js';
4
+ import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
4
5
  import { ReferenceExpression } from '../parser/reference-parser.js';
5
- import { AnyRawBuilder } from '../util/type-utils.js';
6
+ import { ExistsExpression } from '../parser/unary-operation-parser.js';
6
7
  export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
7
8
  #private;
8
9
  constructor(props: JoinBuilderProps);
@@ -12,32 +13,32 @@ export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNo
12
13
  *
13
14
  * See {@link WhereInterface.where} for documentation and examples.
14
15
  */
15
- on<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): JoinBuilder<DB, TB>;
16
+ on<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): JoinBuilder<DB, TB>;
16
17
  on(grouper: (qb: JoinBuilder<DB, TB>) => JoinBuilder<DB, TB>): JoinBuilder<DB, TB>;
17
- on(raw: AnyRawBuilder): JoinBuilder<DB, TB>;
18
+ on(expression: Expression<any>): JoinBuilder<DB, TB>;
18
19
  /**
19
20
  * Just like {@link WhereInterface.orWhere} but adds an item to the join's
20
21
  * `on` clause instead.
21
22
  *
22
23
  * See {@link WhereInterface.orWhere} for documentation and examples.
23
24
  */
24
- orOn<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): JoinBuilder<DB, TB>;
25
+ orOn<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): JoinBuilder<DB, TB>;
25
26
  orOn(grouper: (qb: JoinBuilder<DB, TB>) => JoinBuilder<DB, TB>): JoinBuilder<DB, TB>;
26
- orOn(raw: AnyRawBuilder): JoinBuilder<DB, TB>;
27
+ orOn(expression: Expression<any>): JoinBuilder<DB, TB>;
27
28
  /**
28
29
  * Just like {@link WhereInterface.whereRef} but adds an item to the join's
29
30
  * `on` clause instead.
30
31
  *
31
32
  * See {@link WhereInterface.whereRef} for documentation and examples.
32
33
  */
33
- onRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): JoinBuilder<DB, TB>;
34
+ onRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): JoinBuilder<DB, TB>;
34
35
  /**
35
36
  * Just like {@link WhereInterface.orWhereRef} but adds an item to the join's
36
37
  * `on` clause instead.
37
38
  *
38
39
  * See {@link WhereInterface.orWhereRef} for documentation and examples.
39
40
  */
40
- orOnRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): JoinBuilder<DB, TB>;
41
+ orOnRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): JoinBuilder<DB, TB>;
41
42
  /**
42
43
  * Just like {@link WhereInterface.whereExists} but adds an item to the join's
43
44
  * `on` clause instead.
@@ -1,7 +1,8 @@
1
1
  /// <reference types="./join-builder.d.ts" />
2
2
  import { JoinNode } from '../operation-node/join-node.js';
3
3
  import { RawNode } from '../operation-node/raw-node.js';
4
- import { parseExistFilter, parseNotExistFilter, parseOnFilter, parseReferenceFilter, } from '../parser/filter-parser.js';
4
+ import { parseOn, parseReferentialFilter, } from '../parser/binary-operation-parser.js';
5
+ import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
5
6
  import { freeze } from '../util/object-utils.js';
6
7
  import { preventAwait } from '../util/prevent-await.js';
7
8
  export class JoinBuilder {
@@ -12,13 +13,13 @@ export class JoinBuilder {
12
13
  on(...args) {
13
14
  return new JoinBuilder({
14
15
  ...this.#props,
15
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseOnFilter(args)),
16
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseOn(args)),
16
17
  });
17
18
  }
18
19
  orOn(...args) {
19
20
  return new JoinBuilder({
20
21
  ...this.#props,
21
- joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseOnFilter(args)),
22
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseOn(args)),
22
23
  });
23
24
  }
24
25
  /**
@@ -30,7 +31,7 @@ export class JoinBuilder {
30
31
  onRef(lhs, op, rhs) {
31
32
  return new JoinBuilder({
32
33
  ...this.#props,
33
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseReferenceFilter(lhs, op, rhs)),
34
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseReferentialFilter(lhs, op, rhs)),
34
35
  });
35
36
  }
36
37
  /**
@@ -42,7 +43,7 @@ export class JoinBuilder {
42
43
  orOnRef(lhs, op, rhs) {
43
44
  return new JoinBuilder({
44
45
  ...this.#props,
45
- joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseReferenceFilter(lhs, op, rhs)),
46
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseReferentialFilter(lhs, op, rhs)),
46
47
  });
47
48
  }
48
49
  /**
@@ -54,7 +55,7 @@ export class JoinBuilder {
54
55
  onExists(arg) {
55
56
  return new JoinBuilder({
56
57
  ...this.#props,
57
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseExistFilter(arg)),
58
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseExists(arg)),
58
59
  });
59
60
  }
60
61
  /**
@@ -66,7 +67,7 @@ export class JoinBuilder {
66
67
  onNotExists(arg) {
67
68
  return new JoinBuilder({
68
69
  ...this.#props,
69
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseNotExistFilter(arg)),
70
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseNotExists(arg)),
70
71
  });
71
72
  }
72
73
  /**
@@ -78,7 +79,7 @@ export class JoinBuilder {
78
79
  orOnExists(arg) {
79
80
  return new JoinBuilder({
80
81
  ...this.#props,
81
- joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseExistFilter(arg)),
82
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseExists(arg)),
82
83
  });
83
84
  }
84
85
  /**
@@ -90,7 +91,7 @@ export class JoinBuilder {
90
91
  orOnNotExists(arg) {
91
92
  return new JoinBuilder({
92
93
  ...this.#props,
93
- joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseNotExistFilter(arg)),
94
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseNotExists(arg)),
94
95
  });
95
96
  }
96
97
  /**
@@ -1,10 +1,11 @@
1
+ import { Expression } from '../expression/expression.js';
1
2
  import { OnConflictNode } from '../operation-node/on-conflict-node.js';
2
3
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
- import { ComplexExpression } from '../parser/complex-expression-parser.js';
4
- import { WhereGrouper, FilterOperator, FilterValueExpressionOrList } from '../parser/filter-parser.js';
4
+ import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
5
+ import { ExpressionOrFactory } from '../parser/expression-parser.js';
5
6
  import { ReferenceExpression } from '../parser/reference-parser.js';
6
7
  import { MutationObject } from '../parser/update-set-parser.js';
7
- import { AnyColumn, AnyRawBuilder } from '../util/type-utils.js';
8
+ import { AnyColumn } from '../util/type-utils.js';
8
9
  import { WhereInterface } from './where-interface.js';
9
10
  export declare class OnConflictBuilder<DB, TB extends keyof DB> implements WhereInterface<DB, TB> {
10
11
  #private;
@@ -38,13 +39,13 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
38
39
  * Also see the {@link column}, {@link columns} and {@link constraint}
39
40
  * methods for alternative ways to specify the conflict target.
40
41
  */
41
- expression(expression: AnyRawBuilder): OnConflictBuilder<DB, TB>;
42
+ expression(expression: Expression<any>): OnConflictBuilder<DB, TB>;
42
43
  /**
43
44
  * Specify an index predicate for the index target.
44
45
  *
45
46
  * See {@link WhereInterface.where} for more info.
46
47
  */
47
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): OnConflictBuilder<DB, TB>;
48
+ where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): OnConflictBuilder<DB, TB>;
48
49
  /**
49
50
  * Adds a `where` clause to the query.
50
51
  *
@@ -230,19 +231,19 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
230
231
  * ```
231
232
  */
232
233
  where(grouper: WhereGrouper<DB, TB>): OnConflictBuilder<DB, TB>;
233
- where(raw: AnyRawBuilder): OnConflictBuilder<DB, TB>;
234
+ where(expression: Expression<any>): OnConflictBuilder<DB, TB>;
234
235
  /**
235
236
  * Specify an index predicate for the index target.
236
237
  *
237
238
  * See {@link WhereInterface.whereRef} for more info.
238
239
  */
239
- whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): OnConflictBuilder<DB, TB>;
240
+ whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): OnConflictBuilder<DB, TB>;
240
241
  /**
241
242
  * Specify an index predicate for the index target.
242
243
  *
243
244
  * See {@link WhereInterface.orWhere} for more info.
244
245
  */
245
- orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): OnConflictBuilder<DB, TB>;
246
+ orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): OnConflictBuilder<DB, TB>;
246
247
  /**
247
248
  * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
248
249
  *
@@ -307,37 +308,37 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
307
308
  * ```
308
309
  */
309
310
  orWhere(grouper: WhereGrouper<DB, TB>): OnConflictBuilder<DB, TB>;
310
- orWhere(raw: AnyRawBuilder): OnConflictBuilder<DB, TB>;
311
+ orWhere(expression: Expression<any>): OnConflictBuilder<DB, TB>;
311
312
  /**
312
313
  * Specify an index predicate for the index target.
313
314
  *
314
315
  * See {@link WhereInterface.orWhereRef} for more info.
315
316
  */
316
- orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): OnConflictBuilder<DB, TB>;
317
+ orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): OnConflictBuilder<DB, TB>;
317
318
  /**
318
319
  * Specify an index predicate for the index target.
319
320
  *
320
321
  * See {@link WhereInterface.whereExists} for more info.
321
322
  */
322
- whereExists(arg: ComplexExpression<DB, TB>): OnConflictBuilder<DB, TB>;
323
+ whereExists(arg: ExpressionOrFactory<DB, TB, any>): OnConflictBuilder<DB, TB>;
323
324
  /**
324
325
  * Specify an index predicate for the index target.
325
326
  *
326
327
  * See {@link WhereInterface.whereNotExists} for more info.
327
328
  */
328
- whereNotExists(arg: ComplexExpression<DB, TB>): OnConflictBuilder<DB, TB>;
329
+ whereNotExists(arg: ExpressionOrFactory<DB, TB, any>): OnConflictBuilder<DB, TB>;
329
330
  /**
330
331
  * Specify an index predicate for the index target.
331
332
  *
332
333
  * See {@link WhereInterface.orWhereExists} for more info.
333
334
  */
334
- orWhereExists(arg: ComplexExpression<DB, TB>): OnConflictBuilder<DB, TB>;
335
+ orWhereExists(arg: ExpressionOrFactory<DB, TB, any>): OnConflictBuilder<DB, TB>;
335
336
  /**
336
337
  * Specify an index predicate for the index target.
337
338
  *
338
339
  * See {@link WhereInterface.orWhereNotExists} for more info.
339
340
  */
340
- orWhereNotExists(arg: ComplexExpression<DB, TB>): OnConflictBuilder<DB, TB>;
341
+ orWhereNotExists(arg: ExpressionOrFactory<DB, TB, any>): OnConflictBuilder<DB, TB>;
341
342
  /**
342
343
  * Adds the "do nothing" conflict action.
343
344
  *
@@ -408,7 +409,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
408
409
  *
409
410
  * See {@link WhereInterface.where} for more info.
410
411
  */
411
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): OnConflictUpdateBuilder<DB, TB>;
412
+ where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): OnConflictUpdateBuilder<DB, TB>;
412
413
  /**
413
414
  * Adds a `where` clause to the query.
414
415
  *
@@ -594,19 +595,19 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
594
595
  * ```
595
596
  */
596
597
  where(grouper: WhereGrouper<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
597
- where(raw: AnyRawBuilder): OnConflictUpdateBuilder<DB, TB>;
598
+ where(expression: Expression<any>): OnConflictUpdateBuilder<DB, TB>;
598
599
  /**
599
600
  * Specify a where condition for the update operation.
600
601
  *
601
602
  * See {@link WhereInterface.whereRef} for more info.
602
603
  */
603
- whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
604
+ whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
604
605
  /**
605
606
  * Specify a where condition for the update operation.
606
607
  *
607
608
  * See {@link WhereInterface.orWhere} for more info.
608
609
  */
609
- orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): OnConflictUpdateBuilder<DB, TB>;
610
+ orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): OnConflictUpdateBuilder<DB, TB>;
610
611
  /**
611
612
  * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
612
613
  *
@@ -671,36 +672,36 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
671
672
  * ```
672
673
  */
673
674
  orWhere(grouper: WhereGrouper<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
674
- orWhere(raw: AnyRawBuilder): OnConflictUpdateBuilder<DB, TB>;
675
+ orWhere(expression: Expression<any>): OnConflictUpdateBuilder<DB, TB>;
675
676
  /**
676
677
  * Specify a where condition for the update operation.
677
678
  *
678
679
  * See {@link WhereInterface.orWhereRef} for more info.
679
680
  */
680
- orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
681
+ orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
681
682
  /**
682
683
  * Specify a where condition for the update operation.
683
684
  *
684
685
  * See {@link WhereInterface.whereExists} for more info.
685
686
  */
686
- whereExists(arg: ComplexExpression<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
687
+ whereExists(arg: ExpressionOrFactory<DB, TB, any>): OnConflictUpdateBuilder<DB, TB>;
687
688
  /**
688
689
  * Specify a where condition for the update operation.
689
690
  *
690
691
  * See {@link WhereInterface.whereNotExists} for more info.
691
692
  */
692
- whereNotExists(arg: ComplexExpression<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
693
+ whereNotExists(arg: ExpressionOrFactory<DB, TB, any>): OnConflictUpdateBuilder<DB, TB>;
693
694
  /**
694
695
  * Specify a where condition for the update operation.
695
696
  *
696
697
  * See {@link WhereInterface.orWhereExists} for more info.
697
698
  */
698
- orWhereExists(arg: ComplexExpression<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
699
+ orWhereExists(arg: ExpressionOrFactory<DB, TB, any>): OnConflictUpdateBuilder<DB, TB>;
699
700
  /**
700
701
  * Specify a where condition for the update operation.
701
702
  *
702
703
  * See {@link WhereInterface.orWhereNotExists} for more info.
703
704
  */
704
- orWhereNotExists(arg: ComplexExpression<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
705
+ orWhereNotExists(arg: ExpressionOrFactory<DB, TB, any>): OnConflictUpdateBuilder<DB, TB>;
705
706
  toOperationNode(): OnConflictNode;
706
707
  }
@@ -2,7 +2,8 @@
2
2
  import { ColumnNode } from '../operation-node/column-node.js';
3
3
  import { IdentifierNode } from '../operation-node/identifier-node.js';
4
4
  import { OnConflictNode } from '../operation-node/on-conflict-node.js';
5
- import { parseWhereFilter, parseReferenceFilter, parseExistFilter, parseNotExistFilter, } from '../parser/filter-parser.js';
5
+ import { parseReferentialFilter, parseWhere, } from '../parser/binary-operation-parser.js';
6
+ import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
6
7
  import { parseUpdateObject, } from '../parser/update-set-parser.js';
7
8
  import { freeze } from '../util/object-utils.js';
8
9
  import { preventAwait } from '../util/prevent-await.js';
@@ -78,7 +79,7 @@ export class OnConflictBuilder {
78
79
  where(...args) {
79
80
  return new OnConflictBuilder({
80
81
  ...this.#props,
81
- onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseWhereFilter(args)),
82
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseWhere(args)),
82
83
  });
83
84
  }
84
85
  /**
@@ -89,13 +90,13 @@ export class OnConflictBuilder {
89
90
  whereRef(lhs, op, rhs) {
90
91
  return new OnConflictBuilder({
91
92
  ...this.#props,
92
- onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseReferenceFilter(lhs, op, rhs)),
93
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseReferentialFilter(lhs, op, rhs)),
93
94
  });
94
95
  }
95
96
  orWhere(...args) {
96
97
  return new OnConflictBuilder({
97
98
  ...this.#props,
98
- onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseWhereFilter(args)),
99
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseWhere(args)),
99
100
  });
100
101
  }
101
102
  /**
@@ -106,7 +107,7 @@ export class OnConflictBuilder {
106
107
  orWhereRef(lhs, op, rhs) {
107
108
  return new OnConflictBuilder({
108
109
  ...this.#props,
109
- onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseReferenceFilter(lhs, op, rhs)),
110
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseReferentialFilter(lhs, op, rhs)),
110
111
  });
111
112
  }
112
113
  /**
@@ -117,7 +118,7 @@ export class OnConflictBuilder {
117
118
  whereExists(arg) {
118
119
  return new OnConflictBuilder({
119
120
  ...this.#props,
120
- onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseExistFilter(arg)),
121
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseExists(arg)),
121
122
  });
122
123
  }
123
124
  /**
@@ -128,7 +129,7 @@ export class OnConflictBuilder {
128
129
  whereNotExists(arg) {
129
130
  return new OnConflictBuilder({
130
131
  ...this.#props,
131
- onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseNotExistFilter(arg)),
132
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseNotExists(arg)),
132
133
  });
133
134
  }
134
135
  /**
@@ -139,7 +140,7 @@ export class OnConflictBuilder {
139
140
  orWhereExists(arg) {
140
141
  return new OnConflictBuilder({
141
142
  ...this.#props,
142
- onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseExistFilter(arg)),
143
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseExists(arg)),
143
144
  });
144
145
  }
145
146
  /**
@@ -150,7 +151,7 @@ export class OnConflictBuilder {
150
151
  orWhereNotExists(arg) {
151
152
  return new OnConflictBuilder({
152
153
  ...this.#props,
153
- onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseNotExistFilter(arg)),
154
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseNotExists(arg)),
154
155
  });
155
156
  }
156
157
  /**
@@ -236,7 +237,7 @@ export class OnConflictUpdateBuilder {
236
237
  where(...args) {
237
238
  return new OnConflictUpdateBuilder({
238
239
  ...this.#props,
239
- onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseWhereFilter(args)),
240
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseWhere(args)),
240
241
  });
241
242
  }
242
243
  /**
@@ -247,13 +248,13 @@ export class OnConflictUpdateBuilder {
247
248
  whereRef(lhs, op, rhs) {
248
249
  return new OnConflictUpdateBuilder({
249
250
  ...this.#props,
250
- onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseReferenceFilter(lhs, op, rhs)),
251
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseReferentialFilter(lhs, op, rhs)),
251
252
  });
252
253
  }
253
254
  orWhere(...args) {
254
255
  return new OnConflictUpdateBuilder({
255
256
  ...this.#props,
256
- onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseWhereFilter(args)),
257
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseWhere(args)),
257
258
  });
258
259
  }
259
260
  /**
@@ -264,7 +265,7 @@ export class OnConflictUpdateBuilder {
264
265
  orWhereRef(lhs, op, rhs) {
265
266
  return new OnConflictUpdateBuilder({
266
267
  ...this.#props,
267
- onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseReferenceFilter(lhs, op, rhs)),
268
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseReferentialFilter(lhs, op, rhs)),
268
269
  });
269
270
  }
270
271
  /**
@@ -275,7 +276,7 @@ export class OnConflictUpdateBuilder {
275
276
  whereExists(arg) {
276
277
  return new OnConflictUpdateBuilder({
277
278
  ...this.#props,
278
- onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseExistFilter(arg)),
279
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseExists(arg)),
279
280
  });
280
281
  }
281
282
  /**
@@ -286,7 +287,7 @@ export class OnConflictUpdateBuilder {
286
287
  whereNotExists(arg) {
287
288
  return new OnConflictUpdateBuilder({
288
289
  ...this.#props,
289
- onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseNotExistFilter(arg)),
290
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseNotExists(arg)),
290
291
  });
291
292
  }
292
293
  /**
@@ -297,7 +298,7 @@ export class OnConflictUpdateBuilder {
297
298
  orWhereExists(arg) {
298
299
  return new OnConflictUpdateBuilder({
299
300
  ...this.#props,
300
- onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseExistFilter(arg)),
301
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseExists(arg)),
301
302
  });
302
303
  }
303
304
  /**
@@ -308,7 +309,7 @@ export class OnConflictUpdateBuilder {
308
309
  orWhereNotExists(arg) {
309
310
  return new OnConflictUpdateBuilder({
310
311
  ...this.#props,
311
- onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseNotExistFilter(arg)),
312
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseNotExists(arg)),
312
313
  });
313
314
  }
314
315
  toOperationNode() {
@@ -0,0 +1,59 @@
1
+ import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
2
+ import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
+ import { OverNode } from '../operation-node/over-node.js';
4
+ import { OrderByDirectionExpression } from '../parser/order-by-parser.js';
5
+ import { PartitionByExpression } from '../parser/partition-by-parser.js';
6
+ import { StringReference } from '../parser/reference-parser.js';
7
+ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
8
+ #private;
9
+ constructor(props: OverBuilderProps);
10
+ /**
11
+ * Adds an order by clause item inside the over function.
12
+ *
13
+ * ```ts
14
+ * const result = await db
15
+ * .selectFrom('person')
16
+ * .select(
17
+ * eb => eb.fn.avg<number>('age').over(
18
+ * ob => ob.orderBy('first_name', 'asc').orderBy('last_name', 'asc')
19
+ * ).as('average_age')
20
+ * )
21
+ * .execute()
22
+ * ```
23
+ *
24
+ * The generated SQL (PostgreSQL):
25
+ *
26
+ * ```sql
27
+ * select avg("age") over(order by "first_name" asc, "last_name" asc) as "average_age"
28
+ * from "person"
29
+ * ```
30
+ */
31
+ orderBy(orderBy: StringReference<DB, TB> | DynamicReferenceBuilder<any>, direction?: OrderByDirectionExpression): OverBuilder<DB, TB>;
32
+ /**
33
+ * Adds partition by clause item/s inside the over function.
34
+ *
35
+ * ```ts
36
+ * const result = await db
37
+ * .selectFrom('person')
38
+ * .select(
39
+ * eb => eb.fn.avg<number>('age').over(
40
+ * ob => ob.partitionBy(['last_name', 'first_name'])
41
+ * ).as('average_age')
42
+ * )
43
+ * .execute()
44
+ * ```
45
+ *
46
+ * The generated SQL (PostgreSQL):
47
+ *
48
+ * ```sql
49
+ * select avg("age") over(partition by "last_name", "first_name") as "average_age"
50
+ * from "person"
51
+ * ```
52
+ */
53
+ partitionBy(partitionBy: ReadonlyArray<PartitionByExpression<DB, TB>>): OverBuilder<DB, TB>;
54
+ partitionBy(partitionBy: PartitionByExpression<DB, TB>): OverBuilder<DB, TB>;
55
+ toOperationNode(): OverNode;
56
+ }
57
+ export interface OverBuilderProps {
58
+ readonly overNode: OverNode;
59
+ }
@@ -0,0 +1,47 @@
1
+ /// <reference types="./over-builder.d.ts" />
2
+ import { OverNode } from '../operation-node/over-node.js';
3
+ import { parseOrderBy, } from '../parser/order-by-parser.js';
4
+ import { parsePartitionBy, } from '../parser/partition-by-parser.js';
5
+ import { freeze } from '../util/object-utils.js';
6
+ import { preventAwait } from '../util/prevent-await.js';
7
+ export class OverBuilder {
8
+ #props;
9
+ constructor(props) {
10
+ this.#props = freeze(props);
11
+ }
12
+ /**
13
+ * Adds an order by clause item inside the over function.
14
+ *
15
+ * ```ts
16
+ * const result = await db
17
+ * .selectFrom('person')
18
+ * .select(
19
+ * eb => eb.fn.avg<number>('age').over(
20
+ * ob => ob.orderBy('first_name', 'asc').orderBy('last_name', 'asc')
21
+ * ).as('average_age')
22
+ * )
23
+ * .execute()
24
+ * ```
25
+ *
26
+ * The generated SQL (PostgreSQL):
27
+ *
28
+ * ```sql
29
+ * select avg("age") over(order by "first_name" asc, "last_name" asc) as "average_age"
30
+ * from "person"
31
+ * ```
32
+ */
33
+ orderBy(orderBy, direction) {
34
+ return new OverBuilder({
35
+ overNode: OverNode.cloneWithOrderByItem(this.#props.overNode, parseOrderBy(orderBy, direction)),
36
+ });
37
+ }
38
+ partitionBy(partitionBy) {
39
+ return new OverBuilder({
40
+ overNode: OverNode.cloneWithPartitionByItems(this.#props.overNode, parsePartitionBy(partitionBy)),
41
+ });
42
+ }
43
+ toOperationNode() {
44
+ return this.#props.overNode;
45
+ }
46
+ }
47
+ preventAwait(OverBuilder, "don't await OverBuilder instances. They are never executed directly and are always just a part of a query.");