kysely 0.27.3 → 0.27.5

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 (301) hide show
  1. package/.renovaterc.json +3 -0
  2. package/CONTRIBUTING.md +2 -2
  3. package/README.md +7 -7
  4. package/deno.check.d.ts +86 -0
  5. package/deno.check.json +21 -0
  6. package/dist/cjs/dialect/dialect-adapter-base.d.ts +13 -3
  7. package/dist/cjs/dialect/dialect-adapter-base.js +4 -1
  8. package/dist/cjs/dialect/dialect-adapter.d.ts +16 -2
  9. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +12 -7
  10. package/dist/cjs/dialect/mssql/mssql-adapter.js +2 -4
  11. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +83 -55
  12. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +1 -0
  13. package/dist/cjs/dialect/mssql/mssql-driver.js +114 -48
  14. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
  15. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  16. package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
  17. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
  18. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  19. package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
  20. package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
  21. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  22. package/dist/cjs/driver/database-connection.d.ts +3 -1
  23. package/dist/cjs/driver/dummy-driver.d.ts +13 -12
  24. package/dist/cjs/driver/dummy-driver.js +13 -12
  25. package/dist/cjs/dynamic/dynamic-reference-builder.js +2 -2
  26. package/dist/cjs/dynamic/dynamic.d.ts +7 -7
  27. package/dist/cjs/dynamic/dynamic.js +7 -7
  28. package/dist/cjs/expression/expression-builder.d.ts +153 -62
  29. package/dist/cjs/expression/expression-builder.js +2 -3
  30. package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
  31. package/dist/cjs/expression/expression.d.ts +40 -5
  32. package/dist/cjs/expression/expression.js +2 -3
  33. package/dist/cjs/helpers/mssql.d.ts +74 -14
  34. package/dist/cjs/helpers/mssql.js +77 -18
  35. package/dist/cjs/helpers/mysql.d.ts +17 -13
  36. package/dist/cjs/helpers/mysql.js +20 -17
  37. package/dist/cjs/helpers/postgres.d.ts +11 -8
  38. package/dist/cjs/helpers/postgres.js +14 -12
  39. package/dist/cjs/helpers/sqlite.d.ts +41 -16
  40. package/dist/cjs/helpers/sqlite.js +44 -20
  41. package/dist/cjs/index.d.ts +28 -21
  42. package/dist/cjs/index.js +28 -21
  43. package/dist/cjs/kysely.d.ts +100 -42
  44. package/dist/cjs/kysely.js +63 -39
  45. package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
  46. package/dist/cjs/migration/file-migration-provider.js +2 -2
  47. package/dist/cjs/migration/migrator.d.ts +82 -14
  48. package/dist/cjs/migration/migrator.js +82 -14
  49. package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
  50. package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
  51. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/case-node.d.ts +1 -1
  53. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
  54. package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
  55. package/dist/cjs/operation-node/data-type-node.js +17 -3
  56. package/dist/cjs/operation-node/delete-query-node.d.ts +3 -0
  57. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -4
  58. package/dist/cjs/operation-node/having-node.d.ts +1 -1
  59. package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
  60. package/dist/cjs/operation-node/merge-query-node.d.ts +3 -0
  61. package/dist/cjs/operation-node/on-node.d.ts +1 -1
  62. package/dist/cjs/operation-node/operation-node-source.js +1 -2
  63. package/dist/cjs/operation-node/operation-node-transformer.d.ts +11 -3
  64. package/dist/cjs/operation-node/operation-node-transformer.js +26 -3
  65. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  66. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  67. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  68. package/dist/cjs/operation-node/operator-node.d.ts +3 -3
  69. package/dist/cjs/operation-node/operator-node.js +8 -6
  70. package/dist/cjs/operation-node/output-node.d.ts +13 -0
  71. package/dist/cjs/operation-node/output-node.js +26 -0
  72. package/dist/cjs/operation-node/query-node.d.ts +15 -6
  73. package/dist/cjs/operation-node/query-node.js +17 -0
  74. package/dist/cjs/operation-node/select-query-node.d.ts +1 -1
  75. package/dist/cjs/operation-node/select-query-node.js +6 -8
  76. package/dist/cjs/operation-node/update-query-node.d.ts +3 -0
  77. package/dist/cjs/operation-node/where-node.d.ts +1 -1
  78. package/dist/cjs/parser/binary-operation-parser.js +5 -6
  79. package/dist/cjs/parser/data-type-parser.js +1 -2
  80. package/dist/cjs/parser/default-value-parser.js +1 -2
  81. package/dist/cjs/parser/expression-parser.js +3 -4
  82. package/dist/cjs/parser/fetch-parser.js +1 -2
  83. package/dist/cjs/parser/group-by-parser.js +1 -2
  84. package/dist/cjs/parser/identifier-parser.js +1 -2
  85. package/dist/cjs/parser/insert-values-parser.js +1 -2
  86. package/dist/cjs/parser/join-parser.js +1 -2
  87. package/dist/cjs/parser/merge-parser.js +2 -3
  88. package/dist/cjs/parser/on-commit-action-parse.js +1 -2
  89. package/dist/cjs/parser/on-modify-action-parser.js +1 -2
  90. package/dist/cjs/parser/order-by-parser.js +3 -4
  91. package/dist/cjs/parser/parse-utils.js +4 -5
  92. package/dist/cjs/parser/partition-by-parser.js +1 -2
  93. package/dist/cjs/parser/reference-parser.js +8 -9
  94. package/dist/cjs/parser/returning-parser.d.ts +4 -3
  95. package/dist/cjs/parser/select-parser.js +2 -3
  96. package/dist/cjs/parser/set-operation-parser.js +1 -2
  97. package/dist/cjs/parser/table-parser.js +4 -5
  98. package/dist/cjs/parser/top-parser.js +1 -2
  99. package/dist/cjs/parser/unary-operation-parser.js +3 -4
  100. package/dist/cjs/parser/update-set-parser.js +2 -3
  101. package/dist/cjs/parser/value-parser.js +4 -5
  102. package/dist/cjs/parser/with-parser.js +1 -2
  103. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +54 -27
  104. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +26 -21
  105. package/dist/cjs/plugin/camel-case/camel-case.js +2 -3
  106. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  107. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  108. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  109. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  110. package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
  111. package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
  112. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
  113. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
  114. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  115. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
  116. package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
  117. package/dist/cjs/query-builder/delete-query-builder.d.ts +219 -43
  118. package/dist/cjs/query-builder/delete-query-builder.js +95 -31
  119. package/dist/cjs/query-builder/function-module.d.ts +40 -93
  120. package/dist/cjs/query-builder/function-module.js +1 -2
  121. package/dist/cjs/query-builder/insert-query-builder.d.ts +326 -67
  122. package/dist/cjs/query-builder/insert-query-builder.js +212 -61
  123. package/dist/cjs/query-builder/insert-result.d.ts +10 -5
  124. package/dist/cjs/query-builder/insert-result.js +10 -5
  125. package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
  126. package/dist/cjs/query-builder/json-path-builder.js +8 -5
  127. package/dist/cjs/query-builder/merge-query-builder.d.ts +312 -10
  128. package/dist/cjs/query-builder/merge-query-builder.js +98 -7
  129. package/dist/cjs/query-builder/no-result-error.js +2 -2
  130. package/dist/cjs/query-builder/on-conflict-builder.d.ts +53 -20
  131. package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
  132. package/dist/cjs/query-builder/output-interface.d.ts +138 -0
  133. package/dist/cjs/query-builder/output-interface.js +2 -0
  134. package/dist/cjs/query-builder/returning-interface.d.ts +7 -5
  135. package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
  136. package/dist/cjs/query-builder/select-query-builder.d.ts +370 -73
  137. package/dist/cjs/query-builder/select-query-builder.js +14 -9
  138. package/dist/cjs/query-builder/update-query-builder.d.ts +225 -31
  139. package/dist/cjs/query-builder/update-query-builder.js +96 -17
  140. package/dist/cjs/query-builder/update-result.d.ts +9 -0
  141. package/dist/cjs/query-builder/update-result.js +9 -0
  142. package/dist/cjs/query-builder/where-interface.d.ts +6 -2
  143. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  144. package/dist/cjs/query-compiler/default-query-compiler.js +45 -1
  145. package/dist/cjs/query-creator.d.ts +122 -21
  146. package/dist/cjs/query-creator.js +56 -3
  147. package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
  148. package/dist/cjs/raw-builder/raw-builder.js +1 -2
  149. package/dist/cjs/raw-builder/sql.d.ts +31 -12
  150. package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
  151. package/dist/cjs/schema/alter-column-builder.js +20 -3
  152. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +44 -10
  153. package/dist/cjs/schema/alter-table-add-index-builder.js +27 -10
  154. package/dist/cjs/schema/alter-table-builder.js +1 -2
  155. package/dist/cjs/schema/column-definition-builder.d.ts +286 -24
  156. package/dist/cjs/schema/column-definition-builder.js +288 -24
  157. package/dist/cjs/schema/create-table-builder.d.ts +86 -33
  158. package/dist/cjs/schema/create-table-builder.js +86 -33
  159. package/dist/cjs/util/assert.js +2 -3
  160. package/dist/cjs/util/column-type.d.ts +5 -9
  161. package/dist/cjs/util/compilable.js +1 -2
  162. package/dist/cjs/util/json-object-args.js +1 -2
  163. package/dist/cjs/util/log-once.js +1 -2
  164. package/dist/cjs/util/object-utils.js +38 -26
  165. package/dist/cjs/util/performance-now.js +1 -2
  166. package/dist/cjs/util/prevent-await.js +1 -2
  167. package/dist/cjs/util/query-id.js +1 -2
  168. package/dist/cjs/util/random-string.js +1 -2
  169. package/dist/cjs/util/require-all-props.d.ts +4 -2
  170. package/dist/cjs/util/require-all-props.js +5 -4
  171. package/dist/cjs/util/stack-trace-utils.js +1 -2
  172. package/dist/cjs/util/streamable.d.ts +1 -1
  173. package/dist/cjs/util/type-utils.d.ts +4 -2
  174. package/dist/esm/dialect/dialect-adapter-base.d.ts +13 -3
  175. package/dist/esm/dialect/dialect-adapter-base.js +4 -1
  176. package/dist/esm/dialect/dialect-adapter.d.ts +16 -2
  177. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +12 -7
  178. package/dist/esm/dialect/mssql/mssql-adapter.js +2 -4
  179. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +83 -55
  180. package/dist/esm/dialect/mssql/mssql-driver.d.ts +1 -0
  181. package/dist/esm/dialect/mssql/mssql-driver.js +114 -48
  182. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
  183. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  184. package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
  185. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
  186. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  187. package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
  188. package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
  189. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  190. package/dist/esm/driver/database-connection.d.ts +3 -1
  191. package/dist/esm/driver/dummy-driver.d.ts +13 -12
  192. package/dist/esm/driver/dummy-driver.js +13 -12
  193. package/dist/esm/dynamic/dynamic.d.ts +7 -7
  194. package/dist/esm/dynamic/dynamic.js +7 -7
  195. package/dist/esm/expression/expression-builder.d.ts +153 -62
  196. package/dist/esm/expression/expression-wrapper.d.ts +92 -23
  197. package/dist/esm/expression/expression.d.ts +40 -5
  198. package/dist/esm/helpers/mssql.d.ts +74 -14
  199. package/dist/esm/helpers/mssql.js +74 -14
  200. package/dist/esm/helpers/mysql.d.ts +17 -13
  201. package/dist/esm/helpers/mysql.js +17 -13
  202. package/dist/esm/helpers/postgres.d.ts +11 -8
  203. package/dist/esm/helpers/postgres.js +11 -8
  204. package/dist/esm/helpers/sqlite.d.ts +41 -16
  205. package/dist/esm/helpers/sqlite.js +41 -16
  206. package/dist/esm/index.d.ts +28 -21
  207. package/dist/esm/index.js +28 -21
  208. package/dist/esm/kysely.d.ts +100 -42
  209. package/dist/esm/kysely.js +61 -37
  210. package/dist/esm/migration/file-migration-provider.d.ts +2 -2
  211. package/dist/esm/migration/file-migration-provider.js +2 -2
  212. package/dist/esm/migration/migrator.d.ts +82 -14
  213. package/dist/esm/migration/migrator.js +82 -14
  214. package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
  215. package/dist/esm/operation-node/aggregate-function-node.js +9 -0
  216. package/dist/esm/operation-node/alter-column-node.d.ts +1 -1
  217. package/dist/esm/operation-node/case-node.d.ts +1 -1
  218. package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
  219. package/dist/esm/operation-node/data-type-node.d.ts +2 -2
  220. package/dist/esm/operation-node/data-type-node.js +15 -1
  221. package/dist/esm/operation-node/delete-query-node.d.ts +3 -0
  222. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -4
  223. package/dist/esm/operation-node/having-node.d.ts +1 -1
  224. package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
  225. package/dist/esm/operation-node/merge-query-node.d.ts +3 -0
  226. package/dist/esm/operation-node/on-node.d.ts +1 -1
  227. package/dist/esm/operation-node/operation-node-transformer.d.ts +11 -3
  228. package/dist/esm/operation-node/operation-node-transformer.js +26 -3
  229. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  230. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  231. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  232. package/dist/esm/operation-node/operator-node.d.ts +3 -3
  233. package/dist/esm/operation-node/operator-node.js +2 -0
  234. package/dist/esm/operation-node/output-node.d.ts +13 -0
  235. package/dist/esm/operation-node/output-node.js +24 -0
  236. package/dist/esm/operation-node/query-node.d.ts +15 -6
  237. package/dist/esm/operation-node/query-node.js +17 -0
  238. package/dist/esm/operation-node/select-query-node.d.ts +1 -1
  239. package/dist/esm/operation-node/select-query-node.js +6 -8
  240. package/dist/esm/operation-node/update-query-node.d.ts +3 -0
  241. package/dist/esm/operation-node/where-node.d.ts +1 -1
  242. package/dist/esm/parser/returning-parser.d.ts +4 -3
  243. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +54 -27
  244. package/dist/esm/plugin/camel-case/camel-case-plugin.js +26 -21
  245. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  246. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  247. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  248. package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  249. package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
  250. package/dist/esm/plugin/noop-plugin.d.ts +28 -6
  251. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
  252. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
  253. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  254. package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
  255. package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
  256. package/dist/esm/query-builder/delete-query-builder.d.ts +219 -43
  257. package/dist/esm/query-builder/delete-query-builder.js +95 -31
  258. package/dist/esm/query-builder/function-module.d.ts +40 -93
  259. package/dist/esm/query-builder/insert-query-builder.d.ts +326 -67
  260. package/dist/esm/query-builder/insert-query-builder.js +212 -61
  261. package/dist/esm/query-builder/insert-result.d.ts +10 -5
  262. package/dist/esm/query-builder/insert-result.js +10 -5
  263. package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
  264. package/dist/esm/query-builder/json-path-builder.js +8 -5
  265. package/dist/esm/query-builder/merge-query-builder.d.ts +312 -10
  266. package/dist/esm/query-builder/merge-query-builder.js +98 -7
  267. package/dist/esm/query-builder/on-conflict-builder.d.ts +53 -20
  268. package/dist/esm/query-builder/on-conflict-builder.js +41 -16
  269. package/dist/esm/query-builder/output-interface.d.ts +138 -0
  270. package/dist/esm/query-builder/output-interface.js +2 -0
  271. package/dist/esm/query-builder/returning-interface.d.ts +7 -5
  272. package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
  273. package/dist/esm/query-builder/select-query-builder.d.ts +370 -73
  274. package/dist/esm/query-builder/select-query-builder.js +13 -7
  275. package/dist/esm/query-builder/update-query-builder.d.ts +225 -31
  276. package/dist/esm/query-builder/update-query-builder.js +96 -17
  277. package/dist/esm/query-builder/update-result.d.ts +9 -0
  278. package/dist/esm/query-builder/update-result.js +9 -0
  279. package/dist/esm/query-builder/where-interface.d.ts +6 -2
  280. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  281. package/dist/esm/query-compiler/default-query-compiler.js +45 -1
  282. package/dist/esm/query-creator.d.ts +122 -21
  283. package/dist/esm/query-creator.js +56 -3
  284. package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
  285. package/dist/esm/raw-builder/sql.d.ts +31 -12
  286. package/dist/esm/schema/alter-column-builder.d.ts +17 -3
  287. package/dist/esm/schema/alter-column-builder.js +20 -3
  288. package/dist/esm/schema/alter-table-add-index-builder.d.ts +44 -10
  289. package/dist/esm/schema/alter-table-add-index-builder.js +27 -10
  290. package/dist/esm/schema/alter-table-builder.js +1 -2
  291. package/dist/esm/schema/column-definition-builder.d.ts +286 -24
  292. package/dist/esm/schema/column-definition-builder.js +288 -24
  293. package/dist/esm/schema/create-table-builder.d.ts +86 -33
  294. package/dist/esm/schema/create-table-builder.js +86 -33
  295. package/dist/esm/util/column-type.d.ts +5 -9
  296. package/dist/esm/util/object-utils.js +18 -5
  297. package/dist/esm/util/require-all-props.d.ts +4 -2
  298. package/dist/esm/util/require-all-props.js +4 -2
  299. package/dist/esm/util/streamable.d.ts +1 -1
  300. package/dist/esm/util/type-utils.d.ts +4 -2
  301. package/package.json +30 -24
@@ -28,9 +28,10 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
28
28
  * A simple comparison:
29
29
  *
30
30
  * ```ts
31
- * eb.selectFrom('person')
31
+ * const result = await db.selectFrom('person')
32
32
  * .selectAll()
33
33
  * .where((eb) => eb('first_name', '=', 'Jennifer'))
34
+ * .execute()
34
35
  * ```
35
36
  *
36
37
  * The generated SQL (PostgreSQL):
@@ -45,9 +46,10 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
45
46
  * a column reference, you can use {@link ref}:
46
47
  *
47
48
  * ```ts
48
- * eb.selectFrom('person')
49
+ * const result = await db.selectFrom('person')
49
50
  * .selectAll()
50
51
  * .where((eb) => eb('first_name', '=', eb.ref('last_name')))
52
+ * .execute()
51
53
  * ```
52
54
  *
53
55
  * The generated SQL (PostgreSQL):
@@ -61,11 +63,12 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
61
63
  * In the following example `eb` is used to increment an integer column:
62
64
  *
63
65
  * ```ts
64
- * db.updateTable('person')
66
+ * await db.updateTable('person')
65
67
  * .set((eb) => ({
66
68
  * age: eb('age', '+', 1)
67
69
  * }))
68
- * .where('id', '=', id)
70
+ * .where('id', '=', 3)
71
+ * .execute()
69
72
  * ```
70
73
  *
71
74
  * The generated SQL (PostgreSQL):
@@ -80,15 +83,28 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
80
83
  * can be any expression:
81
84
  *
82
85
  * ```ts
83
- * eb.selectFrom('person')
86
+ * const result = await db.selectFrom('person')
84
87
  * .selectAll()
85
88
  * .where((eb) => eb(
86
- * eb.fn('lower', ['first_name']),
89
+ * eb.fn<string>('lower', ['first_name']),
87
90
  * 'in',
88
91
  * eb.selectFrom('pet')
89
92
  * .select('pet.name')
90
93
  * .where('pet.species', '=', 'cat')
91
94
  * ))
95
+ * .execute()
96
+ * ```
97
+ *
98
+ * The generated SQL (PostgreSQL):
99
+ *
100
+ * ```sql
101
+ * select *
102
+ * from "person"
103
+ * where lower("first_name") in (
104
+ * select "pet"."name"
105
+ * from "pet"
106
+ * where "pet"."species" = $1
107
+ * )
92
108
  * ```
93
109
  */
94
110
  <RE extends ReferenceExpression<DB, TB>, OP extends BinaryOperatorExpression, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: OP, rhs: VE): ExpressionWrapper<DB, TB, OP extends ComparisonOperator ? SqlBool : ExtractTypeFromReferenceExpression<DB, TB, RE>>;
@@ -98,13 +114,14 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
98
114
  * ### Examples
99
115
  *
100
116
  * ```ts
101
- * db.selectFrom('person')
117
+ * const result = await db.selectFrom('person')
102
118
  * .where(({ eb, exists, selectFrom }) =>
103
119
  * eb('first_name', '=', 'Jennifer').and(
104
120
  * exists(selectFrom('pet').whereRef('owner_id', '=', 'person.id').select('pet.id'))
105
121
  * )
106
122
  * )
107
123
  * .selectAll()
124
+ * .execute()
108
125
  * ```
109
126
  *
110
127
  * The generated SQL (PostgreSQL):
@@ -126,7 +143,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
126
143
  * table of the database even if it doesn't produce valid SQL.
127
144
  *
128
145
  * ```ts
129
- * await db.selectFrom('person')
146
+ * const result = await db.selectFrom('person')
130
147
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
131
148
  * .select((eb) => [
132
149
  * 'person.id',
@@ -173,7 +190,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
173
190
  * ])
174
191
  * .execute()
175
192
  *
176
- * console.log(result[0].owner_name)
193
+ * console.log(result[0]?.owner_name)
177
194
  * ```
178
195
  *
179
196
  * The generated SQL (PostgreSQL):
@@ -205,11 +222,9 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
205
222
  * Kitchen sink example with 2 flavors of `case` operator:
206
223
  *
207
224
  * ```ts
208
- * import { sql } from 'kysely'
209
- *
210
225
  * const { title, name } = await db
211
226
  * .selectFrom('person')
212
- * .where('id', '=', '123')
227
+ * .where('id', '=', 123)
213
228
  * .select((eb) => [
214
229
  * eb.fn.coalesce('last_name', 'first_name').as('name'),
215
230
  * eb
@@ -219,7 +234,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
219
234
  * .when('gender', '=', 'female')
220
235
  * .then(
221
236
  * eb
222
- * .case('maritalStatus')
237
+ * .case('marital_status')
223
238
  * .when('single')
224
239
  * .then('Ms.')
225
240
  * .else('Mrs.')
@@ -239,7 +254,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
239
254
  * case
240
255
  * when "gender" = $1 then $2
241
256
  * when "gender" = $3 then
242
- * case "maritalStatus"
257
+ * case "marital_status"
243
258
  * when $4 then $5
244
259
  * else $6
245
260
  * end
@@ -265,72 +280,112 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
265
280
  * This function can be used to pass in a column reference instead:
266
281
  *
267
282
  * ```ts
268
- * db.selectFrom('person')
283
+ * const result = await db.selectFrom('person')
269
284
  * .selectAll('person')
270
285
  * .where((eb) => eb.or([
271
286
  * eb('first_name', '=', eb.ref('last_name')),
272
287
  * eb('first_name', '=', eb.ref('middle_name'))
273
288
  * ]))
289
+ * .execute()
290
+ * ```
291
+ *
292
+ * The generated SQL (PostgreSQL):
293
+ *
294
+ * ```sql
295
+ * select "person".*
296
+ * from "person"
297
+ * where "first_name" = "last_name" or "first_name" = "middle_name"
274
298
  * ```
275
299
  *
276
300
  * In the next example we use the `ref` method to reference columns of the virtual
277
301
  * table `excluded` in a type-safe way to create an upsert operation:
278
302
  *
279
303
  * ```ts
280
- * db.insertInto('person')
281
- * .values(person)
304
+ * await db.insertInto('person')
305
+ * .values({
306
+ * id: 3,
307
+ * first_name: 'Jennifer',
308
+ * last_name: 'Aniston',
309
+ * gender: 'female',
310
+ * })
282
311
  * .onConflict((oc) => oc
283
312
  * .column('id')
284
313
  * .doUpdateSet(({ ref }) => ({
285
314
  * first_name: ref('excluded.first_name'),
286
- * last_name: ref('excluded.last_name')
315
+ * last_name: ref('excluded.last_name'),
316
+ * gender: ref('excluded.gender'),
287
317
  * }))
288
318
  * )
319
+ * .execute()
320
+ * ```
321
+ *
322
+ * The generated SQL (PostgreSQL):
323
+ *
324
+ * ```sql
325
+ * insert into "person" ("id", "first_name", "last_name", "gender")
326
+ * values ($1, $2, $3, $4)
327
+ * on conflict ("id") do update set
328
+ * "first_name" = "excluded"."first_name",
329
+ * "last_name" = "excluded"."last_name",
330
+ * "gender" = "excluded"."gender"
289
331
  * ```
290
332
  *
291
333
  * In the next example we use `ref` in a raw sql expression. Unless you want
292
334
  * to be as type-safe as possible, this is probably overkill:
293
335
  *
294
336
  * ```ts
295
- * db.update('pet').set((eb) => ({
296
- * name: sql`concat(${eb.ref('pet.name')}, ${suffix})`
297
- * }))
337
+ * import { sql } from 'kysely'
338
+ *
339
+ * await db.updateTable('pet')
340
+ * .set((eb) => ({
341
+ * name: sql<string>`concat(${eb.ref('pet.name')}, ${' the animal'})`
342
+ * }))
343
+ * .execute()
344
+ * ```
345
+ *
346
+ * The generated SQL (PostgreSQL):
347
+ *
348
+ * ```sql
349
+ * update "pet" set "name" = concat("pet"."name", $1)
298
350
  * ```
299
351
  *
300
352
  * In the next example we use `ref` to reference a nested JSON property:
301
353
  *
302
354
  * ```ts
303
- * db.selectFrom('person')
355
+ * const result = await db.selectFrom('person')
304
356
  * .where(({ eb, ref }) => eb(
305
- * ref('address', '->').key('state').key('abbr'),
357
+ * ref('profile', '->').key('addresses').at(0).key('city'),
306
358
  * '=',
307
- * 'CA'
359
+ * 'San Diego'
308
360
  * ))
309
361
  * .selectAll()
362
+ * .execute()
310
363
  * ```
311
364
  *
312
365
  * The generated SQL (PostgreSQL):
313
366
  *
314
367
  * ```sql
315
- * select * from "person" where "address"->'state'->'abbr' = $1
368
+ * select * from "person" where "profile"->'addresses'->0->'city' = $1
316
369
  * ```
317
370
  *
318
371
  * You can also compile to a JSON path expression by using the `->$`or `->>$` operator:
319
372
  *
320
373
  * ```ts
321
- * db.selectFrom('person')
374
+ * const result = await db.selectFrom('person')
322
375
  * .select(({ ref }) =>
323
- * ref('experience', '->$')
376
+ * ref('profile', '->$')
377
+ * .key('addresses')
324
378
  * .at('last')
325
- * .key('title')
326
- * .as('current_job')
379
+ * .key('city')
380
+ * .as('current_city')
327
381
  * )
382
+ * .execute()
328
383
  * ```
329
384
  *
330
385
  * The generated SQL (MySQL):
331
386
  *
332
387
  * ```sql
333
- * select `experience`->'$[last].title' as `current_job` from `person`
388
+ * select `profile`->'$.addresses[last].city' as `current_city` from `person`
334
389
  * ```
335
390
  */
336
391
  ref<RE extends StringReference<DB, TB>>(reference: RE): ExpressionWrapper<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
@@ -343,13 +398,13 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
343
398
  * ### Examples
344
399
  *
345
400
  * ```ts
346
- * db.updateTable('person')
347
- * .set('experience', (eb) => eb.fn('json_set', [
348
- * 'experience',
349
- * eb.jsonPath<'experience'>().at('last').key('title'),
350
- * eb.val('CEO')
401
+ * await db.updateTable('person')
402
+ * .set('profile', (eb) => eb.fn('json_set', [
403
+ * 'profile',
404
+ * eb.jsonPath<'profile'>().key('addresses').at('last').key('city'),
405
+ * eb.val('San Diego')
351
406
  * ]))
352
- * .where('id', '=', id)
407
+ * .where('id', '=', 3)
353
408
  * .execute()
354
409
  * ```
355
410
  *
@@ -357,16 +412,21 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
357
412
  *
358
413
  * ```sql
359
414
  * update `person`
360
- * set `experience` = json_set(`experience`, '$[last].title', ?)
361
- * where `id` = ?
415
+ * set `profile` = json_set(`profile`, '$.addresses[last].city', $1)
416
+ * where `id` = $2
362
417
  * ```
363
418
  */
364
419
  jsonPath<$ extends StringReference<DB, TB> = never>(): IsNever<$> extends true ? KyselyTypeError<"You must provide a column reference as this method's $ generic"> : JSONPathBuilder<ExtractTypeFromReferenceExpression<DB, TB, $>>;
365
420
  /**
366
421
  * Creates a table reference.
367
422
  *
423
+ * ### Examples
424
+ *
368
425
  * ```ts
369
- * db.selectFrom('person')
426
+ * import { sql } from 'kysely'
427
+ * import type { Pet } from 'type-editor' // imaginary module
428
+ *
429
+ * const result = await db.selectFrom('person')
370
430
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
371
431
  * .select(eb => [
372
432
  * 'person.id',
@@ -399,13 +459,30 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
399
459
  * be used to pass in a value instead:
400
460
  *
401
461
  * ```ts
402
- * eb(val(38), '=', ref('age'))
462
+ * const result = await db.selectFrom('person')
463
+ * .selectAll()
464
+ * .where((eb) => eb(
465
+ * eb.val('cat'),
466
+ * '=',
467
+ * eb.fn.any(
468
+ * eb.selectFrom('pet')
469
+ * .select('species')
470
+ * .whereRef('owner_id', '=', 'person.id')
471
+ * )
472
+ * ))
473
+ * .execute()
403
474
  * ```
404
475
  *
405
476
  * The generated SQL (PostgreSQL):
406
477
  *
407
478
  * ```sql
408
- * $1 = "age"
479
+ * select *
480
+ * from "person"
481
+ * where $1 = any(
482
+ * select "species"
483
+ * from "pet"
484
+ * where "owner_id" = "person"."id"
485
+ * )
409
486
  * ```
410
487
  */
411
488
  val<VE>(value: VE): ExpressionWrapper<DB, TB, ExtractTypeFromValueExpression<VE>>;
@@ -418,7 +495,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
418
495
  * ### Examples
419
496
  *
420
497
  * ```ts
421
- * db.selectFrom('person')
498
+ * const result = await db.selectFrom('person')
422
499
  * .selectAll('person')
423
500
  * .where(({ eb, refTuple, tuple }) => eb(
424
501
  * refTuple('first_name', 'last_name'),
@@ -428,6 +505,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
428
505
  * tuple('Sylvester', 'Stallone')
429
506
  * ]
430
507
  * ))
508
+ * .execute()
431
509
  * ```
432
510
  *
433
511
  * The generated SQL (PostgreSQL):
@@ -451,7 +529,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
451
529
  * function:
452
530
  *
453
531
  * ```ts
454
- * db.selectFrom('person')
532
+ * const result = await db.selectFrom('person')
455
533
  * .selectAll('person')
456
534
  * .where(({ eb, refTuple, selectFrom }) => eb(
457
535
  * refTuple('first_name', 'last_name'),
@@ -461,6 +539,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
461
539
  * .where('species', '!=', 'cat')
462
540
  * .$asTuple('name', 'species')
463
541
  * ))
542
+ * .execute()
464
543
  * ```
465
544
  *
466
545
  * The generated SQL (PostgreSQL):
@@ -493,7 +572,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
493
572
  * ### Examples
494
573
  *
495
574
  * ```ts
496
- * db.selectFrom('person')
575
+ * const result = await db.selectFrom('person')
497
576
  * .selectAll('person')
498
577
  * .where(({ eb, refTuple, tuple }) => eb(
499
578
  * refTuple('first_name', 'last_name'),
@@ -503,6 +582,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
503
582
  * tuple('Sylvester', 'Stallone')
504
583
  * ]
505
584
  * ))
585
+ * .execute()
506
586
  * ```
507
587
  *
508
588
  * The generated SQL (PostgreSQL):
@@ -535,8 +615,9 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
535
615
  * ### Examples
536
616
  *
537
617
  * ```ts
538
- * db.selectFrom('person')
618
+ * const result = await db.selectFrom('person')
539
619
  * .select((eb) => eb.lit(1).as('one'))
620
+ * .execute()
540
621
  * ```
541
622
  *
542
623
  * The generated SQL (PostgreSQL):
@@ -557,11 +638,12 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
557
638
  * ### Examples
558
639
  *
559
640
  * ```ts
560
- * db.selectFrom('person')
641
+ * const result = await db.selectFrom('person')
561
642
  * .select((eb) => [
562
643
  * 'first_name',
563
644
  * eb.unary('-', 'age').as('negative_age')
564
645
  * ])
646
+ * .execute()
565
647
  * ```
566
648
  *
567
649
  * The generated SQL (PostgreSQL):
@@ -602,9 +684,10 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
602
684
  * ### Examples
603
685
  *
604
686
  * ```ts
605
- * db.selectFrom('person')
687
+ * const result = await db.selectFrom('person')
606
688
  * .selectAll()
607
689
  * .where((eb) => eb.between('age', 40, 60))
690
+ * .execute()
608
691
  * ```
609
692
  *
610
693
  * The generated SQL (PostgreSQL):
@@ -620,9 +703,10 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
620
703
  * ### Examples
621
704
  *
622
705
  * ```ts
623
- * db.selectFrom('person')
706
+ * const result = await db.selectFrom('person')
624
707
  * .selectAll()
625
708
  * .where((eb) => eb.betweenSymmetric('age', 40, 60))
709
+ * .execute()
626
710
  * ```
627
711
  *
628
712
  * The generated SQL (PostgreSQL):
@@ -646,13 +730,14 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
646
730
  * statement:
647
731
  *
648
732
  * ```ts
649
- * db.selectFrom('person')
733
+ * const result = await db.selectFrom('person')
650
734
  * .selectAll('person')
651
735
  * .where((eb) => eb.and([
652
736
  * eb('first_name', '=', 'Jennifer'),
653
- * eb('fist_name', '=', 'Arnold'),
654
- * eb('fist_name', '=', 'Sylvester')
737
+ * eb('first_name', '=', 'Arnold'),
738
+ * eb('first_name', '=', 'Sylvester')
655
739
  * ]))
740
+ * .execute()
656
741
  * ```
657
742
  *
658
743
  * The generated SQL (PostgreSQL):
@@ -671,12 +756,13 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
671
756
  * equality comparisons:
672
757
  *
673
758
  * ```ts
674
- * db.selectFrom('person')
759
+ * const result = await db.selectFrom('person')
675
760
  * .selectAll('person')
676
761
  * .where((eb) => eb.and({
677
762
  * first_name: 'Jennifer',
678
763
  * last_name: 'Aniston'
679
764
  * }))
765
+ * .execute()
680
766
  * ```
681
767
  *
682
768
  * The generated SQL (PostgreSQL):
@@ -706,13 +792,14 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
706
792
  * statement:
707
793
  *
708
794
  * ```ts
709
- * db.selectFrom('person')
795
+ * const result = await db.selectFrom('person')
710
796
  * .selectAll('person')
711
797
  * .where((eb) => eb.or([
712
798
  * eb('first_name', '=', 'Jennifer'),
713
- * eb('fist_name', '=', 'Arnold'),
714
- * eb('fist_name', '=', 'Sylvester')
799
+ * eb('first_name', '=', 'Arnold'),
800
+ * eb('first_name', '=', 'Sylvester')
715
801
  * ]))
802
+ * .execute()
716
803
  * ```
717
804
  *
718
805
  * The generated SQL (PostgreSQL):
@@ -731,12 +818,13 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
731
818
  * equality comparisons:
732
819
  *
733
820
  * ```ts
734
- * db.selectFrom('person')
821
+ * const result = await db.selectFrom('person')
735
822
  * .selectAll('person')
736
823
  * .where((eb) => eb.or({
737
824
  * first_name: 'Jennifer',
738
825
  * last_name: 'Aniston'
739
826
  * }))
827
+ * .execute()
740
828
  * ```
741
829
  *
742
830
  * The generated SQL (PostgreSQL):
@@ -758,9 +846,10 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
758
846
  * ### Examples
759
847
  *
760
848
  * ```ts
761
- * db.selectFrom('person')
849
+ * const result = await db.selectFrom('person')
762
850
  * .selectAll('person')
763
- * .where((eb) => eb(eb.parens('age', '+', 1), '/', 100), '<', 0.1))
851
+ * .where((eb) => eb(eb.parens('age', '+', 1), '/', 100), '<', 0.1)
852
+ * .execute()
764
853
  * ```
765
854
  *
766
855
  * The generated SQL (PostgreSQL):
@@ -774,13 +863,14 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
774
863
  * You can also pass in any expression as the only argument:
775
864
  *
776
865
  * ```ts
777
- * db.selectFrom('person')
866
+ * const result = await db.selectFrom('person')
778
867
  * .selectAll('person')
779
868
  * .where((eb) => eb.parens(
780
- * eb('age', '=', 1).or('age', '=', 2))
869
+ * eb('age', '=', 1).or('age', '=', 2)
781
870
  * ).and(
782
871
  * eb('first_name', '=', 'Jennifer').or('first_name', '=', 'Arnold')
783
872
  * ))
873
+ * .execute()
784
874
  * ```
785
875
  *
786
876
  * The generated SQL (PostgreSQL):
@@ -796,18 +886,19 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
796
886
  /**
797
887
  * Creates a `cast(expr as dataType)` expression.
798
888
  *
799
- * Since Kysely can't know the mapping between javascript and database types,
889
+ * Since Kysely can't know the mapping between JavaScript and database types,
800
890
  * you need to provide both explicitly.
801
891
  *
802
892
  * ### Examples
803
893
  *
804
894
  * ```ts
805
- * db.selectFrom('person')
895
+ * const result = await db.selectFrom('person')
806
896
  * .select((eb) => [
807
897
  * 'id',
808
898
  * 'first_name',
809
899
  * eb.cast<number>('age', 'integer').as('age')
810
900
  * ])
901
+ * .execute()
811
902
  * ```
812
903
  *
813
904
  * The generated SQL (PostgreSQL):