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
@@ -11,7 +11,6 @@ const prevent_await_js_1 = require("../util/prevent-await.js");
11
11
  const object_utils_js_1 = require("../util/object-utils.js");
12
12
  const update_result_js_1 = require("./update-result.js");
13
13
  const no_result_error_js_1 = require("./no-result-error.js");
14
- const explain_node_js_1 = require("../operation-node/explain-node.js");
15
14
  const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
16
15
  const unary_operation_parser_js_1 = require("../parser/unary-operation-parser.js");
17
16
  class UpdateQueryBuilder {
@@ -28,7 +27,7 @@ class UpdateQueryBuilder {
28
27
  whereRef(lhs, op, rhs) {
29
28
  return new UpdateQueryBuilder({
30
29
  ...this.#props,
31
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
30
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialComparison)(lhs, op, rhs)),
32
31
  });
33
32
  }
34
33
  orWhere(...args) {
@@ -40,7 +39,7 @@ class UpdateQueryBuilder {
40
39
  orWhereRef(lhs, op, rhs) {
41
40
  return new UpdateQueryBuilder({
42
41
  ...this.#props,
43
- queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
42
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialComparison)(lhs, op, rhs)),
44
43
  });
45
44
  }
46
45
  whereExists(arg) {
@@ -103,103 +102,16 @@ class UpdateQueryBuilder {
103
102
  queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('FullJoin', args)),
104
103
  });
105
104
  }
106
- /**
107
- * Sets the values to update for an {@link Kysely.updateTable | update} query.
108
- *
109
- * This method takes an object whose keys are column names and values are
110
- * values to update. In addition to the column's type, the values can be
111
- * raw {@link sql} snippets or select queries.
112
- *
113
- * The return value of an update query is an instance of {@link UpdateResult}.
114
- * You can use the {@link returning} method on supported databases to get out
115
- * the updated rows.
116
- *
117
- * ### Examples
118
- *
119
- * Update a row in `person` table:
120
- *
121
- * ```ts
122
- * const result = await db
123
- * .updateTable('person')
124
- * .set({
125
- * first_name: 'Jennifer',
126
- * last_name: 'Aniston'
127
- * })
128
- * .where('id', '=', 1)
129
- * .executeTakeFirst()
130
- *
131
- * console.log(result.numUpdatedRows)
132
- * ```
133
- *
134
- * The generated SQL (PostgreSQL):
135
- *
136
- * ```sql
137
- * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3
138
- * ```
139
- *
140
- * On PostgreSQL you ca chain `returning` to the query to get
141
- * the updated rows' columns (or any other expression) as the
142
- * return value:
143
- *
144
- * ```ts
145
- * const row = await db
146
- * .updateTable('person')
147
- * .set({
148
- * first_name: 'Jennifer',
149
- * last_name: 'Aniston'
150
- * })
151
- * .where('id', '=', 1)
152
- * .returning('id')
153
- * .executeTakeFirstOrThrow()
154
- *
155
- * row.id
156
- * ```
157
- *
158
- * The generated SQL (PostgreSQL):
159
- *
160
- * ```sql
161
- * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3 returning "id"
162
- * ```
163
- *
164
- * In addition to primitives, the values can also be raw sql expressions or
165
- * select queries:
166
- *
167
- * ```ts
168
- * import { sql } from 'kysely'
169
- *
170
- * const result = await db
171
- * .updateTable('person')
172
- * .set({
173
- * first_name: 'Jennifer',
174
- * last_name: sql`${'Ani'} || ${'ston'}`,
175
- * age: db.selectFrom('person').select(sql`avg(age)`),
176
- * })
177
- * .where('id', '=', 1)
178
- * .executeTakeFirst()
179
- *
180
- * console.log(result.numUpdatedRows)
181
- * ```
182
- *
183
- * The generated SQL (PostgreSQL):
184
- *
185
- * ```sql
186
- * update "person" set
187
- * "first_name" = $1,
188
- * "last_name" = $2 || $3,
189
- * "age" = (select avg(age) from "person")
190
- * where "id" = $4
191
- * ```
192
- */
193
- set(row) {
105
+ set(update) {
194
106
  return new UpdateQueryBuilder({
195
107
  ...this.#props,
196
- queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, (0, update_set_parser_js_1.parseUpdateObject)(row)),
108
+ queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, (0, update_set_parser_js_1.parseUpdateExpression)(update)),
197
109
  });
198
110
  }
199
111
  returning(selection) {
200
112
  return new UpdateQueryBuilder({
201
113
  ...this.#props,
202
- queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(selection)),
114
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectArg)(selection)),
203
115
  });
204
116
  }
205
117
  returningAll() {
@@ -209,7 +121,8 @@ class UpdateQueryBuilder {
209
121
  });
210
122
  }
211
123
  /**
212
- * Simply calls the given function passing `this` as the only argument.
124
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
125
+ * what the provided function returns.
213
126
  *
214
127
  * If you want to conditionally call a method on `this`, see
215
128
  * the {@link $if} method.
@@ -386,7 +299,7 @@ class UpdateQueryBuilder {
386
299
  return [
387
300
  new update_result_js_1.UpdateResult(
388
301
  // TODO: remove numUpdatedOrDeletedRows.
389
- (result.numAffectedRows ?? result.numUpdatedOrDeletedRows)),
302
+ result.numAffectedRows ?? result.numUpdatedOrDeletedRows ?? BigInt(0)),
390
303
  ];
391
304
  }
392
305
  /**
@@ -402,37 +315,30 @@ class UpdateQueryBuilder {
402
315
  * the query returned no result.
403
316
  *
404
317
  * By default an instance of {@link NoResultError} is thrown, but you can
405
- * provide a custom error class as the only argument to throw a different
318
+ * provide a custom error class, or callback as the only argument to throw a different
406
319
  * error.
407
320
  */
408
321
  async executeTakeFirstOrThrow(errorConstructor = no_result_error_js_1.NoResultError) {
409
322
  const result = await this.executeTakeFirst();
410
323
  if (result === undefined) {
411
- throw new errorConstructor(this.toOperationNode());
324
+ const error = (0, no_result_error_js_1.isNoResultErrorConstructor)(errorConstructor)
325
+ ? new errorConstructor(this.toOperationNode())
326
+ : errorConstructor(this.toOperationNode());
327
+ throw error;
412
328
  }
413
329
  return result;
414
330
  }
415
- /**
416
- * Executes query with `explain` statement before `update` keyword.
417
- *
418
- * ```ts
419
- * const explained = await db
420
- * .updateTable('person')
421
- * .set(updates)
422
- * .where('id', '=', 123)
423
- * .explain('json')
424
- * ```
425
- *
426
- * The generated SQL (MySQL):
427
- *
428
- * ```sql
429
- * explain format=json update `person` set `first_name` = ?, `last_name` = ? where `id` = ?
430
- * ```
431
- */
331
+ async *stream(chunkSize = 100) {
332
+ const compiledQuery = this.compile();
333
+ const stream = this.#props.executor.stream(compiledQuery, chunkSize, this.#props.queryId);
334
+ for await (const item of stream) {
335
+ yield* item.rows;
336
+ }
337
+ }
432
338
  async explain(format, options) {
433
339
  const builder = new UpdateQueryBuilder({
434
340
  ...this.#props,
435
- queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithExplain(this.#props.queryNode, explain_node_js_1.ExplainNode.create(format, options?.toOperationNode())),
341
+ queryNode: query_node_js_1.QueryNode.cloneWithExplain(this.#props.queryNode, format, options),
436
342
  });
437
343
  return await builder.execute();
438
344
  }
@@ -11,3 +11,6 @@ class UpdateResult {
11
11
  }
12
12
  }
13
13
  exports.UpdateResult = UpdateResult;
14
+ Object.defineProperty(UpdateResult.prototype, 'numUpdatedRows', {
15
+ enumerable: true,
16
+ });
@@ -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;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DefaultQueryCompiler = void 0;
4
4
  const insert_query_node_js_1 = require("../operation-node/insert-query-node.js");
5
5
  const operation_node_visitor_js_1 = require("../operation-node/operation-node-visitor.js");
6
+ const operator_node_js_1 = require("../operation-node/operator-node.js");
6
7
  const query_node_js_1 = require("../operation-node/query-node.js");
7
8
  const object_utils_js_1 = require("../util/object-utils.js");
8
9
  const create_view_node_js_1 = require("../operation-node/create-view-node.js");
@@ -552,6 +553,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
552
553
  this.visitNode(node.expression);
553
554
  this.append(')');
554
555
  }
556
+ if (node.where) {
557
+ this.append(' ');
558
+ this.visitNode(node.where);
559
+ }
555
560
  }
556
561
  visitDropIndex(node) {
557
562
  this.append('drop index ');
@@ -864,7 +869,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
864
869
  if (node.distinct) {
865
870
  this.append('distinct ');
866
871
  }
867
- this.visitNode(node.column);
872
+ this.visitNode(node.aggregated);
868
873
  this.append(')');
869
874
  if (node.filter) {
870
875
  this.append(' filter(');
@@ -905,13 +910,24 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
905
910
  }
906
911
  visitUnaryOperation(node) {
907
912
  this.visitNode(node.operator);
908
- this.append(' ');
913
+ if (!this.isMinusOperator(node.operator)) {
914
+ this.append(' ');
915
+ }
909
916
  this.visitNode(node.operand);
910
917
  }
918
+ isMinusOperator(node) {
919
+ return operator_node_js_1.OperatorNode.is(node) && node.operator === '-';
920
+ }
911
921
  visitUsing(node) {
912
922
  this.append('using ');
913
923
  this.compileList(node.tables);
914
924
  }
925
+ visitFunction(node) {
926
+ this.append(node.func);
927
+ this.append('(');
928
+ this.compileList(node.arguments);
929
+ this.append(')');
930
+ }
915
931
  append(str) {
916
932
  this.#sql += str;
917
933
  }