kysely 0.23.5 → 0.24.1

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 (300) hide show
  1. package/README.md +46 -24
  2. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
  3. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  6. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  7. package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
  8. package/dist/cjs/driver/runtime-driver.js +4 -2
  9. package/dist/cjs/expression/expression-builder.d.ts +386 -0
  10. package/dist/cjs/expression/expression-builder.js +92 -0
  11. package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
  12. package/dist/cjs/expression/expression-wrapper.js +54 -0
  13. package/dist/cjs/expression/expression.d.ts +1 -1
  14. package/dist/cjs/helpers/mysql.d.ts +140 -0
  15. package/dist/cjs/helpers/mysql.js +170 -0
  16. package/dist/cjs/helpers/postgres.d.ts +133 -0
  17. package/dist/cjs/helpers/postgres.js +141 -0
  18. package/dist/cjs/index.d.ts +4 -3
  19. package/dist/cjs/index.js +4 -2
  20. package/dist/cjs/kysely.d.ts +10 -0
  21. package/dist/cjs/kysely.js +12 -1
  22. package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
  23. package/dist/cjs/migration/migrator.d.ts +5 -2
  24. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -3
  25. package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
  26. package/dist/cjs/operation-node/delete-query-node.d.ts +0 -1
  27. package/dist/cjs/operation-node/delete-query-node.js +0 -6
  28. package/dist/cjs/operation-node/function-node.d.ts +13 -0
  29. package/dist/cjs/operation-node/function-node.js +19 -0
  30. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  31. package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
  32. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  33. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  34. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/operator-node.d.ts +13 -2
  36. package/dist/cjs/operation-node/operator-node.js +38 -3
  37. package/dist/cjs/operation-node/query-node.d.ts +25 -8
  38. package/dist/cjs/operation-node/query-node.js +9 -2
  39. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  40. package/dist/cjs/operation-node/select-query-node.js +0 -6
  41. package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
  42. package/dist/cjs/operation-node/update-query-node.js +0 -6
  43. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
  44. package/dist/cjs/parser/binary-operation-parser.js +89 -39
  45. package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
  46. package/dist/cjs/parser/coalesce-parser.js +0 -9
  47. package/dist/cjs/parser/expression-parser.d.ts +7 -3
  48. package/dist/cjs/parser/expression-parser.js +3 -3
  49. package/dist/cjs/parser/group-by-parser.d.ts +3 -2
  50. package/dist/cjs/parser/group-by-parser.js +3 -0
  51. package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
  52. package/dist/cjs/parser/insert-values-parser.js +19 -13
  53. package/dist/cjs/parser/join-parser.js +1 -1
  54. package/dist/cjs/parser/parse-utils.d.ts +0 -2
  55. package/dist/cjs/parser/parse-utils.js +1 -8
  56. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  57. package/dist/cjs/parser/select-parser.d.ts +5 -13
  58. package/dist/cjs/parser/select-parser.js +8 -4
  59. package/dist/cjs/parser/table-parser.d.ts +5 -3
  60. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
  61. package/dist/cjs/parser/unary-operation-parser.js +9 -8
  62. package/dist/cjs/parser/update-set-parser.d.ts +4 -1
  63. package/dist/cjs/parser/update-set-parser.js +9 -4
  64. package/dist/cjs/parser/value-parser.d.ts +5 -0
  65. package/dist/cjs/parser/value-parser.js +1 -3
  66. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  67. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  68. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
  69. package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
  70. package/dist/cjs/query-builder/delete-query-builder.d.ts +220 -201
  71. package/dist/cjs/query-builder/delete-query-builder.js +21 -27
  72. package/dist/cjs/query-builder/delete-result.js +3 -0
  73. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  74. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
  75. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  76. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
  77. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  78. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
  79. package/dist/cjs/query-builder/function-module.d.ts +40 -12
  80. package/dist/cjs/query-builder/function-module.js +43 -329
  81. package/dist/cjs/query-builder/having-interface.d.ts +19 -16
  82. package/dist/cjs/query-builder/insert-query-builder.d.ts +75 -26
  83. package/dist/cjs/query-builder/insert-query-builder.js +21 -29
  84. package/dist/cjs/query-builder/insert-result.js +3 -0
  85. package/dist/cjs/query-builder/join-builder.d.ts +23 -26
  86. package/dist/cjs/query-builder/join-builder.js +17 -22
  87. package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
  88. package/dist/cjs/query-builder/no-result-error.js +5 -1
  89. package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
  90. package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
  91. package/dist/cjs/query-builder/over-builder.d.ts +5 -0
  92. package/dist/cjs/query-builder/over-builder.js +7 -0
  93. package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
  94. package/dist/cjs/query-builder/select-query-builder.d.ts +148 -237
  95. package/dist/cjs/query-builder/select-query-builder.js +333 -78
  96. package/dist/cjs/query-builder/update-query-builder.d.ts +145 -213
  97. package/dist/cjs/query-builder/update-query-builder.js +21 -115
  98. package/dist/cjs/query-builder/update-result.js +3 -0
  99. package/dist/cjs/query-builder/where-interface.d.ts +71 -184
  100. package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
  101. package/dist/cjs/query-compiler/default-query-compiler.js +17 -1
  102. package/dist/cjs/query-creator.d.ts +9 -2
  103. package/dist/cjs/query-creator.js +1 -24
  104. package/dist/cjs/query-executor/query-executor.d.ts +3 -3
  105. package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
  106. package/dist/cjs/raw-builder/raw-builder.js +13 -7
  107. package/dist/cjs/raw-builder/sql.d.ts +17 -9
  108. package/dist/cjs/raw-builder/sql.js +8 -2
  109. package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
  110. package/dist/cjs/schema/alter-column-builder.js +7 -0
  111. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  112. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  113. package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  114. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
  115. package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
  116. package/dist/cjs/schema/column-definition-builder.js +8 -1
  117. package/dist/cjs/schema/create-index-builder.d.ts +51 -9
  118. package/dist/cjs/schema/create-index-builder.js +17 -0
  119. package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
  120. package/dist/cjs/schema/create-schema-builder.js +7 -0
  121. package/dist/cjs/schema/create-table-builder.d.ts +3 -1
  122. package/dist/cjs/schema/create-table-builder.js +3 -1
  123. package/dist/cjs/schema/create-type-builder.d.ts +5 -0
  124. package/dist/cjs/schema/create-type-builder.js +7 -0
  125. package/dist/cjs/schema/create-view-builder.d.ts +5 -0
  126. package/dist/cjs/schema/create-view-builder.js +7 -0
  127. package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
  128. package/dist/cjs/schema/drop-index-builder.js +7 -0
  129. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
  130. package/dist/cjs/schema/drop-schema-builder.js +7 -0
  131. package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
  132. package/dist/cjs/schema/drop-table-builder.js +7 -0
  133. package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
  134. package/dist/cjs/schema/drop-type-builder.js +7 -0
  135. package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
  136. package/dist/cjs/schema/drop-view-builder.js +7 -0
  137. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
  138. package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
  139. package/dist/cjs/util/compilable.d.ts +1 -0
  140. package/dist/cjs/util/compilable.js +6 -0
  141. package/dist/cjs/util/explainable.d.ts +35 -0
  142. package/dist/cjs/util/log.d.ts +2 -0
  143. package/dist/cjs/util/object-utils.js +1 -1
  144. package/dist/cjs/util/streamable.d.ts +29 -0
  145. package/dist/cjs/util/streamable.js +2 -0
  146. package/dist/cjs/util/type-utils.d.ts +1 -0
  147. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
  148. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  149. package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
  150. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  151. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  152. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  153. package/dist/esm/driver/runtime-driver.js +4 -2
  154. package/dist/esm/expression/expression-builder.d.ts +386 -0
  155. package/dist/esm/expression/expression-builder.js +88 -0
  156. package/dist/esm/expression/expression-wrapper.d.ts +92 -0
  157. package/dist/esm/expression/expression-wrapper.js +50 -0
  158. package/dist/esm/expression/expression.d.ts +1 -1
  159. package/dist/esm/helpers/mysql.d.ts +140 -0
  160. package/dist/esm/helpers/mysql.js +165 -0
  161. package/dist/esm/helpers/postgres.d.ts +133 -0
  162. package/dist/esm/helpers/postgres.js +136 -0
  163. package/dist/esm/index.d.ts +4 -3
  164. package/dist/esm/index.js +2 -1
  165. package/dist/esm/kysely.d.ts +10 -0
  166. package/dist/esm/kysely.js +13 -2
  167. package/dist/esm/migration/file-migration-provider.d.ts +5 -2
  168. package/dist/esm/migration/migrator.d.ts +5 -2
  169. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -3
  170. package/dist/esm/operation-node/create-index-node.d.ts +2 -0
  171. package/dist/esm/operation-node/delete-query-node.d.ts +0 -1
  172. package/dist/esm/operation-node/delete-query-node.js +0 -6
  173. package/dist/esm/operation-node/function-node.d.ts +13 -0
  174. package/dist/esm/operation-node/function-node.js +17 -0
  175. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  176. package/dist/esm/operation-node/operation-node-transformer.js +9 -0
  177. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  178. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  179. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  180. package/dist/esm/operation-node/operator-node.d.ts +13 -2
  181. package/dist/esm/operation-node/operator-node.js +34 -3
  182. package/dist/esm/operation-node/query-node.d.ts +25 -8
  183. package/dist/esm/operation-node/query-node.js +9 -2
  184. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  185. package/dist/esm/operation-node/select-query-node.js +0 -6
  186. package/dist/esm/operation-node/update-query-node.d.ts +0 -1
  187. package/dist/esm/operation-node/update-query-node.js +0 -6
  188. package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
  189. package/dist/esm/parser/binary-operation-parser.js +85 -37
  190. package/dist/esm/parser/coalesce-parser.d.ts +0 -2
  191. package/dist/esm/parser/coalesce-parser.js +1 -7
  192. package/dist/esm/parser/expression-parser.d.ts +7 -3
  193. package/dist/esm/parser/expression-parser.js +3 -3
  194. package/dist/esm/parser/group-by-parser.d.ts +3 -2
  195. package/dist/esm/parser/group-by-parser.js +3 -0
  196. package/dist/esm/parser/insert-values-parser.d.ts +4 -1
  197. package/dist/esm/parser/insert-values-parser.js +18 -12
  198. package/dist/esm/parser/join-parser.js +2 -2
  199. package/dist/esm/parser/parse-utils.d.ts +0 -2
  200. package/dist/esm/parser/parse-utils.js +0 -6
  201. package/dist/esm/parser/returning-parser.d.ts +2 -1
  202. package/dist/esm/parser/select-parser.d.ts +5 -13
  203. package/dist/esm/parser/select-parser.js +7 -3
  204. package/dist/esm/parser/table-parser.d.ts +5 -3
  205. package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
  206. package/dist/esm/parser/unary-operation-parser.js +8 -8
  207. package/dist/esm/parser/update-set-parser.d.ts +4 -1
  208. package/dist/esm/parser/update-set-parser.js +7 -2
  209. package/dist/esm/parser/value-parser.d.ts +5 -0
  210. package/dist/esm/parser/value-parser.js +1 -3
  211. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  212. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  213. package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
  214. package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
  215. package/dist/esm/query-builder/delete-query-builder.d.ts +220 -201
  216. package/dist/esm/query-builder/delete-query-builder.js +24 -30
  217. package/dist/esm/query-builder/delete-result.js +3 -0
  218. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  219. package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
  220. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  221. package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
  222. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  223. package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
  224. package/dist/esm/query-builder/function-module.d.ts +40 -12
  225. package/dist/esm/query-builder/function-module.js +42 -328
  226. package/dist/esm/query-builder/having-interface.d.ts +19 -16
  227. package/dist/esm/query-builder/insert-query-builder.d.ts +75 -26
  228. package/dist/esm/query-builder/insert-query-builder.js +25 -33
  229. package/dist/esm/query-builder/insert-result.js +3 -0
  230. package/dist/esm/query-builder/join-builder.d.ts +23 -26
  231. package/dist/esm/query-builder/join-builder.js +18 -23
  232. package/dist/esm/query-builder/no-result-error.d.ts +1 -0
  233. package/dist/esm/query-builder/no-result-error.js +3 -0
  234. package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
  235. package/dist/esm/query-builder/on-conflict-builder.js +54 -38
  236. package/dist/esm/query-builder/over-builder.d.ts +5 -0
  237. package/dist/esm/query-builder/over-builder.js +7 -0
  238. package/dist/esm/query-builder/returning-interface.d.ts +2 -2
  239. package/dist/esm/query-builder/select-query-builder.d.ts +148 -237
  240. package/dist/esm/query-builder/select-query-builder.js +337 -82
  241. package/dist/esm/query-builder/update-query-builder.d.ts +145 -213
  242. package/dist/esm/query-builder/update-query-builder.js +25 -119
  243. package/dist/esm/query-builder/update-result.js +3 -0
  244. package/dist/esm/query-builder/where-interface.d.ts +71 -184
  245. package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
  246. package/dist/esm/query-compiler/default-query-compiler.js +17 -1
  247. package/dist/esm/query-creator.d.ts +9 -2
  248. package/dist/esm/query-creator.js +1 -24
  249. package/dist/esm/query-executor/query-executor.d.ts +3 -3
  250. package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
  251. package/dist/esm/raw-builder/raw-builder.js +13 -7
  252. package/dist/esm/raw-builder/sql.d.ts +17 -9
  253. package/dist/esm/raw-builder/sql.js +8 -2
  254. package/dist/esm/schema/alter-column-builder.d.ts +5 -0
  255. package/dist/esm/schema/alter-column-builder.js +7 -0
  256. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  257. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  258. package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  259. package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
  260. package/dist/esm/schema/column-definition-builder.d.ts +6 -1
  261. package/dist/esm/schema/column-definition-builder.js +8 -1
  262. package/dist/esm/schema/create-index-builder.d.ts +51 -9
  263. package/dist/esm/schema/create-index-builder.js +17 -0
  264. package/dist/esm/schema/create-schema-builder.d.ts +5 -0
  265. package/dist/esm/schema/create-schema-builder.js +7 -0
  266. package/dist/esm/schema/create-table-builder.d.ts +3 -1
  267. package/dist/esm/schema/create-table-builder.js +3 -1
  268. package/dist/esm/schema/create-type-builder.d.ts +5 -0
  269. package/dist/esm/schema/create-type-builder.js +7 -0
  270. package/dist/esm/schema/create-view-builder.d.ts +5 -0
  271. package/dist/esm/schema/create-view-builder.js +7 -0
  272. package/dist/esm/schema/drop-index-builder.d.ts +5 -0
  273. package/dist/esm/schema/drop-index-builder.js +7 -0
  274. package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
  275. package/dist/esm/schema/drop-schema-builder.js +7 -0
  276. package/dist/esm/schema/drop-table-builder.d.ts +5 -0
  277. package/dist/esm/schema/drop-table-builder.js +7 -0
  278. package/dist/esm/schema/drop-type-builder.d.ts +5 -0
  279. package/dist/esm/schema/drop-type-builder.js +7 -0
  280. package/dist/esm/schema/drop-view-builder.d.ts +5 -0
  281. package/dist/esm/schema/drop-view-builder.js +7 -0
  282. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
  283. package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
  284. package/dist/esm/util/compilable.d.ts +1 -0
  285. package/dist/esm/util/compilable.js +4 -1
  286. package/dist/esm/util/explainable.d.ts +35 -0
  287. package/dist/esm/util/log.d.ts +2 -0
  288. package/dist/esm/util/object-utils.js +1 -1
  289. package/dist/esm/util/streamable.d.ts +29 -0
  290. package/dist/esm/util/streamable.js +2 -0
  291. package/dist/esm/util/type-utils.d.ts +1 -0
  292. package/helpers/mysql.d.ts +1 -0
  293. package/helpers/mysql.js +1 -0
  294. package/helpers/postgres.d.ts +1 -0
  295. package/helpers/postgres.js +1 -0
  296. package/package.json +26 -9
  297. package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
  298. package/dist/cjs/query-builder/expression-builder.js +0 -107
  299. package/dist/esm/query-builder/expression-builder.d.ts +0 -126
  300. package/dist/esm/query-builder/expression-builder.js +0 -104
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![Discord](https://img.shields.io/discord/890118421587578920)](https://discord.gg/xyBJ3GwvAm)
4
4
  [![Tests](https://github.com/koskimas/kysely/actions/workflows/test.yml/badge.svg)](https://github.com/koskimas/kysely)
5
5
 
6
- # [Kysely](https://koskimas.github.io/kysely/index.html)
6
+ # [Kysely](https://kysely-org.github.io/kysely/index.html)
7
7
 
8
8
  Kysely (pronounce “Key-Seh-Lee”) is a type-safe and autocompletion-friendly typescript SQL query builder. Inspired by
9
9
  [knex](http://knexjs.org/). Mainly developed for [node.js](https://nodejs.org/en/) but also runs on [deno](https://deno.land/)
@@ -21,8 +21,8 @@ column names, aliases and types from selected subqueries, joined subqueries, `wi
21
21
  much anything you can think of.
22
22
 
23
23
  Of course there are cases where things cannot be typed at compile time, and Kysely offers escape
24
- hatches for these situations. See the [sql template tag](https://koskimas.github.io/kysely/interfaces/Sql.html)
25
- and the [DynamicModule](https://koskimas.github.io/kysely/classes/DynamicModule.html#ref) for more info.
24
+ hatches for these situations. See the [sql template tag](https://kysely-org.github.io/kysely/interfaces/Sql.html)
25
+ and the [DynamicModule](https://kysely-org.github.io/kysely/classes/DynamicModule.html#ref) for more info.
26
26
 
27
27
  All API documentation is written in the typing files and you can simply `cmd-click` on the module, class
28
28
  or method you're using to see it. The same documentation is also hosted [here](https://github.com/koskimas/kysely).
@@ -69,7 +69,7 @@ npm install kysely better-sqlite3
69
69
  ```
70
70
 
71
71
  More dialects will be added soon. Kysely also has a simple interface
72
- for [3rd party dialects](https://koskimas.github.io/kysely/interfaces/Dialect.html).
72
+ for [3rd party dialects](https://kysely-org.github.io/kysely/interfaces/Dialect.html).
73
73
 
74
74
  ### 3rd party dialects
75
75
 
@@ -80,6 +80,7 @@ for [3rd party dialects](https://koskimas.github.io/kysely/interfaces/Dialect.ht
80
80
  - [SurrealDB](https://github.com/igalklebanov/kysely-surrealdb)
81
81
  - [sqld](https://github.com/libsql/kysely-libsql)
82
82
  - [Neon](https://github.com/seveibar/kysely-neon)
83
+ - [AWS S3 Select](https://github.com/igalklebanov/kysely-s3-select)
83
84
 
84
85
  # Minimal example
85
86
 
@@ -189,16 +190,29 @@ type UpdateablePerson = Updateable<PersonTable>
189
190
 
190
191
  # Generating types
191
192
 
192
- If you want to generate the table types automatically from the database schema please
193
- check out [this awesome project](https://github.com/RobinBlomberg/kysely-codegen).
193
+ To work with Kysely, you're required to provide a database schema type definition to the Kysely constructor.
194
+
195
+ In many cases, defining your database schema definitions manually is good enough.
196
+
197
+ However, when building production applications, its best to stay aligned with the
198
+ database schema, by automatically generating the database schema type definitions.
199
+
200
+ There are several ways to do this using 3rd party libraries:
201
+
202
+ - [kysely-codegen](https://github.com/RobinBlomberg/kysely-codegen) - This library
203
+ generates Kysely database schema type definitions by connecting to and introspecting
204
+ your database. This library works with all built-in dialects.
205
+
206
+ - [prisma-kysely](https://github.com/valtyr/prisma-kysely) - This library generates
207
+ Kysely database schema type definitions from your existing Prisma schemas.
194
208
 
195
209
  # Query examples
196
210
 
197
211
  ## Select queries
198
212
 
199
213
  You can find examples of select queries in the documentation of the
200
- [select method](https://koskimas.github.io/kysely/classes/SelectQueryBuilder.html#select) and
201
- the [where method](https://koskimas.github.io/kysely/classes/SelectQueryBuilder.html#where)
214
+ [select method](https://kysely-org.github.io/kysely/classes/SelectQueryBuilder.html#select) and
215
+ the [where method](https://kysely-org.github.io/kysely/classes/SelectQueryBuilder.html#where)
202
216
  among other places.
203
217
 
204
218
  ### Stream select query results
@@ -242,32 +256,36 @@ async function demo() {
242
256
 
243
257
  ## Update queries
244
258
 
245
- See the [set method](https://koskimas.github.io/kysely/classes/UpdateQueryBuilder.html#set) and the
246
- [updateTable method](https://koskimas.github.io/kysely/classes/Kysely.html#updateTable)
259
+ See the [set method](https://kysely-org.github.io/kysely/classes/UpdateQueryBuilder.html#set) and the
260
+ [updateTable method](https://kysely-org.github.io/kysely/classes/Kysely.html#updateTable)
247
261
  documentation.
248
262
 
249
263
  ## Insert queries
250
264
 
251
- See the [values method](https://koskimas.github.io/kysely/classes/InsertQueryBuilder.html#values) and the
252
- [insertInto method](https://koskimas.github.io/kysely/classes/Kysely.html#insertInto)
265
+ See the [values method](https://kysely-org.github.io/kysely/classes/InsertQueryBuilder.html#values) and the
266
+ [insertInto method](https://kysely-org.github.io/kysely/classes/Kysely.html#insertInto)
253
267
  documentation.
254
268
 
255
269
  ## Delete queries
256
270
 
257
- See the [deleteFrom method](https://koskimas.github.io/kysely/classes/Kysely.html#deleteFrom)
271
+ See the [deleteFrom method](https://kysely-org.github.io/kysely/classes/Kysely.html#deleteFrom)
258
272
  documentation.
259
273
 
260
274
  # Recipes
261
275
 
262
- The [recipes](https://github.com/koskimas/kysely/tree/master/recipes) folder contains a bunch of small tutorials
276
+ The [recipes](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/) folder contains a bunch of small tutorials
263
277
  or "recipes" for common use cases.
264
278
 
265
- * [Conditional selects](https://github.com/koskimas/kysely/tree/master/recipes/conditional-selects.md)
266
- * [Deduplicate joins](https://github.com/koskimas/kysely/tree/master/recipes/deduplicate-joins.md)
267
- * [Extending kysely](https://github.com/koskimas/kysely/tree/master/recipes/extending-kysely.md)
268
- * [Raw SQL](https://github.com/koskimas/kysely/tree/master/recipes/raw-sql.md)
269
- * [Schemas](https://github.com/koskimas/kysely/tree/master/recipes/schemas.md)
270
- * [Dealing with the `Type instantiation is excessively deep and possibly infinite` error](https://github.com/koskimas/kysely/tree/master/recipes/excessively-deep-types.md)
279
+ * [Expressions](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/expressions.md)
280
+ * [Conditional selects](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/conditional-selects.md)
281
+ * [Dealing with the `Type instantiation is excessively deep and possibly infinite` error](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/excessively-deep-types.md)
282
+ * [Deduplicate joins](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/deduplicate-joins.md)
283
+ * [Extending kysely](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/extending-kysely.md)
284
+ * [Introspecting relation metadata](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/introspecting-relation-metadata.md)
285
+ * [Raw SQL](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/raw-sql.md)
286
+ * [Relations](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/relations.md)
287
+ * [Schemas](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/schemas.md)
288
+ * [Splitting build, compile and execute code](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/splitting-build-compile-and-execute-code.md)
271
289
 
272
290
  # Migrations
273
291
 
@@ -292,7 +310,7 @@ when you go back to previous version. The only argument for the functions is an
292
310
  Migrations should never depend on the current code of your app because they need to work even when the app
293
311
  changes. Migrations need to be "frozen in time".
294
312
 
295
- The migrations can use the [Kysely.schema](https://koskimas.github.io/kysely/classes/SchemaModule.html)
313
+ The migrations can use the [Kysely.schema](https://kysely-org.github.io/kysely/classes/SchemaModule.html)
296
314
  module to modify the schema. Migrations can also run normal queries to modify data.
297
315
 
298
316
  Execution order of the migrations is the alpabetical order of their names. An excellent way to name your
@@ -301,8 +319,8 @@ where multiple team members may add migrations at the same time in parallel comm
301
319
  about the other migrations.
302
320
 
303
321
  You don't need to store your migrations as separate files if you don't want to. You can easily
304
- implement your own [MigrationProvider](https://koskimas.github.io/kysely/interfaces/MigrationProvider.html)
305
- and give it to the [Migrator](https://koskimas.github.io/kysely/classes/Migrator.html) class
322
+ implement your own [MigrationProvider](https://kysely-org.github.io/kysely/interfaces/MigrationProvider.html)
323
+ and give it to the [Migrator](https://kysely-org.github.io/kysely/classes/Migrator.html) class
306
324
  when you instantiate one.
307
325
 
308
326
  ### PostgreSQL migration example
@@ -390,7 +408,7 @@ await migrator.migrateToLatest(pathToMigrationsFolder)
390
408
  ```
391
409
 
392
410
  to run all migrations that have not yet been run. See the
393
- [Migrator](https://koskimas.github.io/kysely/classes/Migrator.html)
411
+ [Migrator](https://kysely-org.github.io/kysely/classes/Migrator.html)
394
412
  class's documentation for more info.
395
413
 
396
414
  Kysely doesn't have a CLI for running migrations and probably never will. This is because Kysely's
@@ -572,3 +590,7 @@ a library for typescript from the ground up produces much better and simpler typ
572
590
  # How to contribute to Kysely
573
591
 
574
592
  See [CONTRIBUTING.md](./CONTRIBUTING.md).
593
+
594
+ # Sponsors
595
+
596
+ <a href="https://vercel.com/?utm_source=kysely&utm_campaign=oss"><img src="https://kysely.dev/img/powered-by-vercel.svg" alt="Powered by Vercel" /></a>
@@ -19,10 +19,10 @@ class MysqlAdapter extends dialect_adapter_base_js_1.DialectAdapterBase {
19
19
  // is released using `release_lock`. This way we know that the lock is either
20
20
  // released by us after successfull or failed migrations OR it's released by
21
21
  // MySQL if the process gets killed for some reason.
22
- await (0, sql_js_1.sql) `select get_lock(${sql_js_1.sql.literal(LOCK_ID)}, ${sql_js_1.sql.literal(LOCK_TIMEOUT_SECONDS)})`.execute(db);
22
+ await (0, sql_js_1.sql) `select get_lock(${sql_js_1.sql.lit(LOCK_ID)}, ${sql_js_1.sql.lit(LOCK_TIMEOUT_SECONDS)})`.execute(db);
23
23
  }
24
24
  async releaseMigrationLock(db) {
25
- await (0, sql_js_1.sql) `select release_lock(${sql_js_1.sql.literal(LOCK_ID)})`.execute(db);
25
+ await (0, sql_js_1.sql) `select release_lock(${sql_js_1.sql.lit(LOCK_ID)})`.execute(db);
26
26
  }
27
27
  }
28
28
  exports.MysqlAdapter = MysqlAdapter;
@@ -42,7 +42,7 @@ declare class MysqlConnection implements DatabaseConnection {
42
42
  #private;
43
43
  constructor(rawConnection: MysqlPoolConnection);
44
44
  executeQuery<O>(compiledQuery: CompiledQuery): Promise<QueryResult<O>>;
45
- streamQuery<O>(compiledQuery: CompiledQuery, chunkSize: number): AsyncIterableIterator<QueryResult<O>>;
45
+ streamQuery<O>(compiledQuery: CompiledQuery, _chunkSize: number): AsyncIterableIterator<QueryResult<O>>;
46
46
  [PRIVATE_RELEASE_METHOD](): void;
47
47
  }
48
48
  export {};
@@ -127,7 +127,7 @@ class MysqlConnection {
127
127
  });
128
128
  });
129
129
  }
130
- async *streamQuery(compiledQuery, chunkSize) {
130
+ async *streamQuery(compiledQuery, _chunkSize) {
131
131
  const stream = this.#rawConnection
132
132
  .query(compiledQuery.sql, compiledQuery.parameters)
133
133
  .stream({
@@ -14,7 +14,7 @@ class PostgresAdapter extends dialect_adapter_base_js_1.DialectAdapterBase {
14
14
  }
15
15
  async acquireMigrationLock(db) {
16
16
  // Acquire a transaction level advisory lock.
17
- await (0, sql_js_1.sql) `select pg_advisory_xact_lock(${sql_js_1.sql.literal(LOCK_ID)})`.execute(db);
17
+ await (0, sql_js_1.sql) `select pg_advisory_xact_lock(${sql_js_1.sql.lit(LOCK_ID)})`.execute(db);
18
18
  }
19
19
  async releaseMigrationLock() {
20
20
  // Nothing to do here. `pg_advisory_xact_lock` is automatically released at the
@@ -27,6 +27,7 @@ import { SqliteDialectConfig } from './sqlite-dialect-config.js';
27
27
  * new SqliteDialect({
28
28
  * database: async () => new Database('db.sqlite')
29
29
  * })
30
+ * ```
30
31
  */
31
32
  export declare class SqliteDialect implements Dialect {
32
33
  #private;
@@ -28,6 +28,7 @@ const object_utils_js_1 = require("../../util/object-utils.js");
28
28
  * new SqliteDialect({
29
29
  * database: async () => new Database('db.sqlite')
30
30
  * })
31
+ * ```
31
32
  */
32
33
  class SqliteDialect {
33
34
  #config;
@@ -76,7 +76,7 @@ class RuntimeDriver {
76
76
  return await executeQuery.call(connection, compiledQuery);
77
77
  }
78
78
  catch (error) {
79
- this.#logError(error);
79
+ this.#logError(error, compiledQuery, startTime);
80
80
  throw error;
81
81
  }
82
82
  finally {
@@ -84,10 +84,12 @@ class RuntimeDriver {
84
84
  }
85
85
  };
86
86
  }
87
- #logError(error) {
87
+ #logError(error, compiledQuery, startTime) {
88
88
  this.#log.error(() => ({
89
89
  level: 'error',
90
90
  error,
91
+ query: compiledQuery,
92
+ queryDurationMillis: this.#calculateDurationMillis(startTime),
91
93
  }));
92
94
  }
93
95
  #logQuery(compiledQuery, startTime) {
@@ -0,0 +1,386 @@
1
+ import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
2
+ import { TableExpression, From, FromTables, ExtractTableAlias, AnyAliasedTable, PickTableWithAlias } from '../parser/table-parser.js';
3
+ import { FunctionModule } from '../query-builder/function-module.js';
4
+ import { ExtractTypeFromReferenceExpression, ReferenceExpression, StringReference } from '../parser/reference-parser.js';
5
+ import { QueryExecutor } from '../query-executor/query-executor.js';
6
+ import { BinaryOperatorExpression, ComparisonOperatorExpression, OperandValueExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
7
+ import { Expression } from './expression.js';
8
+ import { ExpressionWrapper } from './expression-wrapper.js';
9
+ import { ComparisonOperator, UnaryOperator } from '../operation-node/operator-node.js';
10
+ import { SqlBool } from '../util/type-utils.js';
11
+ import { ExtractTypeFromValueExpressionOrList } from '../parser/value-parser.js';
12
+ export interface ExpressionBuilder<DB, TB extends keyof DB> {
13
+ /**
14
+ * Returns a {@link FunctionModule} that can be used to write type safe function
15
+ * calls.
16
+ *
17
+ * The difference between this and {@link Kysely.fn} is that this one is more
18
+ * type safe. You can only refer to columns visible to the part of the query
19
+ * you are building. {@link Kysely.fn} allows you to refer to columns in any
20
+ * table of the database even if it doesn't produce valid SQL.
21
+ *
22
+ * ```ts
23
+ * await db.selectFrom('person')
24
+ * .innerJoin('pet', 'pet.owner_id', 'person.id')
25
+ * .select((eb) => [
26
+ * 'person.id',
27
+ * eb.fn.count('pet.id').as('pet_count')
28
+ * ])
29
+ * .groupBy('person.id')
30
+ * .having(count('pet.id'), '>', 10)
31
+ * .execute()
32
+ * ```
33
+ *
34
+ * The generated SQL (PostgreSQL):
35
+ *
36
+ * ```sql
37
+ * select "person"."id", count("pet"."id") as "pet_count"
38
+ * from "person"
39
+ * inner join "pet" on "pet"."owner_id" = "person"."id"
40
+ * group by "person"."id"
41
+ * having count("pet"."id") > $1
42
+ * ```
43
+ */
44
+ get fn(): FunctionModule<DB, TB>;
45
+ /**
46
+ * Creates a subquery.
47
+ *
48
+ * The query builder returned by this method is typed in a way that you can refer to
49
+ * all tables of the parent query in addition to the subquery's tables.
50
+ *
51
+ * This method accepts all the same inputs as {@link QueryCreator.selectFrom}.
52
+ *
53
+ * ### Examples
54
+ *
55
+ * This example shows that you can refer to both `pet.owner_id` and `person.id`
56
+ * columns from the subquery. This is needed to be able to create correlated
57
+ * subqueries:
58
+ *
59
+ * ```ts
60
+ * const result = await db.selectFrom('pet')
61
+ * .select((eb) => [
62
+ * 'pet.name',
63
+ * eb.selectFrom('person')
64
+ * .whereRef('person.id', '=', 'pet.owner_id')
65
+ * .select('person.first_name')
66
+ * .as('owner_name')
67
+ * ])
68
+ * .execute()
69
+ *
70
+ * console.log(result[0].owner_name)
71
+ * ```
72
+ *
73
+ * The generated SQL (PostgreSQL):
74
+ *
75
+ * ```sql
76
+ * select
77
+ * "pet"."name",
78
+ * ( select "person"."first_name"
79
+ * from "person"
80
+ * where "person"."id" = "pet"."owner_id"
81
+ * ) as "owner_name"
82
+ * from "pet"
83
+ * ```
84
+ *
85
+ * You can use a normal query in place of `(qb) => qb.selectFrom(...)` but in
86
+ * that case Kysely typings wouldn't allow you to reference `pet.owner_id`
87
+ * because `pet` is not joined to that query.
88
+ */
89
+ selectFrom<TE extends keyof DB & string>(from: TE[]): SelectQueryBuilder<DB, TB | ExtractTableAlias<DB, TE>, {}>;
90
+ selectFrom<TE extends TableExpression<DB, TB>>(from: TE[]): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
91
+ selectFrom<TE extends keyof DB & string>(from: TE): SelectQueryBuilder<DB, TB | ExtractTableAlias<DB, TE>, {}>;
92
+ selectFrom<TE extends AnyAliasedTable<DB>>(from: TE): SelectQueryBuilder<DB & PickTableWithAlias<DB, TE>, TB | ExtractTableAlias<DB, TE>, {}>;
93
+ selectFrom<TE extends TableExpression<DB, TB>>(from: TE): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
94
+ /**
95
+ * This can be used to reference columns.
96
+ *
97
+ * ### Examples
98
+ *
99
+ * By default the third argument of {@link bxp} and {@link cmpr} is a value.
100
+ * This function can be used to pass in a column reference instead:
101
+ *
102
+ * ```ts
103
+ * db.selectFrom('person')
104
+ * .selectAll('person')
105
+ * .where(({ or, cmpr, ref }) => or([
106
+ * cmpr('first_name', '=', ref('last_name')),
107
+ * cmpr('first_name', '=', ref('middle_name'))
108
+ * ]))
109
+ * ```
110
+ *
111
+ * In the next example we use the `ref` method to reference
112
+ * columns of the virtual table `excluded` in a type-safe way
113
+ * to create an upsert operation:
114
+ *
115
+ * ```ts
116
+ * db.insertInto('person')
117
+ * .values(person)
118
+ * .onConflict((oc) => oc
119
+ * .column('id')
120
+ * .doUpdateSet(({ ref }) => ({
121
+ * first_name: ref('excluded.first_name'),
122
+ * last_name: ref('excluded.last_name')
123
+ * }))
124
+ * )
125
+ * ```
126
+ *
127
+ * In the next example we use `ref` in a raw sql expression. Unless you
128
+ * want to be as type-safe as possible, this is probably overkill:
129
+ *
130
+ * ```ts
131
+ * db.update('pet').set((eb) => ({
132
+ * name: sql`concat(${eb.ref('pet.name')}, ${suffix})`
133
+ * }))
134
+ * ```
135
+ */
136
+ ref<RE extends StringReference<DB, TB>>(reference: RE): ExpressionWrapper<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
137
+ /**
138
+ * Returns a value expression.
139
+ *
140
+ * This can be used to pass in a value where a reference is taken by default.
141
+ *
142
+ * This function returns an {@link Expression} and can be used pretty much anywhere.
143
+ *
144
+ * ### Examples
145
+ *
146
+ * The {@link cmpr} function takes a reference by default as the first argument. `val` could
147
+ * be used to pass in a value instead:
148
+ *
149
+ * ```ts
150
+ * cmpr(val(38), '=', ref('age'))
151
+ * ```
152
+ *
153
+ * The generated SQL (PostgreSQL):
154
+ *
155
+ * ```sql
156
+ * $1 = "age"
157
+ * ```
158
+ */
159
+ val<VE>(value: VE): ExpressionWrapper<ExtractTypeFromValueExpressionOrList<VE>>;
160
+ /**
161
+ * Creates a binary comparison expression.
162
+ *
163
+ * This function returns an {@link Expression} and can be used pretty much anywhere.
164
+ * See the examples for a couple of possible use cases.
165
+ *
166
+ * @see {@link bxp}
167
+ *
168
+ * ### Examples
169
+ *
170
+ * In this example we use `cmpr` and {@link or} to create a `WHERE expr1 OR expr2 OR expr3`
171
+ * statement:
172
+ *
173
+ * ```ts
174
+ * db.selectFrom('person')
175
+ * .selectAll('person')
176
+ * .where(({ or, cmpr }) => or([
177
+ * cmpr('first_name', '=', 'Jennifer'),
178
+ * cmpr('fist_name', '=', 'Arnold'),
179
+ * cmpr('fist_name', '=', 'Sylvester')
180
+ * ]))
181
+ * ```
182
+ *
183
+ * The generated SQL (PostgreSQL):
184
+ *
185
+ * ```sql
186
+ * select "person".*
187
+ * from "person"
188
+ * where "first_name" = $1
189
+ * or "first_name" = $2
190
+ * or "first_name" = $3
191
+ * ```
192
+ *
193
+ * By default the third argument is a value. {@link ref} can be used to
194
+ * pass in a column reference instead:
195
+ *
196
+ * ```ts
197
+ * db.selectFrom('person')
198
+ * .selectAll('person')
199
+ * .where(({ or, cmpr, ref }) => or([
200
+ * cmpr('first_name', '=', ref('last_name')),
201
+ * cmpr('first_name', '=', ref('middle_name'))
202
+ * ]))
203
+ * ```
204
+ *
205
+ * The generated SQL (PostgreSQL):
206
+ *
207
+ * ```sql
208
+ * select "person".*
209
+ * from "person"
210
+ * where "first_name" = "last_name"
211
+ * or "first_name" = "middle_name"
212
+ * ```
213
+ */
214
+ cmpr<O extends SqlBool = SqlBool, RE extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): ExpressionWrapper<O>;
215
+ /**
216
+ * Creates a binary expression.
217
+ *
218
+ * See {@link cmpr} for creating binary comparison operations.
219
+ *
220
+ * This function returns an {@link Expression} and can be used pretty much anywhere.
221
+ * See the examples for a couple of possible use cases.
222
+ *
223
+ * ### Examples
224
+ *
225
+ * In the following example `bxp` is used to increment an integer column:
226
+ *
227
+ * ```ts
228
+ * db.updateTable('person')
229
+ * .set((eb) => ({
230
+ * age: eb.bxp('age', '+', 1)
231
+ * }))
232
+ * .where('id', '=', id)
233
+ * ```
234
+ *
235
+ * The generated SQL (PostgreSQL):
236
+ *
237
+ * ```sql
238
+ * update "person"
239
+ * set "age" = "age" + $1
240
+ * where "id" = $2
241
+ * ```
242
+ *
243
+ * By default the third argument is a value. {@link ref} can be used to
244
+ * pass in a column reference instead:
245
+ *
246
+ * ```ts
247
+ * db.updateTable('person')
248
+ * .set((eb) => ({
249
+ * age: eb.bxp('age', '+', eb.ref('age'))
250
+ * }))
251
+ * .where('id', '=', id)
252
+ * ```
253
+ *
254
+ * The generated SQL (PostgreSQL):
255
+ *
256
+ * ```sql
257
+ * update "person"
258
+ * set "age" = "age" + "age"
259
+ * where "id" = $1
260
+ * ```
261
+ */
262
+ bxp<RE extends ReferenceExpression<DB, TB>, OP extends BinaryOperatorExpression>(lhs: RE, op: OP, rhs: OperandValueExpression<DB, TB, RE>): ExpressionWrapper<OP extends ComparisonOperator ? SqlBool : ExtractTypeFromReferenceExpression<DB, TB, RE>>;
263
+ /**
264
+ * Creates an unary expression.
265
+ *
266
+ * This function returns an {@link Expression} and can be used pretty much anywhere.
267
+ * See the examples for a couple of possible use cases.
268
+ *
269
+ * @see {@link not}, {@link exists} and {@link neg}.
270
+ *
271
+ * ### Examples
272
+ *
273
+ * ```ts
274
+ * db.selectFrom('person')
275
+ * .select((eb) => [
276
+ * 'first_name',
277
+ * eb.unary('-', 'age').as('negative_age')
278
+ * ])
279
+ * ```
280
+ *
281
+ * The generated SQL (PostgreSQL):
282
+ *
283
+ * ```sql
284
+ * select "first_name", -"age"
285
+ * from "person"
286
+ * ```
287
+ */
288
+ unary<RE extends ReferenceExpression<DB, TB>>(op: UnaryOperator, expr: RE): ExpressionWrapper<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
289
+ /**
290
+ * Creates a `not` operation.
291
+ *
292
+ * A shortcut for `unary('not', expr)`.
293
+ *
294
+ * @see {@link unary}
295
+ */
296
+ not<RE extends ReferenceExpression<DB, TB>>(expr: RE): ExpressionWrapper<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
297
+ /**
298
+ * Creates an `exists` operation.
299
+ *
300
+ * A shortcut for `unary('exists', expr)`.
301
+ *
302
+ * @see {@link unary}
303
+ */
304
+ exists<RE extends ReferenceExpression<DB, TB>>(expr: RE): ExpressionWrapper<SqlBool>;
305
+ /**
306
+ * Creates a negation operation.
307
+ *
308
+ * A shortcut for `unary('-', expr)`.
309
+ *
310
+ * @see {@link unary}
311
+ */
312
+ neg<RE extends ReferenceExpression<DB, TB>>(expr: RE): ExpressionWrapper<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
313
+ /**
314
+ * Combines two or more expressions using the logical `and` operator.
315
+ *
316
+ * This function returns an {@link Expression} and can be used pretty much anywhere.
317
+ * See the examples for a couple of possible use cases.
318
+ *
319
+ * ### Examples
320
+ *
321
+ * In this example we use `and` with {@link cmpr} to create a `WHERE expr1 AND expr2 AND expr3`
322
+ * statement:
323
+ *
324
+ * ```ts
325
+ * db.selectFrom('person')
326
+ * .selectAll('person')
327
+ * .where(({ and, cmpr }) => and([
328
+ * cmpr('first_name', '=', 'Jennifer'),
329
+ * cmpr('fist_name', '=', 'Arnold'),
330
+ * cmpr('fist_name', '=', 'Sylvester')
331
+ * ]))
332
+ * ```
333
+ *
334
+ * The generated SQL (PostgreSQL):
335
+ *
336
+ * ```sql
337
+ * select "person".*
338
+ * from "person"
339
+ * where "first_name" = $1
340
+ * and "first_name" = $2
341
+ * and "first_name" = $3
342
+ * ```
343
+ */
344
+ and(expres: ReadonlyArray<Expression<SqlBool>>): ExpressionWrapper<SqlBool>;
345
+ /**
346
+ * Combines two or more expressions using the logical `or` operator.
347
+ *
348
+ * This function returns an {@link Expression} and can be used pretty much anywhere.
349
+ * See the examples for a couple of possible use cases.
350
+ *
351
+ * ### Examples
352
+ *
353
+ * In this example we use `or` with {@link cmpr} to create a `WHERE expr1 OR expr2 OR expr3`
354
+ * statement:
355
+ *
356
+ * ```ts
357
+ * db.selectFrom('person')
358
+ * .selectAll('person')
359
+ * .where(({ or, cmpr }) => or([
360
+ * cmpr('first_name', '=', 'Jennifer'),
361
+ * cmpr('fist_name', '=', 'Arnold'),
362
+ * cmpr('fist_name', '=', 'Sylvester')
363
+ * ]))
364
+ * ```
365
+ *
366
+ * The generated SQL (PostgreSQL):
367
+ *
368
+ * ```sql
369
+ * select "person".*
370
+ * from "person"
371
+ * where "first_name" = $1
372
+ * or "first_name" = $2
373
+ * or "first_name" = $3
374
+ * ```
375
+ */
376
+ or(expres: ReadonlyArray<Expression<SqlBool>>): ExpressionWrapper<SqlBool>;
377
+ /**
378
+ * See {@link QueryCreator.withSchema}
379
+ *
380
+ * @deprecated Will be removed in kysely 0.25.0.
381
+ */
382
+ withSchema(schema: string): ExpressionBuilder<DB, TB>;
383
+ }
384
+ export declare function createExpressionBuilder<DB, TB extends keyof DB>(executor?: QueryExecutor): ExpressionBuilder<DB, TB>;
385
+ export declare function expressionBuilder<DB, TB extends keyof DB>(_: SelectQueryBuilder<DB, TB, any>): ExpressionBuilder<DB, TB>;
386
+ export declare function expressionBuilder<DB, TB extends keyof DB>(): ExpressionBuilder<DB, TB>;