kysely 0.11.4 → 0.13.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 (262) hide show
  1. package/README.md +35 -11
  2. package/dist/cjs/dialect/dialect-adapter-base.d.ts +36 -0
  3. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +38 -2
  4. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -1
  5. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +16 -0
  6. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +29 -0
  7. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +3 -0
  8. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +38 -2
  9. package/dist/cjs/dialect/postgres/postgres-adapter.js +2 -1
  10. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +16 -0
  11. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +29 -0
  12. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +3 -0
  13. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +38 -2
  14. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +16 -0
  15. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +29 -0
  16. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +3 -0
  17. package/dist/cjs/driver/default-connection-provider.d.ts +4 -0
  18. package/dist/cjs/driver/runtime-driver.d.ts +29 -0
  19. package/dist/cjs/driver/single-connection-provider.d.ts +4 -0
  20. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +1 -0
  21. package/dist/cjs/dynamic/dynamic-reference-builder.js +9 -1
  22. package/dist/cjs/dynamic/dynamic.d.ts +6 -7
  23. package/dist/cjs/dynamic/dynamic.js +6 -7
  24. package/dist/cjs/index.d.ts +15 -4
  25. package/dist/cjs/index.js +12 -1
  26. package/dist/cjs/kysely.d.ts +170 -11
  27. package/dist/cjs/kysely.js +69 -9
  28. package/dist/cjs/migration/migration.d.ts +156 -13
  29. package/dist/cjs/migration/migration.js +256 -135
  30. package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
  31. package/dist/cjs/operation-node/column-definition-node.js +0 -4
  32. package/dist/cjs/operation-node/common-table-expression-name-node.d.ts +15 -0
  33. package/dist/cjs/operation-node/common-table-expression-name-node.js +23 -0
  34. package/dist/cjs/operation-node/common-table-expression-node.d.ts +3 -3
  35. package/dist/cjs/operation-node/create-table-node.d.ts +6 -2
  36. package/dist/cjs/operation-node/create-table-node.js +6 -6
  37. package/dist/cjs/operation-node/create-view-node.d.ts +1 -0
  38. package/dist/cjs/operation-node/insert-query-node.d.ts +4 -4
  39. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -0
  40. package/dist/cjs/operation-node/operation-node-transformer.js +22 -2
  41. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -0
  42. package/dist/cjs/operation-node/operation-node-visitor.js +2 -0
  43. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  44. package/dist/cjs/operation-node/query-node.d.ts +0 -2
  45. package/dist/cjs/operation-node/query-node.js +0 -10
  46. package/dist/cjs/operation-node/values-node.d.ts +15 -0
  47. package/dist/cjs/operation-node/values-node.js +18 -0
  48. package/dist/cjs/operation-node/with-node.d.ts +3 -1
  49. package/dist/cjs/operation-node/with-node.js +2 -1
  50. package/dist/cjs/package.json +1 -3
  51. package/dist/cjs/parser/complex-expression-parser.d.ts +9 -0
  52. package/dist/cjs/parser/complex-expression-parser.js +25 -0
  53. package/dist/cjs/parser/filter-parser.d.ts +13 -4
  54. package/dist/cjs/parser/filter-parser.js +21 -24
  55. package/dist/cjs/parser/insert-values-parser.d.ts +5 -9
  56. package/dist/cjs/parser/insert-values-parser.js +27 -41
  57. package/dist/cjs/parser/order-by-parser.d.ts +1 -1
  58. package/dist/cjs/parser/parse-context.d.ts +22 -8
  59. package/dist/cjs/parser/parse-context.js +10 -10
  60. package/dist/cjs/parser/reference-parser.d.ts +8 -7
  61. package/dist/cjs/parser/reference-parser.js +8 -17
  62. package/dist/cjs/parser/returning-parser.d.ts +1 -5
  63. package/dist/cjs/parser/select-parser.d.ts +12 -14
  64. package/dist/cjs/parser/select-parser.js +5 -9
  65. package/dist/cjs/parser/table-parser.d.ts +9 -11
  66. package/dist/cjs/parser/table-parser.js +2 -8
  67. package/dist/cjs/parser/union-parser.d.ts +2 -2
  68. package/dist/cjs/parser/union-parser.js +1 -6
  69. package/dist/cjs/parser/update-set-parser.d.ts +2 -8
  70. package/dist/cjs/parser/update-set-parser.js +6 -26
  71. package/dist/cjs/parser/value-parser.d.ts +9 -6
  72. package/dist/cjs/parser/value-parser.js +7 -30
  73. package/dist/cjs/parser/with-parser.d.ts +36 -6
  74. package/dist/cjs/parser/with-parser.js +13 -2
  75. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +36 -2
  76. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  77. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  78. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  79. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +8 -0
  80. package/dist/cjs/query-builder/delete-query-builder.d.ts +647 -0
  81. package/dist/cjs/query-builder/delete-query-builder.js +185 -0
  82. package/dist/cjs/query-builder/expression-builder.d.ts +8 -6
  83. package/dist/cjs/query-builder/expression-builder.js +3 -3
  84. package/dist/cjs/query-builder/function-builder.d.ts +2 -1
  85. package/dist/cjs/query-builder/function-builder.js +2 -1
  86. package/dist/cjs/query-builder/having-interface.d.ts +49 -0
  87. package/dist/cjs/query-builder/having-interface.js +2 -0
  88. package/dist/cjs/query-builder/insert-query-builder.d.ts +504 -0
  89. package/dist/cjs/query-builder/insert-query-builder.js +256 -0
  90. package/dist/cjs/query-builder/insert-result.d.ts +3 -2
  91. package/dist/cjs/query-builder/insert-result.js +3 -2
  92. package/dist/cjs/query-builder/join-builder.d.ts +19 -20
  93. package/dist/cjs/query-builder/join-builder.js +12 -12
  94. package/dist/cjs/query-builder/join-interface.d.ts +130 -0
  95. package/dist/cjs/query-builder/join-interface.js +2 -0
  96. package/dist/cjs/query-builder/no-result-error.d.ts +9 -0
  97. package/dist/cjs/query-builder/no-result-error.js +14 -0
  98. package/dist/cjs/query-builder/returning-interface.d.ts +73 -0
  99. package/dist/cjs/query-builder/returning-interface.js +2 -0
  100. package/dist/cjs/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -651
  101. package/dist/cjs/query-builder/select-query-builder.js +571 -0
  102. package/dist/cjs/query-builder/update-query-builder.d.ts +735 -0
  103. package/dist/cjs/query-builder/update-query-builder.js +279 -0
  104. package/dist/cjs/query-builder/where-interface.d.ts +378 -0
  105. package/dist/cjs/query-builder/where-interface.js +2 -0
  106. package/dist/cjs/query-compiler/default-query-compiler.d.ts +4 -0
  107. package/dist/cjs/query-compiler/default-query-compiler.js +37 -6
  108. package/dist/cjs/query-creator.d.ts +69 -43
  109. package/dist/cjs/query-creator.js +66 -29
  110. package/dist/cjs/query-executor/default-query-executor.d.ts +19 -0
  111. package/dist/cjs/query-executor/noop-query-executor.d.ts +19 -0
  112. package/dist/cjs/query-executor/query-executor.d.ts +1 -1
  113. package/dist/cjs/query-executor/query-executor.js +1 -1
  114. package/dist/cjs/raw-builder/raw-builder.d.ts +2 -0
  115. package/dist/cjs/raw-builder/raw-builder.js +7 -1
  116. package/dist/cjs/schema/alter-table-builder.d.ts +230 -2
  117. package/dist/cjs/schema/alter-table-builder.js +12 -0
  118. package/dist/cjs/schema/column-definition-builder.d.ts +147 -20
  119. package/dist/cjs/schema/column-definition-builder.js +4 -1
  120. package/dist/cjs/schema/create-index-builder.d.ts +2 -1
  121. package/dist/cjs/schema/create-index-builder.js +2 -1
  122. package/dist/cjs/schema/create-table-builder.d.ts +26 -9
  123. package/dist/cjs/schema/create-table-builder.js +42 -9
  124. package/dist/cjs/schema/create-view-builder.d.ts +17 -3
  125. package/dist/cjs/schema/create-view-builder.js +25 -16
  126. package/dist/cjs/schema/schema.d.ts +18 -11
  127. package/dist/cjs/schema/schema.js +18 -11
  128. package/dist/cjs/util/log.d.ts +3 -2
  129. package/dist/cjs/util/log.js +8 -15
  130. package/dist/cjs/util/type-utils.d.ts +7 -7
  131. package/dist/esm/dialect/dialect-adapter-base.d.ts +36 -0
  132. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +38 -2
  133. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -1
  134. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +16 -0
  135. package/dist/esm/dialect/mysql/mysql-driver.d.ts +29 -0
  136. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +3 -0
  137. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +38 -2
  138. package/dist/esm/dialect/postgres/postgres-adapter.js +2 -1
  139. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +16 -0
  140. package/dist/esm/dialect/postgres/postgres-driver.d.ts +29 -0
  141. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +3 -0
  142. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +38 -2
  143. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +16 -0
  144. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +29 -0
  145. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +3 -0
  146. package/dist/esm/driver/default-connection-provider.d.ts +4 -0
  147. package/dist/esm/driver/runtime-driver.d.ts +29 -0
  148. package/dist/esm/driver/single-connection-provider.d.ts +4 -0
  149. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +1 -0
  150. package/dist/esm/dynamic/dynamic-reference-builder.js +7 -0
  151. package/dist/esm/dynamic/dynamic.d.ts +6 -7
  152. package/dist/esm/dynamic/dynamic.js +6 -7
  153. package/dist/esm/index.d.ts +15 -4
  154. package/dist/esm/index.js +12 -1
  155. package/dist/esm/kysely.d.ts +170 -11
  156. package/dist/esm/kysely.js +69 -9
  157. package/dist/esm/migration/migration.d.ts +156 -13
  158. package/dist/esm/migration/migration.js +255 -134
  159. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  160. package/dist/esm/operation-node/column-definition-node.js +0 -4
  161. package/dist/esm/operation-node/common-table-expression-name-node.d.ts +15 -0
  162. package/dist/esm/operation-node/common-table-expression-name-node.js +20 -0
  163. package/dist/esm/operation-node/common-table-expression-node.d.ts +3 -3
  164. package/dist/esm/operation-node/create-table-node.d.ts +6 -2
  165. package/dist/esm/operation-node/create-table-node.js +6 -6
  166. package/dist/esm/operation-node/create-view-node.d.ts +1 -0
  167. package/dist/esm/operation-node/insert-query-node.d.ts +4 -4
  168. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -0
  169. package/dist/esm/operation-node/operation-node-transformer.js +22 -2
  170. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -0
  171. package/dist/esm/operation-node/operation-node-visitor.js +2 -0
  172. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  173. package/dist/esm/operation-node/query-node.d.ts +0 -2
  174. package/dist/esm/operation-node/query-node.js +0 -10
  175. package/dist/esm/operation-node/values-node.d.ts +15 -0
  176. package/dist/esm/operation-node/values-node.js +15 -0
  177. package/dist/esm/operation-node/with-node.d.ts +3 -1
  178. package/dist/esm/operation-node/with-node.js +2 -1
  179. package/dist/esm/package.json +1 -3
  180. package/dist/esm/parser/complex-expression-parser.d.ts +9 -0
  181. package/dist/esm/parser/complex-expression-parser.js +20 -0
  182. package/dist/esm/parser/filter-parser.d.ts +13 -4
  183. package/dist/esm/parser/filter-parser.js +21 -24
  184. package/dist/esm/parser/insert-values-parser.d.ts +5 -9
  185. package/dist/esm/parser/insert-values-parser.js +27 -40
  186. package/dist/esm/parser/order-by-parser.d.ts +1 -1
  187. package/dist/esm/parser/parse-context.d.ts +22 -8
  188. package/dist/esm/parser/parse-context.js +10 -10
  189. package/dist/esm/parser/reference-parser.d.ts +8 -7
  190. package/dist/esm/parser/reference-parser.js +9 -18
  191. package/dist/esm/parser/returning-parser.d.ts +1 -5
  192. package/dist/esm/parser/select-parser.d.ts +12 -14
  193. package/dist/esm/parser/select-parser.js +6 -10
  194. package/dist/esm/parser/table-parser.d.ts +9 -11
  195. package/dist/esm/parser/table-parser.js +3 -9
  196. package/dist/esm/parser/union-parser.d.ts +2 -2
  197. package/dist/esm/parser/union-parser.js +1 -6
  198. package/dist/esm/parser/update-set-parser.d.ts +2 -8
  199. package/dist/esm/parser/update-set-parser.js +5 -24
  200. package/dist/esm/parser/value-parser.d.ts +9 -6
  201. package/dist/esm/parser/value-parser.js +8 -31
  202. package/dist/esm/parser/with-parser.d.ts +36 -6
  203. package/dist/esm/parser/with-parser.js +13 -2
  204. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +36 -2
  205. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  206. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  207. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  208. package/dist/esm/plugin/with-schema/with-schema-transformer.js +8 -0
  209. package/dist/esm/query-builder/delete-query-builder.d.ts +647 -0
  210. package/dist/esm/query-builder/delete-query-builder.js +181 -0
  211. package/dist/esm/query-builder/expression-builder.d.ts +8 -6
  212. package/dist/esm/query-builder/expression-builder.js +3 -3
  213. package/dist/esm/query-builder/function-builder.d.ts +2 -1
  214. package/dist/esm/query-builder/function-builder.js +2 -1
  215. package/dist/esm/query-builder/having-interface.d.ts +49 -0
  216. package/dist/esm/query-builder/having-interface.js +1 -0
  217. package/dist/esm/query-builder/insert-query-builder.d.ts +504 -0
  218. package/dist/esm/query-builder/insert-query-builder.js +252 -0
  219. package/dist/esm/query-builder/insert-result.d.ts +3 -2
  220. package/dist/esm/query-builder/insert-result.js +3 -2
  221. package/dist/esm/query-builder/join-builder.d.ts +19 -20
  222. package/dist/esm/query-builder/join-builder.js +12 -12
  223. package/dist/esm/query-builder/join-interface.d.ts +130 -0
  224. package/dist/esm/query-builder/join-interface.js +1 -0
  225. package/dist/esm/query-builder/no-result-error.d.ts +9 -0
  226. package/dist/esm/query-builder/no-result-error.js +10 -0
  227. package/dist/esm/query-builder/returning-interface.d.ts +73 -0
  228. package/dist/esm/query-builder/returning-interface.js +1 -0
  229. package/dist/esm/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -651
  230. package/dist/esm/query-builder/select-query-builder.js +566 -0
  231. package/dist/esm/query-builder/update-query-builder.d.ts +735 -0
  232. package/dist/esm/query-builder/update-query-builder.js +275 -0
  233. package/dist/esm/query-builder/where-interface.d.ts +378 -0
  234. package/dist/esm/query-builder/where-interface.js +1 -0
  235. package/dist/esm/query-compiler/default-query-compiler.d.ts +4 -0
  236. package/dist/esm/query-compiler/default-query-compiler.js +37 -6
  237. package/dist/esm/query-creator.d.ts +69 -43
  238. package/dist/esm/query-creator.js +66 -29
  239. package/dist/esm/query-executor/default-query-executor.d.ts +19 -0
  240. package/dist/esm/query-executor/noop-query-executor.d.ts +19 -0
  241. package/dist/esm/query-executor/query-executor.d.ts +1 -1
  242. package/dist/esm/query-executor/query-executor.js +1 -1
  243. package/dist/esm/raw-builder/raw-builder.d.ts +2 -0
  244. package/dist/esm/raw-builder/raw-builder.js +7 -1
  245. package/dist/esm/schema/alter-table-builder.d.ts +230 -2
  246. package/dist/esm/schema/alter-table-builder.js +12 -0
  247. package/dist/esm/schema/column-definition-builder.d.ts +147 -20
  248. package/dist/esm/schema/column-definition-builder.js +4 -1
  249. package/dist/esm/schema/create-index-builder.d.ts +2 -1
  250. package/dist/esm/schema/create-index-builder.js +2 -1
  251. package/dist/esm/schema/create-table-builder.d.ts +26 -9
  252. package/dist/esm/schema/create-table-builder.js +43 -10
  253. package/dist/esm/schema/create-view-builder.d.ts +17 -3
  254. package/dist/esm/schema/create-view-builder.js +25 -16
  255. package/dist/esm/schema/schema.d.ts +18 -11
  256. package/dist/esm/schema/schema.js +18 -11
  257. package/dist/esm/util/log.d.ts +3 -2
  258. package/dist/esm/util/log.js +7 -14
  259. package/dist/esm/util/type-utils.d.ts +7 -7
  260. package/package.json +10 -8
  261. package/dist/cjs/query-builder/query-builder.js +0 -1067
  262. package/dist/esm/query-builder/query-builder.js +0 -1061
@@ -2,48 +2,33 @@ import { AliasNode } from '../operation-node/alias-node.js';
2
2
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
3
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
4
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
5
- import { TableExpression, QueryBuilderWithTable, QueryBuilderWithLeftJoin, QueryBuilderWithRightJoin, QueryBuilderWithFullJoin } from '../parser/table-parser.js';
5
+ import { TableExpression, TableExpressionDatabase, TableExpressionTables, LeftJoinTableExpressionDatabase, RightJoinTableExpressionDatabase, FullJoinTableExpressionDatabase } from '../parser/table-parser.js';
6
6
  import { SelectExpression, QueryBuilderWithSelection, SelectAllQueryBuilder } from '../parser/select-parser.js';
7
- import { ExistsExpression, FilterOperator } from '../parser/filter-parser.js';
8
- import { InsertObject } from '../parser/insert-values-parser.js';
9
- import { QueryBuilderWithReturning } from '../parser/returning-parser.js';
7
+ import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper, HavingGrouper } from '../parser/filter-parser.js';
10
8
  import { ReferenceExpression } from '../parser/reference-parser.js';
11
- import { ValueExpressionOrList } from '../parser/value-parser.js';
12
- import { QueryNode } from '../operation-node/query-node.js';
13
- import { AnyColumn, AnyRawBuilder, SingleResultType } from '../util/type-utils.js';
9
+ import { SelectQueryNode } from '../operation-node/select-query-node.js';
10
+ import { AnyRawBuilder, SingleResultType } from '../util/type-utils.js';
14
11
  import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
15
- import { MutationObject } from '../parser/update-set-parser.js';
16
12
  import { Compilable } from '../util/compilable.js';
17
13
  import { QueryExecutor } from '../query-executor/query-executor.js';
18
14
  import { QueryId } from '../util/query-id.js';
19
- import { OnConflictConstraintTarget } from '../parser/on-conflict-parser.js';
20
15
  import { ParseContext } from '../parser/parse-context.js';
21
16
  import { UnionExpression } from '../parser/union-parser.js';
22
- /**
23
- * The main query builder class.
24
- *
25
- * @typeParam DB - A type whose keys are table names/aliases and values are interfaces that
26
- * define the table's columns and their types. This type defines the tables, subqueries
27
- * etc. that are available to the query. This type contains all tables, even the ones
28
- * that have not actually been joined to the query. the `TB` parameter defines the
29
- * table names/aliases that have been joined to the query.
30
- *
31
- * @typeParam TB - The names/aliases of the tables that have been joined to the query
32
- * using `from`, `with` any join method and so on. This type is a union of `DB`
33
- * type's keys. For example `'person' | 'pet'`.
34
- *
35
- * @typePAram O - The query output row type.
36
- */
37
- export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements OperationNodeSource, Compilable {
17
+ import { KyselyPlugin } from '../plugin/kysely-plugin.js';
18
+ import { WhereInterface } from './where-interface.js';
19
+ import { JoinInterface } from './join-interface.js';
20
+ import { NoResultErrorConstructor } from './no-result-error.js';
21
+ import { HavingInterface } from './having-interface.js';
22
+ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, HavingInterface<DB, TB>, JoinInterface<DB, TB>, OperationNodeSource, Compilable {
38
23
  #private;
39
- constructor(props: QueryBuilderProps);
24
+ constructor(props: SelectQueryBuilderProps);
40
25
  /**
41
26
  * Adds a `where` clause to the query.
42
27
  *
43
- * Also see {@link QueryBuilder.whereExists | whereExists}, {@link QueryBuilder.whereRef | whereRef}
44
- * and {@link QueryBuilder.whereRef | orWhere}.
28
+ * Also see {@link orWhere}, {@link whereExists} and {@link whereRef}.
29
+ *
30
+ * ### Examples
45
31
  *
46
- * @example
47
32
  * Find a row by column value:
48
33
  *
49
34
  * ```ts
@@ -60,7 +45,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
60
45
  * select * from "person" where "id" = $1
61
46
  * ```
62
47
  *
63
- * @example
64
48
  * Operator can be any supported operator or if the typings don't support it
65
49
  * you can always use `db.raw('your operator')`.
66
50
  *
@@ -78,7 +62,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
78
62
  * select * from "person" where "id" > $1
79
63
  * ```
80
64
  *
81
- * @example
82
65
  * The `where` methods don't change the type of the query. You can add
83
66
  * conditional `where`s easily by doing something like this:
84
67
  *
@@ -98,10 +81,9 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
98
81
  * `returning` methods, which DO change the return type of the
99
82
  * query.
100
83
  *
101
- * @example
102
84
  * Both the first and third argument can also be subqueries.
103
85
  * A subquery is defined by passing a function and calling
104
- * the `subQuery` method of the object passed into the
86
+ * the `selectFrom` method of the object passed into the
105
87
  * function:
106
88
  *
107
89
  * ```ts
@@ -109,7 +91,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
109
91
  * .selectFrom('person')
110
92
  * .selectAll()
111
93
  * .where(
112
- * (qb) => qb.subQuery('pet')
94
+ * (qb) => qb.selectFrom('pet')
113
95
  * .select('pet.name')
114
96
  * .whereRef('pet.owner_id', '=', 'person.id')
115
97
  * .limit(1),
@@ -132,7 +114,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
132
114
  * ) = $2
133
115
  * ```
134
116
  *
135
- * @example
136
117
  * A `where in` query can be built by using the `in` operator and an array
137
118
  * of values. The values in the array can also be subqueries or raw
138
119
  * instances.
@@ -151,8 +132,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
151
132
  * select * from "person" where "id" in ($1, $2, $3)
152
133
  * ```
153
134
  *
154
- * @example
155
- * If everything else fails, you can always pass {@link Kysely.raw | raw}
135
+ * If everything else fails, you can always pass {@link Kysely.raw | raw}
156
136
  * as any of the arguments, including the operator:
157
137
  *
158
138
  * ```ts
@@ -174,9 +154,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
174
154
  * where coalesce(first_name, last_name) like $1
175
155
  * ```
176
156
  *
177
- * @example
178
157
  * If you only pass one function argument to this method, it can be
179
- * used to create parentheses around other where clauses:
158
+ * used to create parentheses around other where statements:
180
159
  *
181
160
  * ```ts
182
161
  * const persons = await db
@@ -195,7 +174,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
195
174
  * select * from "person" (where "id" = 1 or "id" = 2)
196
175
  * ```
197
176
  *
198
- * @example
199
177
  * In all examples above the columns were known at compile time
200
178
  * (except for the `raw` expressions). By default kysely only allows
201
179
  * you to refer to columns that exist in the database **and** can be
@@ -208,7 +186,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
208
186
  * uses both:
209
187
  *
210
188
  * ```ts
211
- * const { ref } = db.dynamic
189
+ * const { ref } = db.dynamic
212
190
  *
213
191
  * const persons = await db
214
192
  * .selectFrom('person')
@@ -218,9 +196,9 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
218
196
  * .execute()
219
197
  * ```
220
198
  */
221
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: ValueExpressionOrList<DB, TB, RE>): QueryBuilder<DB, TB, O>;
222
- where(grouper: (qb: QueryBuilder<DB, TB, O>) => QueryBuilder<DB, TB, O>): QueryBuilder<DB, TB, O>;
223
- where(raw: AnyRawBuilder): QueryBuilder<DB, TB, O>;
199
+ where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
200
+ where(grouper: WhereGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
201
+ where(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
224
202
  /**
225
203
  * Adds a `where` clause where both sides of the operator are references
226
204
  * to columns.
@@ -229,7 +207,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
229
207
  * value by default. `whereRef` treats it as a column reference. This method is
230
208
  * expecially useful with joins and correclated subqueries.
231
209
  *
232
- * @example
210
+ * ### Examples
211
+ *
233
212
  * Usage with a join:
234
213
  *
235
214
  * ```ts
@@ -244,7 +223,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
244
223
  * select * from "person", "pet" where "person"."first_name" = "pet"."name"
245
224
  * ```
246
225
  *
247
- * @example
248
226
  * Usage in a subquery:
249
227
  *
250
228
  * ```ts
@@ -252,7 +230,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
252
230
  * .selectFrom('person')
253
231
  * .selectAll('person')
254
232
  * .select((qb) => qb
255
- * .subQuery('pet')
233
+ * .selectFrom('pet')
256
234
  * .select('name')
257
235
  * .whereRef('pet.owner_id', '=', 'person.id')
258
236
  * .limit(1)
@@ -272,16 +250,16 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
272
250
  * ) as "pet_name"
273
251
  * from "person"
274
252
  */
275
- whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): QueryBuilder<DB, TB, O>;
253
+ whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
276
254
  /**
277
- * Adds an `or where` clause to the query. Otherwise works just like
278
- * {@link QueryBuilder.where | where}.
255
+ * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
279
256
  *
280
257
  * It's often necessary to wrap `or where` clauses in parentheses to control
281
258
  * precendence. You can use the one argument version of the `where` method
282
259
  * for that. See the examples.
283
260
  *
284
- * @example
261
+ * ### Examples
262
+ *
285
263
  * ```ts
286
264
  * const persons = await db
287
265
  * .selectFrom('person')
@@ -297,7 +275,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
297
275
  * select * from "person" where "id" = 1 or "id" = 2
298
276
  * ```
299
277
  *
300
- * @example
301
278
  * Grouping with parentheses:
302
279
  *
303
280
  * ```ts
@@ -317,7 +294,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
317
294
  * select * from "person" (where "id" = 1 or "id" = 2)
318
295
  * ```
319
296
  *
320
- * @example
321
297
  * Even the first `where` can be an `orWhere`. This is useful
322
298
  * if you are looping through a set of conditions:
323
299
  *
@@ -338,22 +314,22 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
338
314
  * select * from "person" (where "id" = 1 or "id" = 2)
339
315
  * ```
340
316
  */
341
- orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: ValueExpressionOrList<DB, TB, RE>): QueryBuilder<DB, TB, O>;
342
- orWhere(grouper: (qb: QueryBuilder<DB, TB, O>) => QueryBuilder<DB, TB, O>): QueryBuilder<DB, TB, O>;
343
- orWhere(raw: AnyRawBuilder): QueryBuilder<DB, TB, O>;
317
+ orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
318
+ orWhere(grouper: WhereGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
319
+ orWhere(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
344
320
  /**
345
- * Adds an `or where` clause to the query. Otherwise works just like
346
- * {@link QueryBuilder.whereRef | whereRef}.
321
+ * Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
347
322
  *
348
- * Also see {@link QueryBuilder.orWhere | orWhere} and {@link QueryBuilder.where | where}.
323
+ * Also see {@link orWhere} and {@link where}.
349
324
  */
350
- orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): QueryBuilder<DB, TB, O>;
325
+ orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
351
326
  /**
352
327
  * Adds a `where exists` clause to the query.
353
328
  *
354
329
  * You can either use a subquery or a raw instance.
355
330
  *
356
- * @example
331
+ * ### Examples
332
+ *
357
333
  * The query below selets all persons that own a pet named Catto:
358
334
  *
359
335
  * ```ts
@@ -361,7 +337,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
361
337
  * .selectFrom('person')
362
338
  * .selectAll()
363
339
  * .whereExists((qb) => qb
364
- * .subQuery('pet')
340
+ * .selectFrom('pet')
365
341
  * .select('pet.id')
366
342
  * .whereRef('person.id', '=', 'pet.owner_id')
367
343
  * .where('pet.name', '=', 'Catto')
@@ -381,7 +357,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
381
357
  * )
382
358
  * ```
383
359
  *
384
- * @example
385
360
  * The same query as in the previous example but with using raw:
386
361
  *
387
362
  * ```ts
@@ -407,63 +382,63 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
407
382
  * )
408
383
  * ```
409
384
  */
410
- whereExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
385
+ whereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
411
386
  /**
412
- * Just like {@link QueryBuilder.whereExists | whereExists} but creates a `not exists` clause.
387
+ * Just like {@link whereExists} but creates a `not exists` clause.
413
388
  */
414
- whereNotExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
389
+ whereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
415
390
  /**
416
- * Just like {@link QueryBuilder.whereExists | whereExists} but creates a `or exists` clause.
391
+ * Just like {@link whereExists} but creates a `or exists` clause.
417
392
  */
418
- orWhereExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
393
+ orWhereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
419
394
  /**
420
- * Just like {@link QueryBuilder.whereExists | whereExists} but creates a `or not exists` clause.
395
+ * Just like {@link whereExists} but creates a `or not exists` clause.
421
396
  */
422
- orWhereNotExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
397
+ orWhereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
423
398
  /**
424
- * Just like {@link QueryBuilder.where | where} but adds a `having` statement
399
+ * Just like {@link WhereInterface.where | where} but adds a `having` statement
425
400
  * instead of a `where` statement.
426
401
  */
427
- having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: ValueExpressionOrList<DB, TB, RE>): QueryBuilder<DB, TB, O>;
428
- having(grouper: (qb: QueryBuilder<DB, TB, O>) => QueryBuilder<DB, TB, O>): QueryBuilder<DB, TB, O>;
429
- having(raw: AnyRawBuilder): QueryBuilder<DB, TB, O>;
402
+ having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
403
+ having(grouper: HavingGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
404
+ having(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
430
405
  /**
431
- * Just like {@link QueryBuilder.whereRef | whereRef} but adds a `having` statement
406
+ * Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
432
407
  * instead of a `where` statement.
433
408
  */
434
- havingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): QueryBuilder<DB, TB, O>;
409
+ havingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
435
410
  /**
436
- * Just like {@link QueryBuilder.orWhere | orWhere} but adds a `having` statement
411
+ * Just like {@link WhereInterface.orWhere | orWhere} but adds a `having` statement
437
412
  * instead of a `where` statement.
438
413
  */
439
- orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: ValueExpressionOrList<DB, TB, RE>): QueryBuilder<DB, TB, O>;
440
- orHaving(grouper: (qb: QueryBuilder<DB, TB, O>) => QueryBuilder<DB, TB, O>): QueryBuilder<DB, TB, O>;
441
- orHaving(raw: AnyRawBuilder): QueryBuilder<DB, TB, O>;
414
+ orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
415
+ orHaving(grouper: HavingGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
416
+ orHaving(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
442
417
  /**
443
- * Just like {@link QueryBuilder.orWhereRef | orWhereRef} but adds a `having` statement
418
+ * Just like {@link WhereInterface.orWhereRef | orWhereRef} but adds a `having` statement
444
419
  * instead of a `where` statement.
445
420
  */
446
- orHavingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): QueryBuilder<DB, TB, O>;
421
+ orHavingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
447
422
  /**
448
- * Just like {@link QueryBuilder.whereExists | whereExists} but adds a `having` statement
423
+ * Just like {@link WhereInterface.whereExists | whereExists} but adds a `having` statement
449
424
  * instead of a `where` statement.
450
425
  */
451
- havingExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
426
+ havingExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
452
427
  /**
453
- * Just like {@link QueryBuilder.whereNotExists | whereNotExists} but adds a `having` statement
428
+ * Just like {@link WhereInterface.whereNotExists | whereNotExists} but adds a `having` statement
454
429
  * instead of a `where` statement.
455
430
  */
456
- havingNotExist(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
431
+ havingNotExist(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
457
432
  /**
458
- * Just like {@link QueryBuilder.orWhereExists | orWhereExists} but adds a `having` statement
433
+ * Just like {@link WhereInterface.orWhereExists | orWhereExists} but adds a `having` statement
459
434
  * instead of a `where` statement.
460
435
  */
461
- orHavingExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
436
+ orHavingExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
462
437
  /**
463
- * Just like {@link QueryBuilder.orWhereNotExists | orWhereNotExists} but adds a `having` statement
438
+ * Just like {@link WhereInterface.orWhereNotExists | orWhereNotExists} but adds a `having` statement
464
439
  * instead of a `where` statement.
465
440
  */
466
- orHavingNotExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
441
+ orHavingNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
467
442
  /**
468
443
  * Adds a select clause to the query.
469
444
  *
@@ -481,9 +456,10 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
481
456
  * same as calling `select(['id', 'first_name']).
482
457
  *
483
458
  * To select all columns of the query or specific tables see the
484
- * {@link QueryBuilder.selectAll | selectAll} method.
459
+ * {@link SelectQueryBuilder.selectAll | selectAll} method.
460
+ *
461
+ * ### Examples
485
462
  *
486
- * @example
487
463
  * Select a single column:
488
464
  *
489
465
  * ```ts
@@ -501,7 +477,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
501
477
  * select "id" from "person" where "first_name" = $1
502
478
  * ```
503
479
  *
504
- * @example
505
480
  * Select a single column and specify a table:
506
481
  *
507
482
  * ```ts
@@ -518,7 +493,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
518
493
  * select "person"."id" from "person", "pet"
519
494
  * ```
520
495
  *
521
- * @example
522
496
  * Select multiple columns:
523
497
  *
524
498
  * ```ts
@@ -536,7 +510,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
536
510
  * select "person"."id", "first_name" from "person"
537
511
  * ```
538
512
  *
539
- * @example
540
513
  * Aliased selections:
541
514
  *
542
515
  * ```ts
@@ -560,7 +533,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
560
533
  * from "person"
561
534
  * ```
562
535
  *
563
- * @example
564
536
  * You can also select subqueries and raw expressions. Note that you
565
537
  * always need to give a name for the selections using the `as`
566
538
  * method:
@@ -569,7 +541,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
569
541
  * const persons = await db.selectFrom('person')
570
542
  * .select([
571
543
  * (qb) => qb
572
- * .subQuery('pet')
544
+ * .selectFrom('pet')
573
545
  * .whereRef('person.id', '=', 'pet.owner_id')
574
546
  * .select('pet.name')
575
547
  * .limit(1)
@@ -599,7 +571,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
599
571
  * In case you use `raw` you need to specify the type of the expression
600
572
  * (in this example `string`).
601
573
  *
602
- * @example
603
574
  * All the examples above assume you know the column names at compile time.
604
575
  * While it's better to build your code like that (that way you also know
605
576
  * the types) sometimes it's not possible or you just prefer to write more
@@ -616,7 +587,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
616
587
  *
617
588
  * // A type that lists all possible values `columnFromUserInput` can have.
618
589
  * // You can use `keyof Person` if any column of an interface is allowed.
619
- * type PossibleColumns = 'last_name' | 'first_name' | 'birth_date'
590
+ * type PossibleColumns = 'last_name' | 'first_name' | 'birth_date'
620
591
  *
621
592
  * const spersons = await db.selectFrom('person')
622
593
  * .select([
@@ -628,24 +599,25 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
628
599
  * // The resulting type contains all `PossibleColumns` as optional fields
629
600
  * // because we cannot know which field was actually selected before
630
601
  * // running the code.
631
- * const lastName: string | undefined = persons[0].last_name
632
- * const firstName: string | undefined = persons[0].first_name
633
- * const birthDate: string | undefined = persons[0].birth_date
602
+ * const lastName: string | undefined = persons[0].last_name
603
+ * const firstName: string | undefined = persons[0].first_name
604
+ * const birthDate: string | undefined = persons[0].birth_date
634
605
  *
635
606
  * // The result type also contains the compile time selection `id`.
636
607
  * persons[0].id
637
608
  * ```
638
609
  */
639
- select<S extends SelectExpression<DB, TB>>(selections: ReadonlyArray<S>): QueryBuilderWithSelection<DB, TB, O, S>;
640
- select<S extends SelectExpression<DB, TB>>(selection: S): QueryBuilderWithSelection<DB, TB, O, S>;
610
+ select<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): QueryBuilderWithSelection<DB, TB, O, SE>;
611
+ select<SE extends SelectExpression<DB, TB>>(selection: SE): QueryBuilderWithSelection<DB, TB, O, SE>;
641
612
  /**
642
613
  * Adds `distinct on` selections to the select clause.
643
614
  *
644
- * Takes the same inputs as the {@link QueryBuilder.select | select} method.
645
- * See the {@link QueryBuilder.select | select} method's documentation for
615
+ * Takes the same inputs as the {@link SelectQueryBuilder.select | select} method.
616
+ * See the {@link SelectQueryBuilder.select | select} method's documentation for
646
617
  * more examples.
647
618
  *
648
- * @example
619
+ * ### Examples
620
+ *
649
621
  * ```ts
650
622
  * await db.selectFrom('person')
651
623
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
@@ -664,12 +636,13 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
664
636
  * where "pet"."name" = $1
665
637
  * ```
666
638
  */
667
- distinctOn<S extends SelectExpression<DB, TB>>(selections: ReadonlyArray<S>): QueryBuilder<DB, TB, O>;
668
- distinctOn<S extends SelectExpression<DB, TB>>(selection: S): QueryBuilder<DB, TB, O>;
639
+ distinctOn<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): SelectQueryBuilder<DB, TB, O>;
640
+ distinctOn<SE extends SelectExpression<DB, TB>>(selection: SE): SelectQueryBuilder<DB, TB, O>;
669
641
  /**
670
642
  * Makes the selection distinct.
671
643
  *
672
- * @example
644
+ * ### Examples
645
+ *
673
646
  * ```ts
674
647
  * await db.selectFrom('person')
675
648
  * .select('first_name')
@@ -683,35 +656,36 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
683
656
  * select distinct "first_name" from "person"
684
657
  * ```
685
658
  */
686
- distinct(): QueryBuilder<DB, TB, O>;
659
+ distinct(): SelectQueryBuilder<DB, TB, O>;
687
660
  /**
688
661
  * Adds the `for update` option to a select query on supported databases.
689
662
  */
690
- forUpdate(): QueryBuilder<DB, TB, O>;
663
+ forUpdate(): SelectQueryBuilder<DB, TB, O>;
691
664
  /**
692
665
  * Adds the `for share` option to a select query on supported databases.
693
666
  */
694
- forShare(): QueryBuilder<DB, TB, O>;
667
+ forShare(): SelectQueryBuilder<DB, TB, O>;
695
668
  /**
696
669
  * Adds the `for key share` option to a select query on supported databases.
697
670
  */
698
- forKeyShare(): QueryBuilder<DB, TB, O>;
671
+ forKeyShare(): SelectQueryBuilder<DB, TB, O>;
699
672
  /**
700
673
  * Adds the `for no key update` option to a select query on supported databases.
701
674
  */
702
- forNoKeyUpdate(): QueryBuilder<DB, TB, O>;
675
+ forNoKeyUpdate(): SelectQueryBuilder<DB, TB, O>;
703
676
  /**
704
677
  * Adds the `skip locked` option to a select query on supported databases.
705
678
  */
706
- skipLocked(): QueryBuilder<DB, TB, O>;
679
+ skipLocked(): SelectQueryBuilder<DB, TB, O>;
707
680
  /**
708
681
  * Adds the `nowait` option to a select query on supported databases.
709
682
  */
710
- noWait(): QueryBuilder<DB, TB, O>;
683
+ noWait(): SelectQueryBuilder<DB, TB, O>;
711
684
  /**
712
685
  * Adds a `select *` or `select table.*` clause to the query.
713
686
  *
714
- * @example
687
+ * ### Examples
688
+ *
715
689
  * ```ts
716
690
  * const persons = await db
717
691
  * .selectFrom('person')
@@ -725,7 +699,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
725
699
  * select * from "person"
726
700
  * ```
727
701
  *
728
- * @example
702
+ * Select all columns of a table:
703
+ *
729
704
  * ```ts
730
705
  * const persons = await db
731
706
  * .selectFrom('person')
@@ -739,7 +714,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
739
714
  * select "person".* from "person"
740
715
  * ```
741
716
  *
742
- * @example
717
+ * Select all columns of multiple tables:
718
+ *
743
719
  * ```ts
744
720
  * const personsPets = await db
745
721
  * .selectFrom(['person', 'pet'])
@@ -759,7 +735,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
759
735
  /**
760
736
  * Joins another table to the query using an inner join.
761
737
  *
762
- * @example
738
+ * ### Examples
739
+ *
763
740
  * Simple usage by providing a table name and two columns to join:
764
741
  *
765
742
  * ```ts
@@ -784,7 +761,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
784
761
  * on "pet"."owner_id" = "person"."id"
785
762
  * ```
786
763
  *
787
- * @example
788
764
  * You can give an alias for the joined table like this:
789
765
  *
790
766
  * ```ts
@@ -805,7 +781,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
805
781
  * where "p".name" = $1
806
782
  * ```
807
783
  *
808
- * @example
809
784
  * You can provide a function as the second argument to get a join
810
785
  * builder for creating more complex joins. The join builder has a
811
786
  * bunch of `on*` methods for building the `on` clause of the join.
@@ -836,14 +811,13 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
836
811
  * and "pet"."name" = $1
837
812
  * ```
838
813
  *
839
- * @example
840
814
  * You can join a subquery by providing a function as the first
841
815
  * argument:
842
816
  *
843
817
  * ```ts
844
818
  * await db.selectFrom('person')
845
819
  * .innerJoin(
846
- * (qb) => qb.subQuery('pet')
820
+ * (qb) => qb.selectFrom('pet')
847
821
  * .select(['owner_id', 'name'])
848
822
  * .where('name', '=', 'Doggo')
849
823
  * .as('doggos'),
@@ -867,497 +841,23 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
867
841
  * on "doggos"."owner_id" = "person"."id"
868
842
  * ```
869
843
  */
870
- innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithTable<DB, TB, O, TE>;
871
- innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithTable<DB, TB, O, TE>;
844
+ innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
845
+ innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
872
846
  /**
873
- * Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a left join
874
- * instead of an inner join.
847
+ * Just like {@link innerJoin} but adds a left join nstead of an inner join.
875
848
  */
876
- leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithLeftJoin<DB, TB, O, TE>;
877
- leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithLeftJoin<DB, TB, O, TE>;
849
+ leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
850
+ leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
878
851
  /**
879
- * Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a right join
880
- * instead of an inner join.
852
+ * Just like {@link innerJoin} but adds a right join instead of an inner join.
881
853
  */
882
- rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithRightJoin<DB, TB, O, TE>;
883
- rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithRightJoin<DB, TB, O, TE>;
854
+ rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
855
+ rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
884
856
  /**
885
- * Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a full join
886
- * instead of an inner join.
857
+ * Just like {@link innerJoin} but adds a full join instead of an inner join.
887
858
  */
888
- fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithFullJoin<DB, TB, O, TE>;
889
- fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithFullJoin<DB, TB, O, TE>;
890
- /**
891
- * Sets the values to insert for an {@link Kysely.insertInto | insert} query.
892
- *
893
- * This method takes an object whose keys are column names and values are
894
- * values to insert. In addition to the column's type, the values can be
895
- * {@link Kysely.raw | raw} instances, select queries or the
896
- * {@link Kysely.generated | generated} placeholder.
897
- *
898
- * You must provide all values defined by the interface of the table you
899
- * are inserting into. Values that are generated by the database like auto incrementing
900
- * identifiers can be marked with the {@link Kysely.generated} placeholder unless you
901
- * want to insert a specific value instead of the generated default.
902
- *
903
- * The return value of an `insert` query is an instance of {@link InsertResult}. The
904
- * {@link InsertResult.insertId | insertId} field holds the auto incremented primary
905
- * key if the database returned one.
906
- *
907
- * On PostgreSQL and some other dialects, you need to call `returning` to get
908
- * something out of the query.
909
- *
910
- * @example
911
- * Insert a row into `person`:
912
- * ```ts
913
- * const id = await db
914
- * .insertInto('person')
915
- * .values({
916
- * id: db.generated,
917
- * first_name: 'Jennifer',
918
- * last_name: 'Aniston'
919
- * })
920
- * .executeTakeFirstOrThrow()
921
- * ```
922
- *
923
- * The generated SQL (PostgreSQL):
924
- *
925
- * ```sql
926
- * insert into "person" ("first_name", "last_name") values ($1, $2)
927
- * ```
928
- *
929
- * @example
930
- * On dialects that support it (for example PostgreSQL) you can insert multiple
931
- * rows by providing an array. Note that the return value is once again very
932
- * dialect-specific. Some databases may only return the id of the *last* inserted
933
- * row and some return nothing at all unless you call `returning`.
934
- *
935
- * ```ts
936
- * await db
937
- * .insertInto('person')
938
- * .values([{
939
- * id: db.generated,
940
- * first_name: 'Jennifer',
941
- * last_name: 'Aniston'
942
- * }, {
943
- * id: db.generated,
944
- * first_name: 'Arnold',
945
- * last_name: 'Schwarzenegger',
946
- * }])
947
- * .execute()
948
- * ```
949
- *
950
- * The generated SQL (PostgreSQL):
951
- *
952
- * ```sql
953
- * insert into "person" ("first_name", "last_name") values (($1, $2), ($3, $4))
954
- * ```
955
- *
956
- * @example
957
- * On postgresql you need to chain `returning` to the query to get
958
- * the inserted row's columns (or any other expression) as the
959
- * return value:
960
- *
961
- * ```ts
962
- * const row = await db
963
- * .insertInto('person')
964
- * .values({
965
- * id: db.generated,
966
- * first_name: 'Jennifer',
967
- * last_name: 'Aniston'
968
- * })
969
- * .returning('id')
970
- * .executeTakeFirstOrThrow()
971
- *
972
- * row.id
973
- * ```
974
- *
975
- * The generated SQL (PostgreSQL):
976
- *
977
- * ```sql
978
- * insert into "person" ("first_name", "last_name") values ($1, $2) returning "id"
979
- * ```
980
- *
981
- * @example
982
- * In addition to primitives, the values can also be `raw` expressions or
983
- * select queries:
984
- *
985
- * ```ts
986
- * const result = await db
987
- * .insertInto('person')
988
- * .values({
989
- * id: db.generated,
990
- * first_name: 'Jennifer',
991
- * last_name: db.raw('? || ?', ['Ani', 'ston']),
992
- * age: db.selectFrom('person').select(raw('avg(age)')),
993
- * })
994
- * .executeTakeFirst()
995
- *
996
- * console.log(result.insertId)
997
- * ```
998
- *
999
- * The generated SQL (PostgreSQL):
1000
- *
1001
- * ```sql
1002
- * insert into "person" ("first_name", "last_name", "age")
1003
- * values ($1, $2 || $3, (select avg(age) from "person"))
1004
- * ```
1005
- *
1006
- * @example
1007
- * You can also use the callback version of subqueries or raw expressions:
1008
- *
1009
- * ```ts
1010
- * db.with('jennifer', (db) => db
1011
- * .selectFrom('person')
1012
- * .where('first_name', '=', 'Jennifer')
1013
- * .select(['id', 'first_name', 'gender'])
1014
- * .limit(1)
1015
- * ).insertInto('pet').values({
1016
- * id: db.generated,
1017
- * owner_id: (eb) => eb.subQuery('jennifer').select('id'),
1018
- * name: (eb) => eb.subQuery('jennifer').select('first_name'),
1019
- * species: 'cat',
1020
- * })
1021
- * ```
1022
- */
1023
- values(row: InsertObject<DB, TB>): QueryBuilder<DB, TB, O>;
1024
- values(row: ReadonlyArray<InsertObject<DB, TB>>): QueryBuilder<DB, TB, O>;
1025
- /**
1026
- * Ignores the insert if the column or constraint given as the first
1027
- * argument conflicts with the current rows in the database. The
1028
- * default behavior without this method call is to throw an error.
1029
- *
1030
- * For example if a table has a field `name` that has a unique constraint
1031
- * and you try to insert a row with a `name` that already exists in the
1032
- * database, calling `onConflictDoNothing('name')` will ignore the conflict
1033
- * and do nothing. By default the query would throw.
1034
- *
1035
- * Only some dialects like PostgreSQL and SQLite implement the `on conflict`
1036
- * statement. On MySQL you should use the {@link ignore} method to achieve
1037
- * similar results.
1038
- *
1039
- * Also see the {@link QueryBuilder.onConflictUpdate | onConflictUpdate}
1040
- * method if you want to perform an update in case of a conflict (upsert).
1041
- *
1042
- * @example
1043
- * ```ts
1044
- * await db
1045
- * .insertInto('pet')
1046
- * .values({
1047
- * id: db.generated,
1048
- * name: 'Catto',
1049
- * species: 'cat',
1050
- * })
1051
- * .onConflictDoNothing('name')
1052
- * .execute()
1053
- * ```
1054
- *
1055
- * The generated SQL (PostgreSQL):
1056
- *
1057
- * ```sql
1058
- * insert into "pet" ("name", "species")
1059
- * values ($1, $2)
1060
- * on conflict ("name") do nothing
1061
- * ```
1062
- *
1063
- * @example
1064
- * You can provied the name of the constraint instead of a column name
1065
- *
1066
- * ```ts
1067
- * await db
1068
- * .insertInto('pet')
1069
- * .values({
1070
- * id: db.generated,
1071
- * name: 'Catto',
1072
- * species: 'cat',
1073
- * })
1074
- * .onConflictDoNothing({
1075
- * constraint: 'pet_name_key'
1076
- * })
1077
- * .execute()
1078
- * ```
1079
- *
1080
- * The generated SQL (PostgreSQL):
1081
- *
1082
- * ```sql
1083
- * insert into "pet" ("name", "species")
1084
- * values ($1, $2)
1085
- * on conflict on constraint "pet_name_key"
1086
- * do nothing
1087
- * ```
1088
- */
1089
- onConflictDoNothing(column: AnyColumn<DB, TB>): QueryBuilder<DB, TB, O>;
1090
- onConflictDoNothing(columns: ReadonlyArray<AnyColumn<DB, TB>>): QueryBuilder<DB, TB, O>;
1091
- onConflictDoNothing(constraint: OnConflictConstraintTarget): QueryBuilder<DB, TB, O>;
1092
- /**
1093
- * Changes an `insert into` query to an `insert ignore into` query.
1094
- *
1095
- * If you use the ignore modifier, ignorable errors that occur while executing the
1096
- * insert statement are ignored. For example, without ignore, a row that duplicates
1097
- * an existing unique index or primary key value in the table causes a duplicate-key
1098
- * error and the statement is aborted. With ignore, the row is discarded and no error
1099
- * occurs.
1100
- *
1101
- * This is only supported on some dialects like MySQL. On most dialects you should
1102
- * use the {@link onConflictDoNothing} method.
1103
- *
1104
- * @example
1105
- * ```ts
1106
- * await db.insertInto('person')
1107
- * .ignore()
1108
- * .values(values)
1109
- * .execute()
1110
- * ```
1111
- */
1112
- ignore(): QueryBuilder<DB, TB, O>;
1113
- /**
1114
- * Ignores an insert if the column or constraint given as the first
1115
- * argument conflicts with the current rows in the database and
1116
- * performs an update on the conflicting row instead. This method
1117
- * can be used to implement an upsert operation.
1118
- *
1119
- * For example if a table has a field `name` that has a unique constraint
1120
- * and you try to insert a row with a `name` that already exists in the
1121
- * database, calling `onConfictUpdate('name', { species: 'hamster' })`
1122
- * will set the conflicting row's `species` field to value `'hamster'`.
1123
- * By default the query would throw.
1124
- *
1125
- * The second argument (updates) can be anything the {@link QueryBuilder.set | set}
1126
- * method accepts.
1127
- *
1128
- * The `on conflict do update` statement is only implemented by some dialects
1129
- * like PostgreSQL and SQLite. On MySQL you should use the {@link onDuplicateKeyUpdate}
1130
- * method instead.
1131
- *
1132
- * Also see the {@link QueryBuilder.onConflictDoNothing | onConflictDoNothing}
1133
- * method.
1134
- *
1135
- * @example
1136
- * ```ts
1137
- * await db
1138
- * .insertInto('pet')
1139
- * .values({
1140
- * id: db.generated,
1141
- * name: 'Catto',
1142
- * species: 'cat',
1143
- * })
1144
- * .onConflictUpdate('name', { species: 'hamster' })
1145
- * .execute()
1146
- * ```
1147
- *
1148
- * The generated SQL (PostgreSQL):
1149
- *
1150
- * ```sql
1151
- * insert into "pet" ("name", "species")
1152
- * values ($1, $2)
1153
- * on conflict ("name") do update set "species" = $3
1154
- * ```
1155
- *
1156
- * @example
1157
- * You can provied the name of the constraint instead of a column name
1158
- *
1159
- * ```ts
1160
- * await db
1161
- * .insertInto('pet')
1162
- * .values({
1163
- * id: db.generated,
1164
- * name: 'Catto',
1165
- * species: 'cat',
1166
- * })
1167
- * .onConflictUpdate(
1168
- * { constraint: 'pet_name_key' },
1169
- * { species: 'hamster' }
1170
- * )
1171
- * .execute()
1172
- * ```
1173
- *
1174
- * The generated SQL (PostgreSQL):
1175
- *
1176
- * ```sql
1177
- * insert into "pet" ("name", "species")
1178
- * values ($1, $2)
1179
- * on conflict on constraint "pet_name_key"
1180
- * do update set "species" = $3
1181
- * ```
1182
- */
1183
- onConflictUpdate(column: AnyColumn<DB, TB>, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
1184
- onConflictUpdate(columns: ReadonlyArray<AnyColumn<DB, TB>>, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
1185
- onConflictUpdate(constraint: OnConflictConstraintTarget, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
1186
- /**
1187
- * Adds `on duplicate key update` to an insert query.
1188
- *
1189
- * If you specify `on duplicate key update`, and a row is inserted that would cause
1190
- * a duplicate value in a unique index or primary key, an update of the old row occurs.
1191
- *
1192
- * This is only implemented by some dialects like MySQL. On most dialects you should
1193
- * use {@link onConflictUpdate} instead.
1194
- *
1195
- * @example
1196
- * ```ts
1197
- * await db
1198
- * .insertInto('person')
1199
- * .values(values)
1200
- * .onDuplicateKeyUpdate({ species: 'hamster' })
1201
- * ```
1202
- */
1203
- onDuplicateKeyUpdate(updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
1204
- /**
1205
- * Sets the values to update for an {@link Kysely.updateTable | update} query.
1206
- *
1207
- * This method takes an object whose keys are column names and values are
1208
- * values to update. In addition to the column's type, the values can be `raw`
1209
- * instances or select queries.
1210
- *
1211
- * The return value of an update query is an instance of {@link UpdateResult}.
1212
- * You can use the {@link QueryBuilder.returning | returning} method on
1213
- * supported databases to get out the updated rows.
1214
- *
1215
- * @example
1216
- * Update a row in `person` table:
1217
- *
1218
- * ```ts
1219
- * const result = await db
1220
- * .updateTable('person')
1221
- * .set({
1222
- * first_name: 'Jennifer',
1223
- * last_name: 'Aniston'
1224
- * })
1225
- * .where('id', '=', 1)
1226
- * .executeTakeFirst()
1227
- *
1228
- * console.log(result.numUpdatedRows)
1229
- * ```
1230
- *
1231
- * The generated SQL (PostgreSQL):
1232
- *
1233
- * ```sql
1234
- * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3
1235
- * ```
1236
- *
1237
- * @example
1238
- * On postgresql you ca chain `returning` to the query to get
1239
- * the updated rows' columns (or any other expression) as the
1240
- * return value:
1241
- *
1242
- * ```ts
1243
- * const row = await db
1244
- * .updateTable('person')
1245
- * .set({
1246
- * first_name: 'Jennifer',
1247
- * last_name: 'Aniston'
1248
- * })
1249
- * .where('id', '=', 1)
1250
- * .returning('id')
1251
- * .executeTakeFirstOrThrow()
1252
- *
1253
- * row.id
1254
- * ```
1255
- *
1256
- * The generated SQL (PostgreSQL):
1257
- *
1258
- * ```sql
1259
- * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3 returning "id"
1260
- * ```
1261
- *
1262
- * @example
1263
- * In addition to primitives, the values can also be `raw` expressions or
1264
- * select queries:
1265
- *
1266
- * ```ts
1267
- * const result = await db
1268
- * .updateTable('person')
1269
- * .set({
1270
- * first_name: 'Jennifer',
1271
- * last_name: db.raw('? || ?', ['Ani', 'ston']),
1272
- * age: db.selectFrom('person').select(raw('avg(age)')),
1273
- * })
1274
- * .where('id', '=', 1)
1275
- * .executeTakeFirst()
1276
- *
1277
- * console.log(result.numUpdatedRows)
1278
- * ```
1279
- *
1280
- * The generated SQL (PostgreSQL):
1281
- *
1282
- * ```sql
1283
- * update "person" set
1284
- * "first_name" = $1,
1285
- * "last_name" = $2 || $3,
1286
- * "age" = (select avg(age) from "person")
1287
- * where "id" = $4
1288
- * ```
1289
- */
1290
- set(row: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
1291
- /**
1292
- * Allows you to return data from modified rows.
1293
- *
1294
- * On supported databases like PostgreSQL, this method can be chained to
1295
- * `insert`, `update` and `delete` queries to return data.
1296
- *
1297
- * Note that on SQLite you need to give aliases for the expressions to avoid
1298
- * [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
1299
- * For example `.returning('id as id')`.
1300
- *
1301
- * Also see the {@link QueryBuilder.returningAll | returningAll} method.
1302
- *
1303
- * @example
1304
- * Return one column:
1305
- *
1306
- * ```ts
1307
- * const { id } = await db
1308
- * .insertInto('person')
1309
- * .values({
1310
- * id: db.generated,
1311
- * first_name: 'Jennifer',
1312
- * last_name: 'Aniston'
1313
- * })
1314
- * .returning('id')
1315
- * .executeTakeFirst()
1316
- * ```
1317
- *
1318
- * @example
1319
- * Return multiple columns:
1320
- *
1321
- * ```ts
1322
- * const { id, first_name } = await db
1323
- * .insertInto('person')
1324
- * .values({
1325
- * id: db.generated,
1326
- * first_name: 'Jennifer',
1327
- * last_name: 'Aniston'
1328
- * })
1329
- * .returning(['id', 'last_name'])
1330
- * .executeTakeFirst()
1331
- * ```
1332
- *
1333
- * @example
1334
- * Return arbitrary expressions:
1335
- *
1336
- * ```ts
1337
- * const { raw } = db
1338
- *
1339
- * const { id, full_name, first_pet_id } = await db
1340
- * .insertInto('person')
1341
- * .values({
1342
- * id: db.generated,
1343
- * first_name: 'Jennifer',
1344
- * last_name: 'Aniston'
1345
- * })
1346
- * .returning([
1347
- * 'id as id',
1348
- * raw<string>(`concat(first_name, ' ', last_name)`).as('full_name'),
1349
- * (qb) => qb.subQuery('pets').select('pet.id').limit(1).as('first_pet_id')
1350
- * ])
1351
- * .executeTakeFirst()
1352
- * ```
1353
- */
1354
- returning<S extends SelectExpression<DB, TB>>(selections: ReadonlyArray<S>): QueryBuilderWithReturning<DB, TB, O, S>;
1355
- returning<S extends SelectExpression<DB, TB>>(selection: S): QueryBuilderWithReturning<DB, TB, O, S>;
1356
- /**
1357
- * Adds a `returning *` to an insert/update/delete query on databases
1358
- * that support `returning` such as PostgreSQL.
1359
- */
1360
- returningAll(): QueryBuilder<DB, TB, DB[TB]>;
859
+ fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
860
+ fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
1361
861
  /**
1362
862
  * Adds an `order by` clause to the query.
1363
863
  *
@@ -1367,7 +867,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1367
867
  * The first argument is the expression to order by and the second is the
1368
868
  * order (`asc` or `desc`).
1369
869
  *
1370
- * @example
870
+ * ### Examples
871
+ *
1371
872
  * ```ts
1372
873
  * await db
1373
874
  * .selectFrom('person')
@@ -1385,7 +886,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1385
886
  * order by "id" asc, "fn" desc
1386
887
  * ```
1387
888
  *
1388
- * @example
1389
889
  * The order by expression can also be a `raw` expression or a subquery
1390
890
  * in addition to column references:
1391
891
  *
@@ -1393,7 +893,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1393
893
  * await db
1394
894
  * .selectFrom('person')
1395
895
  * .selectAll()
1396
- * .orderBy((qb) => qb.subQuery('pet')
896
+ * .orderBy((qb) => qb.selectFrom('pet')
1397
897
  * .select('pet.name')
1398
898
  * .whereRef('pet.owner_id', '=', 'person.id')
1399
899
  * .limit(1)
@@ -1418,7 +918,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1418
918
  * concat(first_name, last_name) asc
1419
919
  * ```
1420
920
  *
1421
- * @example
1422
921
  * `dynamic.ref` can be used to refer to columns not known at
1423
922
  * compile time:
1424
923
  *
@@ -1444,11 +943,12 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1444
943
  * order by "fn" asc
1445
944
  * ```
1446
945
  */
1447
- orderBy(orderBy: OrderByExpression<DB, TB, O>, direction?: OrderByDirectionExpression): QueryBuilder<DB, TB, O>;
946
+ orderBy(orderBy: OrderByExpression<DB, TB, O>, direction?: OrderByDirectionExpression): SelectQueryBuilder<DB, TB, O>;
1448
947
  /**
1449
948
  * Adds a `group by` clause to the query.
1450
949
  *
1451
- * @example
950
+ * ### Examples
951
+ *
1452
952
  * ```ts
1453
953
  * await db
1454
954
  * .selectFrom('person')
@@ -1468,11 +968,10 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1468
968
  * group by "first_name"
1469
969
  * ```
1470
970
  *
1471
- * @example
1472
971
  * `groupBy` also accepts an array:
1473
972
  *
1474
973
  * ```ts
1475
- * const { raw } = db
974
+ * const { raw } = db
1476
975
  *
1477
976
  * await db
1478
977
  * .selectFrom('person')
@@ -1496,12 +995,11 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1496
995
  * group by "first_name", "last_name"
1497
996
  * ```
1498
997
  *
1499
- * @example
1500
998
  * The group by expressions can also be subqueries or
1501
999
  * raw expressions:
1502
1000
  *
1503
1001
  * ```ts
1504
- * const { raw } = db
1002
+ * const { raw } = db
1505
1003
  *
1506
1004
  * await db
1507
1005
  * .selectFrom('person')
@@ -1512,12 +1010,11 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1512
1010
  * ])
1513
1011
  * .groupBy([
1514
1012
  * raw('concat(first_name, last_name)'),
1515
- * (qb) => qb.subQuery('pet').select('id').limit(1)
1013
+ * (qb) => qb.selectFrom('pet').select('id').limit(1)
1516
1014
  * ])
1517
1015
  * .execute()
1518
1016
  * ```
1519
1017
  *
1520
- * @example
1521
1018
  * `dynamic.ref` can be used to refer to columns not known at
1522
1019
  * compile time:
1523
1020
  *
@@ -1543,12 +1040,13 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1543
1040
  * group by "first_name"
1544
1041
  * ```
1545
1042
  */
1546
- groupBy(orderBy: ReadonlyArray<ReferenceExpression<DB, TB>>): QueryBuilder<DB, TB, O>;
1547
- groupBy(orderBy: ReferenceExpression<DB, TB>): QueryBuilder<DB, TB, O>;
1043
+ groupBy(groupBy: ReadonlyArray<ReferenceExpression<DB, TB>>): SelectQueryBuilder<DB, TB, O>;
1044
+ groupBy(groupBy: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
1548
1045
  /**
1549
1046
  * Adds a limit clause to the query.
1550
1047
  *
1551
- * @example
1048
+ * ### Examples
1049
+ *
1552
1050
  * Select the first 10 rows of the result:
1553
1051
  *
1554
1052
  * ```ts
@@ -1558,7 +1056,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1558
1056
  * .limit(10)
1559
1057
  * ```
1560
1058
  *
1561
- * @example
1562
1059
  * Select rows from index 10 to index 19 of the result:
1563
1060
  *
1564
1061
  * ```ts
@@ -1569,11 +1066,12 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1569
1066
  * .limit(10)
1570
1067
  * ```
1571
1068
  */
1572
- limit(limit: number): QueryBuilder<DB, TB, O>;
1069
+ limit(limit: number): SelectQueryBuilder<DB, TB, O>;
1573
1070
  /**
1574
1071
  * Adds an offset clause to the query.
1575
1072
  *
1576
- * @example
1073
+ * ### Examples
1074
+ *
1577
1075
  * Select rows from index 10 to index 19 of the result:
1578
1076
  *
1579
1077
  * ```ts
@@ -1584,13 +1082,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1584
1082
  * .limit(10)
1585
1083
  * ```
1586
1084
  */
1587
- offset(offset: number): QueryBuilder<DB, TB, O>;
1085
+ offset(offset: number): SelectQueryBuilder<DB, TB, O>;
1588
1086
  /**
1589
1087
  * Combines another select query or raw expression to this query using `union`.
1590
1088
  *
1591
1089
  * The output row type of the combined query must match `this` query.
1592
1090
  *
1593
- * @xample
1091
+ * ### Examples
1092
+ *
1594
1093
  * ```ts
1595
1094
  * db.selectFrom('person')
1596
1095
  * .select(['id', 'first_name as name'])
@@ -1598,13 +1097,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1598
1097
  * .orderBy('name')
1599
1098
  * ```
1600
1099
  */
1601
- union(expression: UnionExpression<DB, O>): QueryBuilder<DB, TB, O>;
1100
+ union(expression: UnionExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1602
1101
  /**
1603
1102
  * Combines another select query or raw expression to this query using `union all`.
1604
1103
  *
1605
1104
  * The output row type of the combined query must match `this` query.
1606
1105
  *
1607
- * @xample
1106
+ * ### Examples
1107
+ *
1608
1108
  * ```ts
1609
1109
  * db.selectFrom('person')
1610
1110
  * .select(['id', 'first_name as name'])
@@ -1612,13 +1112,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1612
1112
  * .orderBy('name')
1613
1113
  * ```
1614
1114
  */
1615
- unionAll(expression: UnionExpression<DB, O>): QueryBuilder<DB, TB, O>;
1115
+ unionAll(expression: UnionExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1616
1116
  /**
1617
1117
  * Simply calls the given function passing `this` as the only argument.
1618
1118
  *
1619
1119
  * This method can be useful when adding optional method calls:
1620
1120
  *
1621
- * @example
1121
+ * ### Examples
1122
+ *
1622
1123
  * ```ts
1623
1124
  * db.selectFrom('person')
1624
1125
  * .selectAll()
@@ -1634,7 +1135,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1634
1135
  *
1635
1136
  * The next example uses a helper funtion `log` to log a query:
1636
1137
  *
1637
- * @example
1638
1138
  * ```ts
1639
1139
  * function log<T extends AnyQueryBuilder>(qb: T): T {
1640
1140
  * console.log(qb.compile())
@@ -1651,12 +1151,13 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1651
1151
  /**
1652
1152
  * Gives an alias for the query. This method is only useful for sub queries.
1653
1153
  *
1654
- * @example
1154
+ * ### Examples
1155
+ *
1655
1156
  * ```ts
1656
1157
  * await db.selectFrom('pet')
1657
1158
  * .selectAll('pet')
1658
1159
  * .select(
1659
- * (qb) => qb.subQuery('person')
1160
+ * (qb) => qb.selectFrom('person')
1660
1161
  * .select('first_name')
1661
1162
  * .whereRef('pet.owner_id', '=', 'person.id')
1662
1163
  * .as('owner_first_name')
@@ -1671,8 +1172,9 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1671
1172
  * You should only use this method as the last resort if the types
1672
1173
  * don't support your use case.
1673
1174
  */
1674
- castTo<T>(): QueryBuilder<DB, TB, T>;
1675
- toOperationNode(): QueryNode;
1175
+ castTo<T>(): SelectQueryBuilder<DB, TB, T>;
1176
+ withPlugin(plugin: KyselyPlugin): SelectQueryBuilder<DB, TB, O>;
1177
+ toOperationNode(): SelectQueryNode;
1676
1178
  compile(): CompiledQuery;
1677
1179
  /**
1678
1180
  * Executes the query and returns an array of rows.
@@ -1695,18 +1197,18 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1695
1197
  */
1696
1198
  executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<O>;
1697
1199
  }
1698
- export interface QueryBuilderProps {
1200
+ export interface SelectQueryBuilderProps {
1699
1201
  readonly queryId: QueryId;
1700
- readonly queryNode: QueryNode;
1202
+ readonly queryNode: SelectQueryNode;
1701
1203
  readonly executor: QueryExecutor;
1702
1204
  readonly parseContext: ParseContext;
1703
1205
  }
1704
1206
  /**
1705
- * {@link QueryBuilder} with an alias. The result of calling {@link QueryBuilder.as}.
1207
+ * {@link SelectQueryBuilder} with an alias. The result of calling {@link SelectQueryBuilder.as}.
1706
1208
  */
1707
1209
  export declare class AliasedQueryBuilder<DB, TB extends keyof DB, O = undefined, A extends string = never> {
1708
1210
  #private;
1709
- constructor(queryBuilder: QueryBuilder<DB, TB, O>, alias: A);
1211
+ constructor(queryBuilder: SelectQueryBuilder<DB, TB, O>, alias: A);
1710
1212
  /**
1711
1213
  * @private
1712
1214
  *
@@ -1718,11 +1220,3 @@ export declare class AliasedQueryBuilder<DB, TB extends keyof DB, O = undefined,
1718
1220
  protected get alias(): A;
1719
1221
  toOperationNode(): AliasNode;
1720
1222
  }
1721
- export declare type NoResultErrorConstructor = new (node: QueryNode) => Error;
1722
- export declare class NoResultError extends Error {
1723
- /**
1724
- * The operation node tree of the query that was executed.
1725
- */
1726
- readonly node: QueryNode;
1727
- constructor(node: QueryNode);
1728
- }