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,160 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FunctionBuilder = void 0;
4
- const raw_node_js_1 = require("../operation-node/raw-node.js");
5
- const reference_parser_js_1 = require("../parser/reference-parser.js");
6
- const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
7
- const query_id_js_1 = require("../util/query-id.js");
8
- /**
9
- * Helpers for type safe SQL function calls.
10
- *
11
- * You can always use the {@link sql} tag to call functions and build arbitrary
12
- * expressions. This module simply has shortcuts for most common function calls.
13
- *
14
- * ### Examples
15
- *
16
- * ```ts
17
- * const { count } = db.fn
18
- *
19
- * await db.selectFrom('person')
20
- * .innerJoin('pet', 'pet.owner_id', 'person.id')
21
- * .select([
22
- * 'person.id',
23
- * count('pet.id').as('pet_count')
24
- * ])
25
- * .groupBy('person.id')
26
- * .having(count('pet.id'), '>', 10)
27
- * .execute()
28
- * ```
29
- *
30
- * The generated SQL (PostgreSQL):
31
- *
32
- * ```sql
33
- * select "person"."id", count("pet"."id") as "pet_count"
34
- * from "person"
35
- * inner join "pet" on "pet"."owner_id" = "person"."id"
36
- * group by "person"."id"
37
- * having count("pet"."id") > $1
38
- * ```
39
- */
40
- class FunctionBuilder {
41
- constructor() {
42
- this.min = this.min.bind(this);
43
- this.max = this.max.bind(this);
44
- this.avg = this.avg.bind(this);
45
- this.sum = this.sum.bind(this);
46
- this.count = this.count.bind(this);
47
- }
48
- /**
49
- * Calls the `max` function for the column given as the argument.
50
- *
51
- * ### Examples
52
- *
53
- * ```ts
54
- * const { max } = db.fn
55
- *
56
- * db.selectFrom('toy')
57
- * .select(max('price').as('max_price'))
58
- * .execute()
59
- * ```
60
- */
61
- max(column) {
62
- return this.#oneArgFunction('max', column);
63
- }
64
- /**
65
- * Calls the `min` function for the column given as the argument.
66
- *
67
- * ### Examples
68
- *
69
- * ```ts
70
- * const { min } = db.fn
71
- *
72
- * db.selectFrom('toy')
73
- * .select(min('price').as('min_price'))
74
- * .execute()
75
- * ```
76
- *
77
- */
78
- min(column) {
79
- return this.#oneArgFunction('min', column);
80
- }
81
- /**
82
- * Calls the `avg` function for the column given as the argument.
83
- *
84
- * If this is used in a `select` statement the type of the selected expression
85
- * will be `number | string` by default. This is because Kysely can't know the
86
- * type the db driver outputs. Sometimes the output can be larger than the
87
- * largest javascript number and a string is returned instead. Most drivers
88
- * allow you to configure the output type of large numbers and Kysely can't
89
- * know if you've done so.
90
- *
91
- * You can specify the output type of the expression by providing
92
- * the type as the first type argument:
93
- *
94
- * ```ts
95
- * const { avg } = db.fn
96
- *
97
- * db.selectFrom('toy')
98
- * .select(avg<number>('price').as('avg_price'))
99
- * .execute()
100
- * ```
101
- */
102
- avg(column) {
103
- return this.#oneArgFunction('avg', column);
104
- }
105
- /**
106
- * Calls the `sum` function for the column given as the argument.
107
- *
108
- * If this is used in a `select` statement the type of the selected expression
109
- * will be `number | string | bigint` by default. This is because Kysely can't
110
- * know the type the db driver outputs. Sometimes the output can be larger than
111
- * the largest javascript number and a string is returned instead. Most drivers
112
- * allow you to configure the output type of large numbers and Kysely can't
113
- * know if you've done so.
114
- *
115
- * You can specify the output type of the expression by providing
116
- * the type as the first type argument:
117
- *
118
- * ```ts
119
- * const { sum } = db.fn
120
- *
121
- * db.selectFrom('toy')
122
- * .select(sum<number>('price').as('total_price'))
123
- * .execute()
124
- * ```
125
- */
126
- sum(column) {
127
- return this.#oneArgFunction('sum', column);
128
- }
129
- /**
130
- * Calls the `count` function for the column given as the argument.
131
- *
132
- * If this is used in a `select` statement the type of the selected expression
133
- * will be `number | string |bigint` by default. This is because Kysely can't
134
- * know the type the db driver outputs. Sometimes the output can be larger than
135
- * the largest javascript number and a string is returned instead. Most drivers
136
- * allow you to configure the output type of large numbers and Kysely can't
137
- * know if you've done so.
138
- *
139
- * You can specify the output type of the expression by providing
140
- * the type as the first type argument:
141
- *
142
- * ```ts
143
- * const { count } = db.fn
144
- *
145
- * db.selectFrom('toy')
146
- * .select(count<number>('id').as('num_toys'))
147
- * .execute()
148
- * ```
149
- */
150
- count(column) {
151
- return this.#oneArgFunction('count', column);
152
- }
153
- #oneArgFunction(fn, column) {
154
- return new raw_builder_js_1.RawBuilder({
155
- queryId: (0, query_id_js_1.createQueryId)(),
156
- rawNode: raw_node_js_1.RawNode.create([`${fn}(`, ')'], [(0, reference_parser_js_1.parseStringReference)(column)]),
157
- });
158
- }
159
- }
160
- exports.FunctionBuilder = FunctionBuilder;
@@ -1,18 +0,0 @@
1
- import { OperationNode } from './operation-node.js';
2
- import { ReferenceExpressionNode, ValueExpressionNode } from './operation-node-utils.js';
3
- import { OperatorNode } from './operator-node.js';
4
- import { RawNode } from './raw-node.js';
5
- export declare type FilterOperatorNode = OperatorNode | RawNode;
6
- export interface FilterNode extends OperationNode {
7
- readonly kind: 'FilterNode';
8
- readonly left?: ReferenceExpressionNode;
9
- readonly op: OperatorNode | RawNode;
10
- readonly right: ValueExpressionNode;
11
- }
12
- /**
13
- * @internal
14
- */
15
- export declare const FilterNode: Readonly<{
16
- is(node: OperationNode): node is FilterNode;
17
- create(left: ReferenceExpressionNode | undefined, op: OperatorNode | RawNode, right: ValueExpressionNode): FilterNode;
18
- }>;
@@ -1,18 +0,0 @@
1
- /// <reference types="./filter-node.d.ts" />
2
- import { freeze } from '../util/object-utils.js';
3
- /**
4
- * @internal
5
- */
6
- export const FilterNode = freeze({
7
- is(node) {
8
- return node.kind === 'FilterNode';
9
- },
10
- create(left, op, right) {
11
- return freeze({
12
- kind: 'FilterNode',
13
- left,
14
- op,
15
- right,
16
- });
17
- },
18
- });
@@ -1,17 +0,0 @@
1
- import { AliasNode } from './alias-node.js';
2
- import { AndNode } from './and-node.js';
3
- import { ColumnNode } from './column-node.js';
4
- import { FilterNode } from './filter-node.js';
5
- import { OrNode } from './or-node.js';
6
- import { ParensNode } from './parens-node.js';
7
- import { PrimitiveValueListNode } from './primitive-value-list-node.js';
8
- import { RawNode } from './raw-node.js';
9
- import { ReferenceNode } from './reference-node.js';
10
- import { SelectQueryNode } from './select-query-node.js';
11
- import { TableNode } from './table-node.js';
12
- import { ValueListNode } from './value-list-node.js';
13
- import { ValueNode } from './value-node.js';
14
- export declare type ReferenceExpressionNode = ColumnNode | ReferenceNode | SelectQueryNode | RawNode;
15
- export declare type ValueExpressionNode = ValueNode | ValueListNode | PrimitiveValueListNode | ReferenceExpressionNode;
16
- export declare type TableExpressionNode = TableNode | AliasNode;
17
- export declare type FilterExpressionNode = FilterNode | AndNode | OrNode | ParensNode | RawNode;
@@ -1,2 +0,0 @@
1
- /// <reference types="./operation-node-utils.d.ts" />
2
- export {};
@@ -1,16 +0,0 @@
1
- import { OperationNode } from './operation-node.js';
2
- import { RawNode } from './raw-node.js';
3
- import { SelectQueryNode } from './select-query-node.js';
4
- export declare type UnionExpressionNode = SelectQueryNode | RawNode;
5
- export interface UnionNode extends OperationNode {
6
- readonly kind: 'UnionNode';
7
- readonly union: UnionExpressionNode;
8
- readonly all: boolean;
9
- }
10
- /**
11
- * @internal
12
- */
13
- export declare const UnionNode: Readonly<{
14
- is(node: OperationNode): node is UnionNode;
15
- create(union: UnionExpressionNode, all: boolean): UnionNode;
16
- }>;
@@ -1,17 +0,0 @@
1
- /// <reference types="./union-node.d.ts" />
2
- import { freeze } from '../util/object-utils.js';
3
- /**
4
- * @internal
5
- */
6
- export const UnionNode = freeze({
7
- is(node) {
8
- return node.kind === 'UnionNode';
9
- },
10
- create(union, all) {
11
- return freeze({
12
- kind: 'UnionNode',
13
- union,
14
- all,
15
- });
16
- },
17
- });
@@ -1,10 +0,0 @@
1
- import { AliasNode } from '../operation-node/alias-node.js';
2
- import { RawNode } from '../operation-node/raw-node.js';
3
- import { SelectQueryNode } from '../operation-node/select-query-node.js';
4
- import { RawBuilder } from '../raw-builder/raw-builder.js';
5
- import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnySelectQueryBuilder, SelectQueryBuilderFactory, RawBuilderFactory } from '../util/type-utils.js';
6
- export declare type ComplexExpression<DB, TB extends keyof DB, V = any> = AnySelectQueryBuilder | SelectQueryBuilderFactory<DB, TB> | RawBuilder<V> | RawBuilderFactory<DB, TB, V>;
7
- export declare type AliasedComplexExpression<DB, TB extends keyof DB> = AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB>;
8
- export declare function parseComplexExpression(exp: ComplexExpression<any, any>): SelectQueryNode | RawNode;
9
- export declare function parseAliasedComplexExpression(exp: AliasedComplexExpression<any, any>): AliasNode;
10
- export declare function isComplexExpression(obj: unknown): obj is ComplexExpression<any, any>;
@@ -1,24 +0,0 @@
1
- import { FilterNode } from '../operation-node/filter-node.js';
2
- import { AnyRawBuilder } from '../util/type-utils.js';
3
- import { Operator } from '../operation-node/operator-node.js';
4
- import { ExtractTypeFromReferenceExpression, ReferenceExpression } from './reference-parser.js';
5
- import { ValueExpression, ValueExpressionOrList } from './value-parser.js';
6
- import { FilterExpressionNode } from '../operation-node/operation-node-utils.js';
7
- import { WhereInterface } from '../query-builder/where-interface.js';
8
- import { HavingInterface } from '../query-builder/having-interface.js';
9
- import { ComplexExpression } from './complex-expression-parser.js';
10
- export declare type FilterValueExpression<DB, TB extends keyof DB, RE> = ValueExpression<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
11
- export declare type FilterValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpressionOrList<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
12
- export declare type ExistsExpression<DB, TB extends keyof DB> = ComplexExpression<DB, TB, any>;
13
- export declare type WhereGrouper<DB, TB extends keyof DB> = (qb: WhereInterface<DB, TB>) => WhereInterface<DB, TB>;
14
- export declare type HavingGrouper<DB, TB extends keyof DB> = (qb: HavingInterface<DB, TB>) => HavingInterface<DB, TB>;
15
- export declare type FilterOperator = Operator | AnyRawBuilder;
16
- declare type FilterType = 'where' | 'having' | 'on';
17
- export declare function parseWhereFilter(args: any[]): FilterExpressionNode;
18
- export declare function parseHavingFilter(args: any[]): FilterExpressionNode;
19
- export declare function parseOnFilter(args: any[]): FilterExpressionNode;
20
- export declare function parseReferenceFilter(lhs: ReferenceExpression<any, any>, op: FilterOperator, rhs: ReferenceExpression<any, any>): FilterNode;
21
- export declare function parseExistFilter(arg: ExistsExpression<any, any>): FilterNode;
22
- export declare function parseNotExistFilter(arg: ExistsExpression<any, any>): FilterNode;
23
- export declare function parseFilter(type: FilterType, args: any[]): FilterExpressionNode;
24
- export {};
@@ -1,100 +0,0 @@
1
- /// <reference types="./filter-parser.d.ts" />
2
- import { FilterNode } from '../operation-node/filter-node.js';
3
- import { freeze, isBoolean, isFunction, isNull, isString, } from '../util/object-utils.js';
4
- import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
5
- import { RawNode } from '../operation-node/raw-node.js';
6
- import { OperatorNode, OPERATORS, } from '../operation-node/operator-node.js';
7
- import { ParensNode } from '../operation-node/parens-node.js';
8
- import { parseReferenceExpression, } from './reference-parser.js';
9
- import { parseValueExpressionOrList, } from './value-parser.js';
10
- import { ValueNode } from '../operation-node/value-node.js';
11
- import { createJoinBuilder, createSelectQueryBuilder } from './parse-utils.js';
12
- export function parseWhereFilter(args) {
13
- return parseFilter('where', args);
14
- }
15
- export function parseHavingFilter(args) {
16
- return parseFilter('having', args);
17
- }
18
- export function parseOnFilter(args) {
19
- return parseFilter('on', args);
20
- }
21
- export function parseReferenceFilter(lhs, op, rhs) {
22
- return FilterNode.create(parseReferenceExpression(lhs), parseFilterOperator(op), parseReferenceExpression(rhs));
23
- }
24
- export function parseExistFilter(arg) {
25
- return parseExistExpression('exists', arg);
26
- }
27
- export function parseNotExistFilter(arg) {
28
- return parseExistExpression('not exists', arg);
29
- }
30
- export function parseFilter(type, args) {
31
- if (args.length === 3) {
32
- return parseThreeArgFilter(args[0], args[1], args[2]);
33
- }
34
- else if (args.length === 1) {
35
- return parseOneArgFilter(type, args[0]);
36
- }
37
- throw createFilterError(type, args);
38
- }
39
- function parseThreeArgFilter(left, op, right) {
40
- if ((op === 'is' || op === 'is not') && (isNull(right) || isBoolean(right))) {
41
- return parseIsFilter(left, op, right);
42
- }
43
- return FilterNode.create(parseReferenceExpression(left), parseFilterOperator(op), parseValueExpressionOrList(right));
44
- }
45
- function parseIsFilter(left, op, right) {
46
- return FilterNode.create(parseReferenceExpression(left), parseFilterOperator(op), ValueNode.createImmediate(right));
47
- }
48
- function parseFilterOperator(op) {
49
- if (isString(op) && OPERATORS.includes(op)) {
50
- return OperatorNode.create(op);
51
- }
52
- else if (isOperationNodeSource(op)) {
53
- return op.toOperationNode();
54
- }
55
- throw new Error(`invalid comparison operator ${JSON.stringify(op)} passed to a filter method`);
56
- }
57
- function parseExistExpression(type, arg) {
58
- return FilterNode.create(undefined, OperatorNode.create(type), parseValueExpressionOrList(arg));
59
- }
60
- function parseOneArgFilter(type, arg) {
61
- if (isFunction(arg)) {
62
- return GROUP_PARSERS[type](arg);
63
- }
64
- else if (isOperationNodeSource(arg)) {
65
- const node = arg.toOperationNode();
66
- if (RawNode.is(node)) {
67
- return node;
68
- }
69
- }
70
- throw createFilterError(type, arg);
71
- }
72
- function createFilterError(type, args) {
73
- return new Error(`invalid arguments passed to a '${type}' method: ${JSON.stringify(args)}`);
74
- }
75
- const GROUP_PARSERS = freeze({
76
- where(callback) {
77
- const query = callback(createSelectQueryBuilder());
78
- const queryNode = query.toOperationNode();
79
- if (!queryNode.where) {
80
- throw new Error('no `where` methods called insided a group callback');
81
- }
82
- return ParensNode.create(queryNode.where.where);
83
- },
84
- having(callback) {
85
- const query = callback(createSelectQueryBuilder());
86
- const queryNode = query.toOperationNode();
87
- if (!queryNode.having) {
88
- throw new Error('no `having` methods called insided a group callback');
89
- }
90
- return ParensNode.create(queryNode.having.having);
91
- },
92
- on(callback) {
93
- const joinBuilder = callback(createJoinBuilder('InnerJoin', 'table'));
94
- const joinNode = joinBuilder.toOperationNode();
95
- if (!joinNode.on) {
96
- throw new Error('no `on` methods called insided a group callback');
97
- }
98
- return ParensNode.create(joinNode.on.on);
99
- },
100
- });
@@ -1,5 +0,0 @@
1
- import { UnionNode } from '../operation-node/union-node.js';
2
- import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
3
- import { RawBuilder } from '../raw-builder/raw-builder.js';
4
- export declare type UnionExpression<DB, O> = SelectQueryBuilder<DB, any, O> | RawBuilder<O>;
5
- export declare function parseUnion(union: UnionExpression<any, any>, all: boolean): UnionNode;
@@ -1,5 +0,0 @@
1
- /// <reference types="./union-parser.d.ts" />
2
- import { UnionNode } from '../operation-node/union-node.js';
3
- export function parseUnion(union, all) {
4
- return UnionNode.create(union.toOperationNode(), all);
5
- }
@@ -1,133 +0,0 @@
1
- import { StringReference, ExtractTypeFromReferenceExpression } from '../parser/reference-parser.js';
2
- import { RawBuilder } from '../raw-builder/raw-builder.js';
3
- /**
4
- * Helpers for type safe SQL function calls.
5
- *
6
- * You can always use the {@link sql} tag to call functions and build arbitrary
7
- * expressions. This module simply has shortcuts for most common function calls.
8
- *
9
- * ### Examples
10
- *
11
- * ```ts
12
- * const { count } = db.fn
13
- *
14
- * await db.selectFrom('person')
15
- * .innerJoin('pet', 'pet.owner_id', 'person.id')
16
- * .select([
17
- * 'person.id',
18
- * count('pet.id').as('pet_count')
19
- * ])
20
- * .groupBy('person.id')
21
- * .having(count('pet.id'), '>', 10)
22
- * .execute()
23
- * ```
24
- *
25
- * The generated SQL (PostgreSQL):
26
- *
27
- * ```sql
28
- * select "person"."id", count("pet"."id") as "pet_count"
29
- * from "person"
30
- * inner join "pet" on "pet"."owner_id" = "person"."id"
31
- * group by "person"."id"
32
- * having count("pet"."id") > $1
33
- * ```
34
- */
35
- export declare class FunctionBuilder<DB, TB extends keyof DB> {
36
- #private;
37
- constructor();
38
- /**
39
- * Calls the `max` function for the column given as the argument.
40
- *
41
- * ### Examples
42
- *
43
- * ```ts
44
- * const { max } = db.fn
45
- *
46
- * db.selectFrom('toy')
47
- * .select(max('price').as('max_price'))
48
- * .execute()
49
- * ```
50
- */
51
- max<C extends StringReference<DB, TB>>(column: C): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, C>>;
52
- /**
53
- * Calls the `min` function for the column given as the argument.
54
- *
55
- * ### Examples
56
- *
57
- * ```ts
58
- * const { min } = db.fn
59
- *
60
- * db.selectFrom('toy')
61
- * .select(min('price').as('min_price'))
62
- * .execute()
63
- * ```
64
- *
65
- */
66
- min<C extends StringReference<DB, TB>>(column: C): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, C>>;
67
- /**
68
- * Calls the `avg` function for the column given as the argument.
69
- *
70
- * If this is used in a `select` statement the type of the selected expression
71
- * will be `number | string` by default. This is because Kysely can't know the
72
- * type the db driver outputs. Sometimes the output can be larger than the
73
- * largest javascript number and a string is returned instead. Most drivers
74
- * allow you to configure the output type of large numbers and Kysely can't
75
- * know if you've done so.
76
- *
77
- * You can specify the output type of the expression by providing
78
- * the type as the first type argument:
79
- *
80
- * ```ts
81
- * const { avg } = db.fn
82
- *
83
- * db.selectFrom('toy')
84
- * .select(avg<number>('price').as('avg_price'))
85
- * .execute()
86
- * ```
87
- */
88
- avg<O extends number | string, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: C): RawBuilder<O>;
89
- /**
90
- * Calls the `sum` function for the column given as the argument.
91
- *
92
- * If this is used in a `select` statement the type of the selected expression
93
- * will be `number | string | bigint` by default. This is because Kysely can't
94
- * know the type the db driver outputs. Sometimes the output can be larger than
95
- * the largest javascript number and a string is returned instead. Most drivers
96
- * allow you to configure the output type of large numbers and Kysely can't
97
- * know if you've done so.
98
- *
99
- * You can specify the output type of the expression by providing
100
- * the type as the first type argument:
101
- *
102
- * ```ts
103
- * const { sum } = db.fn
104
- *
105
- * db.selectFrom('toy')
106
- * .select(sum<number>('price').as('total_price'))
107
- * .execute()
108
- * ```
109
- */
110
- sum<O extends number | string | bigint, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: C): RawBuilder<O>;
111
- /**
112
- * Calls the `count` function for the column given as the argument.
113
- *
114
- * If this is used in a `select` statement the type of the selected expression
115
- * will be `number | string |bigint` by default. This is because Kysely can't
116
- * know the type the db driver outputs. Sometimes the output can be larger than
117
- * the largest javascript number and a string is returned instead. Most drivers
118
- * allow you to configure the output type of large numbers and Kysely can't
119
- * know if you've done so.
120
- *
121
- * You can specify the output type of the expression by providing
122
- * the type as the first type argument:
123
- *
124
- * ```ts
125
- * const { count } = db.fn
126
- *
127
- * db.selectFrom('toy')
128
- * .select(count<number>('id').as('num_toys'))
129
- * .execute()
130
- * ```
131
- */
132
- count<O extends number | string | bigint, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: C): RawBuilder<O>;
133
- }