kysely 0.23.4 → 0.24.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 (314) hide show
  1. package/README.md +49 -25
  2. package/dist/cjs/dialect/database-introspector.d.ts +4 -2
  3. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
  4. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
  5. package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
  6. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
  7. package/dist/cjs/dialect/mysql/mysql-introspector.js +19 -13
  8. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  9. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
  10. package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -1
  11. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  12. package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
  13. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  14. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +6 -5
  15. package/dist/cjs/driver/runtime-driver.js +4 -2
  16. package/dist/cjs/expression/expression-builder.d.ts +386 -0
  17. package/dist/cjs/expression/expression-builder.js +92 -0
  18. package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
  19. package/dist/cjs/expression/expression-wrapper.js +54 -0
  20. package/dist/cjs/expression/expression.d.ts +1 -1
  21. package/dist/cjs/helpers/postgres.d.ts +133 -0
  22. package/dist/cjs/helpers/postgres.js +141 -0
  23. package/dist/cjs/index.d.ts +4 -3
  24. package/dist/cjs/index.js +4 -2
  25. package/dist/cjs/kysely.d.ts +10 -0
  26. package/dist/cjs/kysely.js +12 -1
  27. package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
  28. package/dist/cjs/migration/migrator.d.ts +5 -2
  29. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -2
  30. package/dist/cjs/operation-node/aggregate-function-node.js +2 -2
  31. package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
  32. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
  33. package/dist/cjs/operation-node/delete-query-node.js +2 -8
  34. package/dist/cjs/operation-node/function-node.d.ts +13 -0
  35. package/dist/cjs/operation-node/function-node.js +19 -0
  36. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  37. package/dist/cjs/operation-node/operation-node-transformer.js +11 -2
  38. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  39. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  40. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/operator-node.d.ts +13 -2
  42. package/dist/cjs/operation-node/operator-node.js +38 -3
  43. package/dist/cjs/operation-node/query-node.d.ts +25 -8
  44. package/dist/cjs/operation-node/query-node.js +9 -2
  45. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  46. package/dist/cjs/operation-node/select-query-node.js +0 -6
  47. package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
  48. package/dist/cjs/operation-node/update-query-node.js +0 -6
  49. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
  50. package/dist/cjs/parser/binary-operation-parser.js +89 -39
  51. package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
  52. package/dist/cjs/parser/coalesce-parser.js +0 -9
  53. package/dist/cjs/parser/expression-parser.d.ts +7 -3
  54. package/dist/cjs/parser/expression-parser.js +4 -4
  55. package/dist/cjs/parser/group-by-parser.d.ts +3 -2
  56. package/dist/cjs/parser/group-by-parser.js +3 -0
  57. package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
  58. package/dist/cjs/parser/insert-values-parser.js +19 -13
  59. package/dist/cjs/parser/join-parser.js +1 -1
  60. package/dist/cjs/parser/parse-utils.d.ts +0 -2
  61. package/dist/cjs/parser/parse-utils.js +1 -8
  62. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  63. package/dist/cjs/parser/select-parser.d.ts +5 -13
  64. package/dist/cjs/parser/select-parser.js +8 -4
  65. package/dist/cjs/parser/table-parser.d.ts +6 -3
  66. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
  67. package/dist/cjs/parser/unary-operation-parser.js +9 -8
  68. package/dist/cjs/parser/update-set-parser.d.ts +4 -1
  69. package/dist/cjs/parser/update-set-parser.js +9 -4
  70. package/dist/cjs/parser/value-parser.d.ts +5 -0
  71. package/dist/cjs/parser/value-parser.js +1 -3
  72. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  73. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +10 -4
  74. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  75. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  76. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
  77. package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
  78. package/dist/cjs/query-builder/delete-query-builder.d.ts +224 -205
  79. package/dist/cjs/query-builder/delete-query-builder.js +21 -27
  80. package/dist/cjs/query-builder/delete-result.js +3 -0
  81. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  82. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
  83. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  84. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
  85. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  86. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
  87. package/dist/cjs/query-builder/function-module.d.ts +304 -42
  88. package/dist/cjs/query-builder/function-module.js +44 -208
  89. package/dist/cjs/query-builder/having-interface.d.ts +19 -16
  90. package/dist/cjs/query-builder/insert-query-builder.d.ts +78 -30
  91. package/dist/cjs/query-builder/insert-query-builder.js +21 -30
  92. package/dist/cjs/query-builder/insert-result.js +3 -0
  93. package/dist/cjs/query-builder/join-builder.d.ts +23 -26
  94. package/dist/cjs/query-builder/join-builder.js +17 -22
  95. package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
  96. package/dist/cjs/query-builder/no-result-error.js +5 -1
  97. package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
  98. package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
  99. package/dist/cjs/query-builder/over-builder.d.ts +5 -0
  100. package/dist/cjs/query-builder/over-builder.js +7 -0
  101. package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
  102. package/dist/cjs/query-builder/select-query-builder.d.ts +155 -243
  103. package/dist/cjs/query-builder/select-query-builder.js +333 -78
  104. package/dist/cjs/query-builder/update-query-builder.d.ts +149 -217
  105. package/dist/cjs/query-builder/update-query-builder.js +21 -115
  106. package/dist/cjs/query-builder/update-result.js +3 -0
  107. package/dist/cjs/query-builder/where-interface.d.ts +71 -184
  108. package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
  109. package/dist/cjs/query-compiler/default-query-compiler.js +18 -2
  110. package/dist/cjs/query-creator.d.ts +38 -2
  111. package/dist/cjs/query-creator.js +3 -45
  112. package/dist/cjs/query-executor/query-executor.d.ts +3 -3
  113. package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
  114. package/dist/cjs/raw-builder/raw-builder.js +13 -7
  115. package/dist/cjs/raw-builder/sql.d.ts +17 -9
  116. package/dist/cjs/raw-builder/sql.js +8 -2
  117. package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
  118. package/dist/cjs/schema/alter-column-builder.js +7 -0
  119. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  120. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  121. package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  122. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
  123. package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
  124. package/dist/cjs/schema/column-definition-builder.js +8 -1
  125. package/dist/cjs/schema/create-index-builder.d.ts +51 -9
  126. package/dist/cjs/schema/create-index-builder.js +17 -0
  127. package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
  128. package/dist/cjs/schema/create-schema-builder.js +7 -0
  129. package/dist/cjs/schema/create-table-builder.d.ts +3 -1
  130. package/dist/cjs/schema/create-table-builder.js +3 -1
  131. package/dist/cjs/schema/create-type-builder.d.ts +5 -0
  132. package/dist/cjs/schema/create-type-builder.js +7 -0
  133. package/dist/cjs/schema/create-view-builder.d.ts +5 -0
  134. package/dist/cjs/schema/create-view-builder.js +7 -0
  135. package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
  136. package/dist/cjs/schema/drop-index-builder.js +7 -0
  137. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
  138. package/dist/cjs/schema/drop-schema-builder.js +7 -0
  139. package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
  140. package/dist/cjs/schema/drop-table-builder.js +7 -0
  141. package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
  142. package/dist/cjs/schema/drop-type-builder.js +7 -0
  143. package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
  144. package/dist/cjs/schema/drop-view-builder.js +7 -0
  145. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
  146. package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
  147. package/dist/cjs/util/compilable.d.ts +1 -0
  148. package/dist/cjs/util/compilable.js +6 -0
  149. package/dist/cjs/util/explainable.d.ts +35 -0
  150. package/dist/cjs/util/log.d.ts +2 -0
  151. package/dist/cjs/util/object-utils.js +1 -1
  152. package/dist/cjs/util/streamable.d.ts +29 -0
  153. package/dist/cjs/util/streamable.js +2 -0
  154. package/dist/cjs/util/type-utils.d.ts +6 -4
  155. package/dist/esm/dialect/database-introspector.d.ts +4 -2
  156. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
  157. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  158. package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
  159. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
  160. package/dist/esm/dialect/mysql/mysql-introspector.js +19 -13
  161. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  162. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
  163. package/dist/esm/dialect/postgres/postgres-introspector.js +3 -1
  164. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  165. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  166. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  167. package/dist/esm/dialect/sqlite/sqlite-introspector.js +6 -5
  168. package/dist/esm/driver/runtime-driver.js +4 -2
  169. package/dist/esm/expression/expression-builder.d.ts +386 -0
  170. package/dist/esm/expression/expression-builder.js +88 -0
  171. package/dist/esm/expression/expression-wrapper.d.ts +92 -0
  172. package/dist/esm/expression/expression-wrapper.js +50 -0
  173. package/dist/esm/expression/expression.d.ts +1 -1
  174. package/dist/esm/helpers/postgres.d.ts +133 -0
  175. package/dist/esm/helpers/postgres.js +136 -0
  176. package/dist/esm/index.d.ts +4 -3
  177. package/dist/esm/index.js +2 -1
  178. package/dist/esm/kysely.d.ts +10 -0
  179. package/dist/esm/kysely.js +13 -2
  180. package/dist/esm/migration/file-migration-provider.d.ts +5 -2
  181. package/dist/esm/migration/migrator.d.ts +5 -2
  182. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -2
  183. package/dist/esm/operation-node/aggregate-function-node.js +2 -2
  184. package/dist/esm/operation-node/create-index-node.d.ts +2 -0
  185. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  186. package/dist/esm/operation-node/delete-query-node.js +2 -8
  187. package/dist/esm/operation-node/function-node.d.ts +13 -0
  188. package/dist/esm/operation-node/function-node.js +17 -0
  189. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  190. package/dist/esm/operation-node/operation-node-transformer.js +11 -2
  191. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  192. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  193. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  194. package/dist/esm/operation-node/operator-node.d.ts +13 -2
  195. package/dist/esm/operation-node/operator-node.js +34 -3
  196. package/dist/esm/operation-node/query-node.d.ts +25 -8
  197. package/dist/esm/operation-node/query-node.js +9 -2
  198. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  199. package/dist/esm/operation-node/select-query-node.js +0 -6
  200. package/dist/esm/operation-node/update-query-node.d.ts +0 -1
  201. package/dist/esm/operation-node/update-query-node.js +0 -6
  202. package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
  203. package/dist/esm/parser/binary-operation-parser.js +85 -37
  204. package/dist/esm/parser/coalesce-parser.d.ts +0 -2
  205. package/dist/esm/parser/coalesce-parser.js +1 -7
  206. package/dist/esm/parser/expression-parser.d.ts +7 -3
  207. package/dist/esm/parser/expression-parser.js +5 -5
  208. package/dist/esm/parser/group-by-parser.d.ts +3 -2
  209. package/dist/esm/parser/group-by-parser.js +3 -0
  210. package/dist/esm/parser/insert-values-parser.d.ts +4 -1
  211. package/dist/esm/parser/insert-values-parser.js +18 -12
  212. package/dist/esm/parser/join-parser.js +2 -2
  213. package/dist/esm/parser/parse-utils.d.ts +0 -2
  214. package/dist/esm/parser/parse-utils.js +0 -6
  215. package/dist/esm/parser/returning-parser.d.ts +2 -1
  216. package/dist/esm/parser/select-parser.d.ts +5 -13
  217. package/dist/esm/parser/select-parser.js +7 -3
  218. package/dist/esm/parser/table-parser.d.ts +6 -3
  219. package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
  220. package/dist/esm/parser/unary-operation-parser.js +8 -8
  221. package/dist/esm/parser/update-set-parser.d.ts +4 -1
  222. package/dist/esm/parser/update-set-parser.js +7 -2
  223. package/dist/esm/parser/value-parser.d.ts +5 -0
  224. package/dist/esm/parser/value-parser.js +1 -3
  225. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  226. package/dist/esm/plugin/camel-case/camel-case-plugin.js +10 -4
  227. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  228. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  229. package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
  230. package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
  231. package/dist/esm/query-builder/delete-query-builder.d.ts +224 -205
  232. package/dist/esm/query-builder/delete-query-builder.js +24 -30
  233. package/dist/esm/query-builder/delete-result.js +3 -0
  234. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  235. package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
  236. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  237. package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
  238. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  239. package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
  240. package/dist/esm/query-builder/function-module.d.ts +304 -42
  241. package/dist/esm/query-builder/function-module.js +43 -207
  242. package/dist/esm/query-builder/having-interface.d.ts +19 -16
  243. package/dist/esm/query-builder/insert-query-builder.d.ts +78 -30
  244. package/dist/esm/query-builder/insert-query-builder.js +25 -34
  245. package/dist/esm/query-builder/insert-result.js +3 -0
  246. package/dist/esm/query-builder/join-builder.d.ts +23 -26
  247. package/dist/esm/query-builder/join-builder.js +18 -23
  248. package/dist/esm/query-builder/no-result-error.d.ts +1 -0
  249. package/dist/esm/query-builder/no-result-error.js +3 -0
  250. package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
  251. package/dist/esm/query-builder/on-conflict-builder.js +54 -38
  252. package/dist/esm/query-builder/over-builder.d.ts +5 -0
  253. package/dist/esm/query-builder/over-builder.js +7 -0
  254. package/dist/esm/query-builder/returning-interface.d.ts +2 -2
  255. package/dist/esm/query-builder/select-query-builder.d.ts +155 -243
  256. package/dist/esm/query-builder/select-query-builder.js +337 -82
  257. package/dist/esm/query-builder/update-query-builder.d.ts +149 -217
  258. package/dist/esm/query-builder/update-query-builder.js +25 -119
  259. package/dist/esm/query-builder/update-result.js +3 -0
  260. package/dist/esm/query-builder/where-interface.d.ts +71 -184
  261. package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
  262. package/dist/esm/query-compiler/default-query-compiler.js +18 -2
  263. package/dist/esm/query-creator.d.ts +38 -2
  264. package/dist/esm/query-creator.js +3 -45
  265. package/dist/esm/query-executor/query-executor.d.ts +3 -3
  266. package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
  267. package/dist/esm/raw-builder/raw-builder.js +13 -7
  268. package/dist/esm/raw-builder/sql.d.ts +17 -9
  269. package/dist/esm/raw-builder/sql.js +8 -2
  270. package/dist/esm/schema/alter-column-builder.d.ts +5 -0
  271. package/dist/esm/schema/alter-column-builder.js +7 -0
  272. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  273. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  274. package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  275. package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
  276. package/dist/esm/schema/column-definition-builder.d.ts +6 -1
  277. package/dist/esm/schema/column-definition-builder.js +8 -1
  278. package/dist/esm/schema/create-index-builder.d.ts +51 -9
  279. package/dist/esm/schema/create-index-builder.js +17 -0
  280. package/dist/esm/schema/create-schema-builder.d.ts +5 -0
  281. package/dist/esm/schema/create-schema-builder.js +7 -0
  282. package/dist/esm/schema/create-table-builder.d.ts +3 -1
  283. package/dist/esm/schema/create-table-builder.js +3 -1
  284. package/dist/esm/schema/create-type-builder.d.ts +5 -0
  285. package/dist/esm/schema/create-type-builder.js +7 -0
  286. package/dist/esm/schema/create-view-builder.d.ts +5 -0
  287. package/dist/esm/schema/create-view-builder.js +7 -0
  288. package/dist/esm/schema/drop-index-builder.d.ts +5 -0
  289. package/dist/esm/schema/drop-index-builder.js +7 -0
  290. package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
  291. package/dist/esm/schema/drop-schema-builder.js +7 -0
  292. package/dist/esm/schema/drop-table-builder.d.ts +5 -0
  293. package/dist/esm/schema/drop-table-builder.js +7 -0
  294. package/dist/esm/schema/drop-type-builder.d.ts +5 -0
  295. package/dist/esm/schema/drop-type-builder.js +7 -0
  296. package/dist/esm/schema/drop-view-builder.d.ts +5 -0
  297. package/dist/esm/schema/drop-view-builder.js +7 -0
  298. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
  299. package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
  300. package/dist/esm/util/compilable.d.ts +1 -0
  301. package/dist/esm/util/compilable.js +4 -1
  302. package/dist/esm/util/explainable.d.ts +35 -0
  303. package/dist/esm/util/log.d.ts +2 -0
  304. package/dist/esm/util/object-utils.js +1 -1
  305. package/dist/esm/util/streamable.d.ts +29 -0
  306. package/dist/esm/util/streamable.js +2 -0
  307. package/dist/esm/util/type-utils.d.ts +6 -4
  308. package/helpers/postgres.d.ts +1 -0
  309. package/helpers/postgres.js +1 -0
  310. package/package.json +20 -9
  311. package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
  312. package/dist/cjs/query-builder/expression-builder.js +0 -107
  313. package/dist/esm/query-builder/expression-builder.d.ts +0 -126
  314. package/dist/esm/query-builder/expression-builder.js +0 -104
@@ -1,16 +1,15 @@
1
1
  /// <reference types="./update-query-builder.d.ts" />
2
2
  import { parseJoin, } from '../parser/join-parser.js';
3
3
  import { parseTableExpressionOrList, } from '../parser/table-parser.js';
4
- import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
4
+ import { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';
5
5
  import { QueryNode } from '../operation-node/query-node.js';
6
6
  import { UpdateQueryNode } from '../operation-node/update-query-node.js';
7
- import { parseUpdateObject } from '../parser/update-set-parser.js';
7
+ import { parseUpdateExpression, } from '../parser/update-set-parser.js';
8
8
  import { preventAwait } from '../util/prevent-await.js';
9
9
  import { freeze } from '../util/object-utils.js';
10
10
  import { UpdateResult } from './update-result.js';
11
- import { NoResultError } from './no-result-error.js';
12
- import { ExplainNode } from '../operation-node/explain-node.js';
13
- import { parseReferentialFilter, parseWhere, } from '../parser/binary-operation-parser.js';
11
+ import { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';
12
+ import { parseReferentialComparison, parseWhere, } from '../parser/binary-operation-parser.js';
14
13
  import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
15
14
  export class UpdateQueryBuilder {
16
15
  #props;
@@ -26,7 +25,7 @@ export class UpdateQueryBuilder {
26
25
  whereRef(lhs, op, rhs) {
27
26
  return new UpdateQueryBuilder({
28
27
  ...this.#props,
29
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
28
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialComparison(lhs, op, rhs)),
30
29
  });
31
30
  }
32
31
  orWhere(...args) {
@@ -38,7 +37,7 @@ export class UpdateQueryBuilder {
38
37
  orWhereRef(lhs, op, rhs) {
39
38
  return new UpdateQueryBuilder({
40
39
  ...this.#props,
41
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
40
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferentialComparison(lhs, op, rhs)),
42
41
  });
43
42
  }
44
43
  whereExists(arg) {
@@ -101,103 +100,16 @@ export class UpdateQueryBuilder {
101
100
  queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('FullJoin', args)),
102
101
  });
103
102
  }
104
- /**
105
- * Sets the values to update for an {@link Kysely.updateTable | update} query.
106
- *
107
- * This method takes an object whose keys are column names and values are
108
- * values to update. In addition to the column's type, the values can be
109
- * raw {@link sql} snippets or select queries.
110
- *
111
- * The return value of an update query is an instance of {@link UpdateResult}.
112
- * You can use the {@link returning} method on supported databases to get out
113
- * the updated rows.
114
- *
115
- * ### Examples
116
- *
117
- * Update a row in `person` table:
118
- *
119
- * ```ts
120
- * const result = await db
121
- * .updateTable('person')
122
- * .set({
123
- * first_name: 'Jennifer',
124
- * last_name: 'Aniston'
125
- * })
126
- * .where('id', '=', 1)
127
- * .executeTakeFirst()
128
- *
129
- * console.log(result.numUpdatedRows)
130
- * ```
131
- *
132
- * The generated SQL (PostgreSQL):
133
- *
134
- * ```sql
135
- * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3
136
- * ```
137
- *
138
- * On PostgreSQL you ca chain `returning` to the query to get
139
- * the updated rows' columns (or any other expression) as the
140
- * return value:
141
- *
142
- * ```ts
143
- * const row = await db
144
- * .updateTable('person')
145
- * .set({
146
- * first_name: 'Jennifer',
147
- * last_name: 'Aniston'
148
- * })
149
- * .where('id', '=', 1)
150
- * .returning('id')
151
- * .executeTakeFirstOrThrow()
152
- *
153
- * row.id
154
- * ```
155
- *
156
- * The generated SQL (PostgreSQL):
157
- *
158
- * ```sql
159
- * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3 returning "id"
160
- * ```
161
- *
162
- * In addition to primitives, the values can also be raw sql expressions or
163
- * select queries:
164
- *
165
- * ```ts
166
- * import { sql } from 'kysely'
167
- *
168
- * const result = await db
169
- * .updateTable('person')
170
- * .set({
171
- * first_name: 'Jennifer',
172
- * last_name: sql`${'Ani'} || ${'ston'}`,
173
- * age: db.selectFrom('person').select(sql`avg(age)`),
174
- * })
175
- * .where('id', '=', 1)
176
- * .executeTakeFirst()
177
- *
178
- * console.log(result.numUpdatedRows)
179
- * ```
180
- *
181
- * The generated SQL (PostgreSQL):
182
- *
183
- * ```sql
184
- * update "person" set
185
- * "first_name" = $1,
186
- * "last_name" = $2 || $3,
187
- * "age" = (select avg(age) from "person")
188
- * where "id" = $4
189
- * ```
190
- */
191
- set(row) {
103
+ set(update) {
192
104
  return new UpdateQueryBuilder({
193
105
  ...this.#props,
194
- queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdateObject(row)),
106
+ queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdateExpression(update)),
195
107
  });
196
108
  }
197
109
  returning(selection) {
198
110
  return new UpdateQueryBuilder({
199
111
  ...this.#props,
200
- queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectExpressionOrList(selection)),
112
+ queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection)),
201
113
  });
202
114
  }
203
115
  returningAll() {
@@ -207,7 +119,8 @@ export class UpdateQueryBuilder {
207
119
  });
208
120
  }
209
121
  /**
210
- * Simply calls the given function passing `this` as the only argument.
122
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
123
+ * what the provided function returns.
211
124
  *
212
125
  * If you want to conditionally call a method on `this`, see
213
126
  * the {@link $if} method.
@@ -384,7 +297,7 @@ export class UpdateQueryBuilder {
384
297
  return [
385
298
  new UpdateResult(
386
299
  // TODO: remove numUpdatedOrDeletedRows.
387
- (result.numAffectedRows ?? result.numUpdatedOrDeletedRows)),
300
+ result.numAffectedRows ?? result.numUpdatedOrDeletedRows ?? BigInt(0)),
388
301
  ];
389
302
  }
390
303
  /**
@@ -400,37 +313,30 @@ export class UpdateQueryBuilder {
400
313
  * the query returned no result.
401
314
  *
402
315
  * By default an instance of {@link NoResultError} is thrown, but you can
403
- * provide a custom error class as the only argument to throw a different
316
+ * provide a custom error class, or callback as the only argument to throw a different
404
317
  * error.
405
318
  */
406
319
  async executeTakeFirstOrThrow(errorConstructor = NoResultError) {
407
320
  const result = await this.executeTakeFirst();
408
321
  if (result === undefined) {
409
- throw new errorConstructor(this.toOperationNode());
322
+ const error = isNoResultErrorConstructor(errorConstructor)
323
+ ? new errorConstructor(this.toOperationNode())
324
+ : errorConstructor(this.toOperationNode());
325
+ throw error;
410
326
  }
411
327
  return result;
412
328
  }
413
- /**
414
- * Executes query with `explain` statement before `update` keyword.
415
- *
416
- * ```ts
417
- * const explained = await db
418
- * .updateTable('person')
419
- * .set(updates)
420
- * .where('id', '=', 123)
421
- * .explain('json')
422
- * ```
423
- *
424
- * The generated SQL (MySQL):
425
- *
426
- * ```sql
427
- * explain format=json update `person` set `first_name` = ?, `last_name` = ? where `id` = ?
428
- * ```
429
- */
329
+ async *stream(chunkSize = 100) {
330
+ const compiledQuery = this.compile();
331
+ const stream = this.#props.executor.stream(compiledQuery, chunkSize, this.#props.queryId);
332
+ for await (const item of stream) {
333
+ yield* item.rows;
334
+ }
335
+ }
430
336
  async explain(format, options) {
431
337
  const builder = new UpdateQueryBuilder({
432
338
  ...this.#props,
433
- queryNode: UpdateQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options?.toOperationNode())),
339
+ queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),
434
340
  });
435
341
  return await builder.execute();
436
342
  }
@@ -8,3 +8,6 @@ export class UpdateResult {
8
8
  return this.#numUpdatedRows;
9
9
  }
10
10
  }
11
+ Object.defineProperty(UpdateResult.prototype, 'numUpdatedRows', {
12
+ enumerable: true,
13
+ });
@@ -1,56 +1,42 @@
1
1
  import { Expression } from '../expression/expression.js';
2
- import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
2
+ import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
3
3
  import { ReferenceExpression } from '../parser/reference-parser.js';
4
4
  import { ExistsExpression } from '../parser/unary-operation-parser.js';
5
+ import { SqlBool } from '../util/type-utils.js';
6
+ import { WhereExpressionBuilder } from './deprecated-where-expression-builder.js';
5
7
  export interface WhereInterface<DB, TB extends keyof DB> {
6
8
  /**
7
- * Adds a `where` clause to the query.
9
+ * Adds a `where` expression to the query.
8
10
  *
9
- * Also see {@link orWhere}, {@link whereExists} and {@link whereRef}.
11
+ * Calling this method multiple times will combine the expressions using `and`.
10
12
  *
11
- * ### Examples
13
+ * Also see {@link whereRef}
12
14
  *
13
- * Find a row by column value:
15
+ * ### Examples
14
16
  *
15
17
  * ```ts
16
18
  * const person = await db
17
19
  * .selectFrom('person')
18
20
  * .selectAll()
19
- * .where('id', '=', 100)
21
+ * .where('first_name', '=', 'Jennifer')
22
+ * .where('age', '>', 40)
20
23
  * .executeTakeFirst()
21
24
  * ```
22
25
  *
23
26
  * The generated SQL (PostgreSQL):
24
27
  *
25
28
  * ```sql
26
- * select * from "person" where "id" = $1
29
+ * select * from "person" where "first_name" = $1 and "age" > $2
27
30
  * ```
28
31
  *
29
32
  * Operator can be any supported operator or if the typings don't support it
30
- * you can always use
33
+ * you can always use:
31
34
  *
32
35
  * ```ts
33
36
  * sql`your operator`
34
37
  * ```
35
38
  *
36
- * The next example uses the `>` operator:
37
- *
38
- * ```ts
39
- * const persons = await db
40
- * .selectFrom('person')
41
- * .selectAll()
42
- * .where('id', '>', 100)
43
- * .execute()
44
- * ```
45
- *
46
- * The generated SQL (PostgreSQL):
47
- *
48
- * ```sql
49
- * select * from "person" where "id" > $1
50
- * ```
51
- *
52
- * `where` methods don't change the type of the query. You can add
53
- * conditional statements easily by doing something like this:
39
+ * You can add expressions conditionally like this:
54
40
  *
55
41
  * ```ts
56
42
  * let query = db
@@ -63,16 +49,16 @@ export interface WhereInterface<DB, TB extends keyof DB> {
63
49
  * query = query.where('first_name', '=', firstName)
64
50
  * }
65
51
  *
52
+ * if (lastName) {
53
+ * query = query.where('last_name', '=', lastName)
54
+ * }
55
+ *
66
56
  * const persons = await query.execute()
67
57
  * ```
68
58
  *
69
- * This is true for basically all methods execpt the `select` and
70
- * `returning`, that __do__ change the return type of the query.
71
- *
72
- * Both the first and third argument can also be subqueries.
73
- * A subquery is defined by passing a function and calling
74
- * the `selectFrom` method of the object passed into the
75
- * function:
59
+ * Both the first and third argument can also be arbitrary expressions like
60
+ * subqueries. An expression can defined by passing a function and calling
61
+ * the methods of the {@link ExpressionBuilder} passed to the callback:
76
62
  *
77
63
  * ```ts
78
64
  * const persons = await db
@@ -103,8 +89,7 @@ export interface WhereInterface<DB, TB extends keyof DB> {
103
89
  * ```
104
90
  *
105
91
  * A `where in` query can be built by using the `in` operator and an array
106
- * of values. The values in the array can also be subqueries or raw
107
- * {@link sql} expressions.
92
+ * of values. The values in the array can also be expressions:
108
93
  *
109
94
  * ```ts
110
95
  * const persons = await db
@@ -120,40 +105,53 @@ export interface WhereInterface<DB, TB extends keyof DB> {
120
105
  * select * from "person" where "id" in ($1, $2, $3)
121
106
  * ```
122
107
  *
123
- * If everything else fails, you can always use the {@link sql} tag
124
- * as any of the arguments, including the operator:
108
+ * For complex `where` expressions you can pass in a single callback and
109
+ * use the {@link ExpressionBuilder} to build your expression:
125
110
  *
126
111
  * ```ts
127
- * import { sql } from 'kysely'
128
- *
129
112
  * const persons = await db
130
113
  * .selectFrom('person')
131
- * .selectAll()
132
- * .where(
133
- * sql`coalesce(first_name, last_name)`,
134
- * 'like',
135
- * '%' + name + '%',
136
- * )
137
- * .execute()
114
+ * .selectAll('person')
115
+ * .where(({ cmpr, or, and, not, exists, selectFrom, val }) => and([
116
+ * or([
117
+ * cmpr('first_name', '=', firstName),
118
+ * cmpr('age', '<', maxAge)
119
+ * ]),
120
+ * not(exists(
121
+ * selectFrom('pet').select('pet.id').whereRef('pet.owner_id', '=', 'person.id')
122
+ * ))
123
+ * ]))
138
124
  * ```
139
125
  *
140
126
  * The generated SQL (PostgreSQL):
141
127
  *
142
128
  * ```sql
143
- * select * from "person"
144
- * where coalesce(first_name, last_name) like $1
129
+ * select "person".*
130
+ * from "person"
131
+ * where (
132
+ * (
133
+ * "first_name" = $1
134
+ * or "age" < $2
135
+ * )
136
+ * and not exists (
137
+ * select "pet"."id" from "pet" where "pet"."owner_id" = "person"."id"
138
+ * )
139
+ * )
145
140
  * ```
146
141
  *
147
- * If you only pass one function argument to this method, it can be
148
- * used to create parentheses around other where statements:
142
+ * If everything else fails, you can always use the {@link sql} tag
143
+ * as any of the arguments, including the operator:
149
144
  *
150
145
  * ```ts
146
+ * import { sql } from 'kysely'
147
+ *
151
148
  * const persons = await db
152
149
  * .selectFrom('person')
153
150
  * .selectAll()
154
- * .where((qb) => qb
155
- * .where('id', '=', 1)
156
- * .orWhere('id', '=', 2)
151
+ * .where(
152
+ * sql`coalesce(first_name, last_name)`,
153
+ * 'like',
154
+ * '%' + name + '%',
157
155
  * )
158
156
  * .execute()
159
157
  * ```
@@ -161,7 +159,8 @@ export interface WhereInterface<DB, TB extends keyof DB> {
161
159
  * The generated SQL (PostgreSQL):
162
160
  *
163
161
  * ```sql
164
- * select * from "person" (where "id" = 1 or "id" = 2)
162
+ * select * from "person"
163
+ * where coalesce(first_name, last_name) like $1
165
164
  * ```
166
165
  *
167
166
  * In all examples above the columns were known at compile time
@@ -183,12 +182,12 @@ export interface WhereInterface<DB, TB extends keyof DB> {
183
182
  * .selectFrom('person')
184
183
  * .selectAll()
185
184
  * .where(ref(columnFromUserInput), '=', 1)
186
- * .orWhere(sql.id(columnFromUserInput), '=', 2)
185
+ * .where(sql.id(columnFromUserInput), '=', 2)
187
186
  * .execute()
188
187
  * ```
189
188
  */
190
189
  where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
191
- where(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
190
+ where(factory: WhereExpressionFactory<DB, TB>): WhereInterface<DB, TB>;
192
191
  where(expression: Expression<any>): WhereInterface<DB, TB>;
193
192
  /**
194
193
  * Adds a `where` clause where both sides of the operator are references
@@ -220,7 +219,7 @@ export interface WhereInterface<DB, TB extends keyof DB> {
220
219
  * const persons = await db
221
220
  * .selectFrom('person')
222
221
  * .selectAll('person')
223
- * .select((qb) => qb
222
+ * .select((eb) => eb
224
223
  * .selectFrom('pet')
225
224
  * .select('name')
226
225
  * .whereRef('pet.owner_id', '=', 'person.id')
@@ -243,152 +242,39 @@ export interface WhereInterface<DB, TB extends keyof DB> {
243
242
  */
244
243
  whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
245
244
  /**
246
- * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
247
- *
248
- * It's often necessary to wrap `or where` clauses in parentheses to control
249
- * precendence. You can use the one argument version of the `where` method
250
- * for that. See the examples.
251
- *
252
- * ### Examples
253
- *
254
- * ```ts
255
- * const persons = await db
256
- * .selectFrom('person')
257
- * .selectAll()
258
- * .where('id', '=', 1)
259
- * .orWhere('id', '=', 2)
260
- * .execute()
261
- * ```
262
- *
263
- * The generated SQL (PostgreSQL):
264
- *
265
- * ```sql
266
- * select * from "person" where "id" = 1 or "id" = 2
267
- * ```
268
- *
269
- * Grouping with parentheses:
270
- *
271
- * ```ts
272
- * const persons = await db
273
- * .selectFrom('person')
274
- * .selectAll()
275
- * .where((qb) => qb
276
- * .where('id', '=', 1)
277
- * .orWhere('id', '=', 2)
278
- * )
279
- * .execute()
280
- * ```
281
- *
282
- * The generated SQL (PostgreSQL):
283
- *
284
- * ```sql
285
- * select * from "person" (where "id" = 1 or "id" = 2)
286
- * ```
287
- *
288
- * Even the first `where` can be an `orWhere`. This is useful
289
- * if you are looping through a set of conditions:
290
- *
291
- * ```ts
292
- * const persons = await db
293
- * .selectFrom('person')
294
- * .selectAll()
295
- * .where((qb) => qb
296
- * .orWhere('id', '=', 1)
297
- * .orWhere('id', '=', 2)
298
- * )
299
- * .execute()
300
- * ```
301
- *
302
- * The generated SQL (PostgreSQL):
303
- *
304
- * ```sql
305
- * select * from "person" (where "id" = 1 or "id" = 2)
306
- * ```
245
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
307
246
  */
308
247
  orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
309
- orWhere(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
248
+ /**
249
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
250
+ */
251
+ orWhere(factory: WhereExpressionFactory<DB, TB>): WhereInterface<DB, TB>;
252
+ /**
253
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
254
+ */
310
255
  orWhere(expression: Expression<any>): WhereInterface<DB, TB>;
311
256
  /**
312
- * Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
313
- *
314
- * Also see {@link orWhere} and {@link where}.
257
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
315
258
  */
316
259
  orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
317
260
  /**
318
- * Adds a `where exists` clause to the query.
319
- *
320
- * You can either use a subquery or a raw {@link sql} snippet.
321
- *
322
- * ### Examples
323
- *
324
- * The query below selets all persons that own a pet named Catto:
325
- *
326
- * ```ts
327
- * const petName = 'Catto'
328
- * const persons = await db
329
- * .selectFrom('person')
330
- * .selectAll()
331
- * .whereExists((qb) => qb
332
- * .selectFrom('pet')
333
- * .select('pet.id')
334
- * .whereRef('person.id', '=', 'pet.owner_id')
335
- * .where('pet.name', '=', petName)
336
- * )
337
- * .execute()
338
- * ```
339
- *
340
- * The generated SQL (PostgreSQL):
341
- *
342
- * ```sql
343
- * select * from "person"
344
- * where exists (
345
- * select "pet"."id"
346
- * from "pet"
347
- * where "person"."id" = "pet"."owner_id"
348
- * and "pet"."name" = $1
349
- * )
350
- * ```
351
- *
352
- * The same query as in the previous example but with using raw {@link sql}:
353
- *
354
- * ```ts
355
- * import { sql } from 'kysely'
356
- *
357
- * const petName = 'Catto'
358
- * db.selectFrom('person')
359
- * .selectAll()
360
- * .whereExists(
361
- * sql`(select pet.id from pet where person.id = pet.owner_id and pet.name = ${petName})`
362
- * )
363
- * ```
364
- *
365
- * The generated SQL (PostgreSQL):
366
- *
367
- * ```sql
368
- * select * from "person"
369
- * where exists (
370
- * select pet.id
371
- * from pet
372
- * where person.id = pet.owner_id
373
- * and pet.name = $1
374
- * )
375
- * ```
261
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
376
262
  */
377
263
  whereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
378
264
  /**
379
- * Just like {@link whereExists} but creates a `not exists` clause.
265
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
380
266
  */
381
267
  whereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
382
268
  /**
383
- * Just like {@link whereExists} but creates an `or exists` clause.
269
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
384
270
  */
385
271
  orWhereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
386
272
  /**
387
- * Just like {@link whereExists} but creates an `or not exists` clause.
273
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
388
274
  */
389
275
  orWhereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
390
276
  /**
391
- * Clears all where clauses from the query.
277
+ * Clears all where expressions from the query.
392
278
  *
393
279
  * ### Examples
394
280
  *
@@ -407,3 +293,4 @@ export interface WhereInterface<DB, TB extends keyof DB> {
407
293
  */
408
294
  clearWhere(): WhereInterface<DB, TB>;
409
295
  }
296
+ export declare type WhereExpressionFactory<DB, TB extends keyof DB> = (eb: WhereExpressionBuilder<DB, TB>) => Expression<SqlBool> | WhereExpressionBuilder<DB, TB>;
@@ -80,6 +80,7 @@ import { SetOperationNode } from '../operation-node/set-operation-node.js';
80
80
  import { BinaryOperationNode } from '../operation-node/binary-operation-node.js';
81
81
  import { UnaryOperationNode } from '../operation-node/unary-operation-node.js';
82
82
  import { UsingNode } from '../operation-node/using-node.js';
83
+ import { FunctionNode } from '../operation-node/function-node.js';
83
84
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
84
85
  #private;
85
86
  protected get numParameters(): number;
@@ -166,7 +167,9 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
166
167
  protected visitPartitionByItem(node: PartitionByItemNode): void;
167
168
  protected visitBinaryOperation(node: BinaryOperationNode): void;
168
169
  protected visitUnaryOperation(node: UnaryOperationNode): void;
170
+ protected isMinusOperator(node: OperationNode): node is OperatorNode;
169
171
  protected visitUsing(node: UsingNode): void;
172
+ protected visitFunction(node: FunctionNode): void;
170
173
  protected append(str: string): void;
171
174
  protected appendValue(parameter: unknown): void;
172
175
  protected getLeftIdentifierWrapper(): string;
@@ -1,6 +1,7 @@
1
1
  /// <reference types="./default-query-compiler.d.ts" />
2
2
  import { InsertQueryNode } from '../operation-node/insert-query-node.js';
3
3
  import { OperationNodeVisitor } from '../operation-node/operation-node-visitor.js';
4
+ import { OperatorNode } from '../operation-node/operator-node.js';
4
5
  import { QueryNode } from '../operation-node/query-node.js';
5
6
  import { freeze, isString, isNumber, isBoolean, isNull, isDate, isBigInt, } from '../util/object-utils.js';
6
7
  import { CreateViewNode } from '../operation-node/create-view-node.js';
@@ -550,6 +551,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
550
551
  this.visitNode(node.expression);
551
552
  this.append(')');
552
553
  }
554
+ if (node.where) {
555
+ this.append(' ');
556
+ this.visitNode(node.where);
557
+ }
553
558
  }
554
559
  visitDropIndex(node) {
555
560
  this.append('drop index ');
@@ -862,7 +867,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
862
867
  if (node.distinct) {
863
868
  this.append('distinct ');
864
869
  }
865
- this.visitNode(node.column);
870
+ this.visitNode(node.aggregated);
866
871
  this.append(')');
867
872
  if (node.filter) {
868
873
  this.append(' filter(');
@@ -903,13 +908,24 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
903
908
  }
904
909
  visitUnaryOperation(node) {
905
910
  this.visitNode(node.operator);
906
- this.append(' ');
911
+ if (!this.isMinusOperator(node.operator)) {
912
+ this.append(' ');
913
+ }
907
914
  this.visitNode(node.operand);
908
915
  }
916
+ isMinusOperator(node) {
917
+ return OperatorNode.is(node) && node.operator === '-';
918
+ }
909
919
  visitUsing(node) {
910
920
  this.append('using ');
911
921
  this.compileList(node.tables);
912
922
  }
923
+ visitFunction(node) {
924
+ this.append(node.func);
925
+ this.append('(');
926
+ this.compileList(node.arguments);
927
+ this.append(')');
928
+ }
913
929
  append(str) {
914
930
  this.#sql += str;
915
931
  }