kysely 0.11.2 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/dialect/dialect-adapter-base.d.ts +36 -0
  3. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +36 -0
  4. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +16 -0
  5. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +29 -0
  6. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +3 -0
  7. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  8. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -6
  9. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +36 -0
  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/postgres/postgres-query-compiler.d.ts +3 -0
  14. package/dist/cjs/dialect/postgres/postgres-query-compiler.js +9 -1
  15. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +36 -0
  16. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +6 -2
  17. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +16 -0
  18. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +29 -0
  19. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +3 -0
  20. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
  21. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +6 -6
  22. package/dist/cjs/driver/default-connection-provider.d.ts +4 -0
  23. package/dist/cjs/driver/runtime-driver.d.ts +29 -0
  24. package/dist/cjs/driver/runtime-driver.js +1 -1
  25. package/dist/cjs/driver/single-connection-provider.d.ts +4 -0
  26. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +1 -0
  27. package/dist/cjs/dynamic/dynamic-reference-builder.js +9 -1
  28. package/dist/cjs/dynamic/dynamic.d.ts +6 -7
  29. package/dist/cjs/dynamic/dynamic.js +6 -7
  30. package/dist/cjs/index.d.ts +14 -3
  31. package/dist/cjs/index.js +12 -1
  32. package/dist/cjs/kysely.d.ts +39 -15
  33. package/dist/cjs/kysely.js +32 -9
  34. package/dist/cjs/migration/migration.d.ts +2 -2
  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 +2 -0
  40. package/dist/cjs/operation-node/operation-node-transformer.js +11 -1
  41. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  42. package/dist/cjs/operation-node/operation-node-visitor.js +1 -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/package.json +1 -3
  49. package/dist/cjs/parser/complex-expression-parser.d.ts +9 -0
  50. package/dist/cjs/parser/complex-expression-parser.js +25 -0
  51. package/dist/cjs/parser/filter-parser.d.ts +13 -4
  52. package/dist/cjs/parser/filter-parser.js +21 -24
  53. package/dist/cjs/parser/insert-values-parser.d.ts +7 -10
  54. package/dist/cjs/parser/insert-values-parser.js +31 -39
  55. package/dist/cjs/parser/order-by-parser.d.ts +1 -1
  56. package/dist/cjs/parser/parse-context.d.ts +22 -8
  57. package/dist/cjs/parser/parse-context.js +10 -10
  58. package/dist/cjs/parser/reference-parser.d.ts +8 -7
  59. package/dist/cjs/parser/reference-parser.js +8 -17
  60. package/dist/cjs/parser/returning-parser.d.ts +1 -5
  61. package/dist/cjs/parser/select-parser.d.ts +12 -14
  62. package/dist/cjs/parser/select-parser.js +5 -9
  63. package/dist/cjs/parser/table-parser.d.ts +9 -11
  64. package/dist/cjs/parser/table-parser.js +2 -8
  65. package/dist/cjs/parser/union-parser.d.ts +2 -2
  66. package/dist/cjs/parser/union-parser.js +1 -6
  67. package/dist/cjs/parser/update-set-parser.d.ts +2 -8
  68. package/dist/cjs/parser/update-set-parser.js +6 -26
  69. package/dist/cjs/parser/value-parser.d.ts +9 -6
  70. package/dist/cjs/parser/value-parser.js +7 -30
  71. package/dist/cjs/parser/with-parser.d.ts +6 -3
  72. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +34 -0
  73. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  74. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  75. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  76. package/dist/cjs/query-builder/delete-query-builder.d.ts +647 -0
  77. package/dist/cjs/query-builder/delete-query-builder.js +185 -0
  78. package/dist/cjs/query-builder/expression-builder.d.ts +8 -6
  79. package/dist/cjs/query-builder/expression-builder.js +3 -3
  80. package/dist/cjs/query-builder/function-builder.d.ts +2 -1
  81. package/dist/cjs/query-builder/function-builder.js +2 -1
  82. package/dist/cjs/query-builder/having-interface.d.ts +49 -0
  83. package/dist/cjs/query-builder/having-interface.js +2 -0
  84. package/dist/cjs/query-builder/insert-query-builder.d.ts +504 -0
  85. package/dist/cjs/query-builder/insert-query-builder.js +256 -0
  86. package/dist/cjs/query-builder/insert-result.d.ts +3 -2
  87. package/dist/cjs/query-builder/insert-result.js +3 -2
  88. package/dist/cjs/query-builder/join-builder.d.ts +19 -20
  89. package/dist/cjs/query-builder/join-builder.js +12 -12
  90. package/dist/cjs/query-builder/join-interface.d.ts +130 -0
  91. package/dist/cjs/query-builder/join-interface.js +2 -0
  92. package/dist/cjs/query-builder/no-result-error.d.ts +9 -0
  93. package/dist/cjs/query-builder/no-result-error.js +14 -0
  94. package/dist/cjs/query-builder/returning-interface.d.ts +73 -0
  95. package/dist/cjs/query-builder/returning-interface.js +2 -0
  96. package/dist/cjs/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -634
  97. package/dist/cjs/query-builder/select-query-builder.js +571 -0
  98. package/dist/cjs/query-builder/update-query-builder.d.ts +735 -0
  99. package/dist/cjs/query-builder/update-query-builder.js +279 -0
  100. package/dist/cjs/query-builder/where-interface.d.ts +378 -0
  101. package/dist/cjs/query-builder/where-interface.js +2 -0
  102. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  103. package/dist/cjs/query-compiler/default-query-compiler.js +22 -5
  104. package/dist/cjs/query-creator.d.ts +42 -40
  105. package/dist/cjs/query-creator.js +33 -28
  106. package/dist/cjs/query-executor/query-executor.d.ts +1 -1
  107. package/dist/cjs/query-executor/query-executor.js +1 -1
  108. package/dist/cjs/raw-builder/raw-builder.d.ts +2 -0
  109. package/dist/cjs/raw-builder/raw-builder.js +6 -0
  110. package/dist/cjs/schema/alter-table-builder.d.ts +218 -2
  111. package/dist/cjs/schema/column-definition-builder.d.ts +135 -20
  112. package/dist/cjs/schema/create-index-builder.d.ts +2 -1
  113. package/dist/cjs/schema/create-index-builder.js +2 -1
  114. package/dist/cjs/schema/create-table-builder.d.ts +26 -9
  115. package/dist/cjs/schema/create-table-builder.js +42 -9
  116. package/dist/cjs/schema/create-view-builder.d.ts +17 -3
  117. package/dist/cjs/schema/create-view-builder.js +25 -16
  118. package/dist/cjs/schema/schema.d.ts +18 -11
  119. package/dist/cjs/schema/schema.js +18 -11
  120. package/dist/cjs/util/log.d.ts +11 -8
  121. package/dist/cjs/util/log.js +25 -12
  122. package/dist/cjs/util/type-utils.d.ts +7 -7
  123. package/dist/esm/dialect/dialect-adapter-base.d.ts +36 -0
  124. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +36 -0
  125. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +16 -0
  126. package/dist/esm/dialect/mysql/mysql-driver.d.ts +29 -0
  127. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +3 -0
  128. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  129. package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -6
  130. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +36 -0
  131. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +16 -0
  132. package/dist/esm/dialect/postgres/postgres-driver.d.ts +29 -0
  133. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +3 -0
  134. package/dist/esm/dialect/postgres/postgres-query-compiler.d.ts +3 -0
  135. package/dist/esm/dialect/postgres/postgres-query-compiler.js +9 -1
  136. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +36 -0
  137. package/dist/esm/dialect/sqlite/sqlite-adapter.js +6 -2
  138. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +16 -0
  139. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +29 -0
  140. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +3 -0
  141. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
  142. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +6 -6
  143. package/dist/esm/driver/default-connection-provider.d.ts +4 -0
  144. package/dist/esm/driver/runtime-driver.d.ts +29 -0
  145. package/dist/esm/driver/runtime-driver.js +1 -1
  146. package/dist/esm/driver/single-connection-provider.d.ts +4 -0
  147. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +1 -0
  148. package/dist/esm/dynamic/dynamic-reference-builder.js +7 -0
  149. package/dist/esm/dynamic/dynamic.d.ts +6 -7
  150. package/dist/esm/dynamic/dynamic.js +6 -7
  151. package/dist/esm/index.d.ts +14 -3
  152. package/dist/esm/index.js +12 -1
  153. package/dist/esm/kysely.d.ts +39 -15
  154. package/dist/esm/kysely.js +32 -9
  155. package/dist/esm/migration/migration.d.ts +2 -2
  156. package/dist/esm/operation-node/create-table-node.d.ts +6 -2
  157. package/dist/esm/operation-node/create-table-node.js +6 -6
  158. package/dist/esm/operation-node/create-view-node.d.ts +1 -0
  159. package/dist/esm/operation-node/insert-query-node.d.ts +4 -4
  160. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  161. package/dist/esm/operation-node/operation-node-transformer.js +11 -1
  162. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  163. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  164. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  165. package/dist/esm/operation-node/query-node.d.ts +0 -2
  166. package/dist/esm/operation-node/query-node.js +0 -10
  167. package/dist/esm/operation-node/values-node.d.ts +15 -0
  168. package/dist/esm/operation-node/values-node.js +15 -0
  169. package/dist/esm/package.json +1 -3
  170. package/dist/esm/parser/complex-expression-parser.d.ts +9 -0
  171. package/dist/esm/parser/complex-expression-parser.js +20 -0
  172. package/dist/esm/parser/filter-parser.d.ts +13 -4
  173. package/dist/esm/parser/filter-parser.js +21 -24
  174. package/dist/esm/parser/insert-values-parser.d.ts +7 -10
  175. package/dist/esm/parser/insert-values-parser.js +31 -38
  176. package/dist/esm/parser/order-by-parser.d.ts +1 -1
  177. package/dist/esm/parser/parse-context.d.ts +22 -8
  178. package/dist/esm/parser/parse-context.js +10 -10
  179. package/dist/esm/parser/reference-parser.d.ts +8 -7
  180. package/dist/esm/parser/reference-parser.js +9 -18
  181. package/dist/esm/parser/returning-parser.d.ts +1 -5
  182. package/dist/esm/parser/select-parser.d.ts +12 -14
  183. package/dist/esm/parser/select-parser.js +6 -10
  184. package/dist/esm/parser/table-parser.d.ts +9 -11
  185. package/dist/esm/parser/table-parser.js +3 -9
  186. package/dist/esm/parser/union-parser.d.ts +2 -2
  187. package/dist/esm/parser/union-parser.js +1 -6
  188. package/dist/esm/parser/update-set-parser.d.ts +2 -8
  189. package/dist/esm/parser/update-set-parser.js +5 -24
  190. package/dist/esm/parser/value-parser.d.ts +9 -6
  191. package/dist/esm/parser/value-parser.js +8 -31
  192. package/dist/esm/parser/with-parser.d.ts +6 -3
  193. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +34 -0
  194. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  195. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  196. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  197. package/dist/esm/query-builder/delete-query-builder.d.ts +647 -0
  198. package/dist/esm/query-builder/delete-query-builder.js +181 -0
  199. package/dist/esm/query-builder/expression-builder.d.ts +8 -6
  200. package/dist/esm/query-builder/expression-builder.js +3 -3
  201. package/dist/esm/query-builder/function-builder.d.ts +2 -1
  202. package/dist/esm/query-builder/function-builder.js +2 -1
  203. package/dist/esm/query-builder/having-interface.d.ts +49 -0
  204. package/dist/esm/query-builder/having-interface.js +1 -0
  205. package/dist/esm/query-builder/insert-query-builder.d.ts +504 -0
  206. package/dist/esm/query-builder/insert-query-builder.js +252 -0
  207. package/dist/esm/query-builder/insert-result.d.ts +3 -2
  208. package/dist/esm/query-builder/insert-result.js +3 -2
  209. package/dist/esm/query-builder/join-builder.d.ts +19 -20
  210. package/dist/esm/query-builder/join-builder.js +12 -12
  211. package/dist/esm/query-builder/join-interface.d.ts +130 -0
  212. package/dist/esm/query-builder/join-interface.js +1 -0
  213. package/dist/esm/query-builder/no-result-error.d.ts +9 -0
  214. package/dist/esm/query-builder/no-result-error.js +10 -0
  215. package/dist/esm/query-builder/returning-interface.d.ts +73 -0
  216. package/dist/esm/query-builder/returning-interface.js +1 -0
  217. package/dist/esm/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -634
  218. package/dist/esm/query-builder/select-query-builder.js +566 -0
  219. package/dist/esm/query-builder/update-query-builder.d.ts +735 -0
  220. package/dist/esm/query-builder/update-query-builder.js +275 -0
  221. package/dist/esm/query-builder/where-interface.d.ts +378 -0
  222. package/dist/esm/query-builder/where-interface.js +1 -0
  223. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  224. package/dist/esm/query-compiler/default-query-compiler.js +22 -5
  225. package/dist/esm/query-creator.d.ts +42 -40
  226. package/dist/esm/query-creator.js +33 -28
  227. package/dist/esm/query-executor/query-executor.d.ts +1 -1
  228. package/dist/esm/query-executor/query-executor.js +1 -1
  229. package/dist/esm/raw-builder/raw-builder.d.ts +2 -0
  230. package/dist/esm/raw-builder/raw-builder.js +6 -0
  231. package/dist/esm/schema/alter-table-builder.d.ts +218 -2
  232. package/dist/esm/schema/column-definition-builder.d.ts +135 -20
  233. package/dist/esm/schema/create-index-builder.d.ts +2 -1
  234. package/dist/esm/schema/create-index-builder.js +2 -1
  235. package/dist/esm/schema/create-table-builder.d.ts +26 -9
  236. package/dist/esm/schema/create-table-builder.js +43 -10
  237. package/dist/esm/schema/create-view-builder.d.ts +17 -3
  238. package/dist/esm/schema/create-view-builder.js +25 -16
  239. package/dist/esm/schema/schema.d.ts +18 -11
  240. package/dist/esm/schema/schema.js +18 -11
  241. package/dist/esm/util/log.d.ts +11 -8
  242. package/dist/esm/util/log.js +25 -12
  243. package/dist/esm/util/type-utils.d.ts +7 -7
  244. package/package.json +9 -7
  245. package/dist/cjs/query-builder/query-builder.js +0 -1067
  246. 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,480 +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>;
872
- /**
873
- * Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a left join
874
- * instead of an inner join.
875
- */
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>;
878
- /**
879
- * Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a right join
880
- * instead of an inner join.
881
- */
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>;
884
- /**
885
- * Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a full join
886
- * instead of an inner join.
887
- */
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
- values(row: InsertObject<DB, TB>): QueryBuilder<DB, TB, O>;
1007
- values(row: ReadonlyArray<InsertObject<DB, TB>>): QueryBuilder<DB, TB, O>;
1008
- /**
1009
- * Ignores the insert if the column or constraint given as the first
1010
- * argument conflicts with the current rows in the database. The
1011
- * default behavior without this method call is to throw an error.
1012
- *
1013
- * For example if a table has a field `name` that has a unique constraint
1014
- * and you try to insert a row with a `name` that already exists in the
1015
- * database, calling `onConflictDoNothing('name')` will ignore the conflict
1016
- * and do nothing. By default the query would throw.
1017
- *
1018
- * Only some dialects like PostgreSQL and SQLite implement the `on conflict`
1019
- * statement. On MySQL you should use the {@link ignore} method to achieve
1020
- * similar results.
1021
- *
1022
- * Also see the {@link QueryBuilder.onConflictUpdate | onConflictUpdate}
1023
- * method if you want to perform an update in case of a conflict (upsert).
1024
- *
1025
- * @example
1026
- * ```ts
1027
- * await db
1028
- * .insertInto('pet')
1029
- * .values({
1030
- * id: db.generated,
1031
- * name: 'Catto',
1032
- * species: 'cat',
1033
- * })
1034
- * .onConflictDoNothing('name')
1035
- * .execute()
1036
- * ```
1037
- *
1038
- * The generated SQL (PostgreSQL):
1039
- *
1040
- * ```sql
1041
- * insert into "pet" ("name", "species")
1042
- * values ($1, $2)
1043
- * on conflict ("name") do nothing
1044
- * ```
1045
- *
1046
- * @example
1047
- * You can provied the name of the constraint instead of a column name
1048
- *
1049
- * ```ts
1050
- * await db
1051
- * .insertInto('pet')
1052
- * .values({
1053
- * id: db.generated,
1054
- * name: 'Catto',
1055
- * species: 'cat',
1056
- * })
1057
- * .onConflictDoNothing({
1058
- * constraint: 'pet_name_key'
1059
- * })
1060
- * .execute()
1061
- * ```
1062
- *
1063
- * The generated SQL (PostgreSQL):
1064
- *
1065
- * ```sql
1066
- * insert into "pet" ("name", "species")
1067
- * values ($1, $2)
1068
- * on conflict on constraint "pet_name_key"
1069
- * do nothing
1070
- * ```
1071
- */
1072
- onConflictDoNothing(column: AnyColumn<DB, TB>): QueryBuilder<DB, TB, O>;
1073
- onConflictDoNothing(columns: ReadonlyArray<AnyColumn<DB, TB>>): QueryBuilder<DB, TB, O>;
1074
- onConflictDoNothing(constraint: OnConflictConstraintTarget): QueryBuilder<DB, TB, O>;
1075
- /**
1076
- * Changes an `insert into` query to an `insert ignore into` query.
1077
- *
1078
- * If you use the ignore modifier, ignorable errors that occur while executing the
1079
- * insert statement are ignored. For example, without ignore, a row that duplicates
1080
- * an existing unique index or primary key value in the table causes a duplicate-key
1081
- * error and the statement is aborted. With ignore, the row is discarded and no error
1082
- * occurs.
1083
- *
1084
- * This is only supported on some dialects like MySQL. On most dialects you should
1085
- * use the {@link onConflictDoNothing} method.
1086
- *
1087
- * @example
1088
- * ```ts
1089
- * await db.insertInto('person')
1090
- * .ignore()
1091
- * .values(values)
1092
- * .execute()
1093
- * ```
1094
- */
1095
- ignore(): QueryBuilder<DB, TB, O>;
1096
- /**
1097
- * Ignores an insert if the column or constraint given as the first
1098
- * argument conflicts with the current rows in the database and
1099
- * performs an update on the conflicting row instead. This method
1100
- * can be used to implement an upsert operation.
1101
- *
1102
- * For example if a table has a field `name` that has a unique constraint
1103
- * and you try to insert a row with a `name` that already exists in the
1104
- * database, calling `onConfictUpdate('name', { species: 'hamster' })`
1105
- * will set the conflicting row's `species` field to value `'hamster'`.
1106
- * By default the query would throw.
1107
- *
1108
- * The second argument (updates) can be anything the {@link QueryBuilder.set | set}
1109
- * method accepts.
1110
- *
1111
- * The `on conflict do update` statement is only implemented by some dialects
1112
- * like PostgreSQL and SQLite. On MySQL you should use the {@link onDuplicateKeyUpdate}
1113
- * method instead.
1114
- *
1115
- * Also see the {@link QueryBuilder.onConflictDoNothing | onConflictDoNothing}
1116
- * method.
1117
- *
1118
- * @example
1119
- * ```ts
1120
- * await db
1121
- * .insertInto('pet')
1122
- * .values({
1123
- * id: db.generated,
1124
- * name: 'Catto',
1125
- * species: 'cat',
1126
- * })
1127
- * .onConflictUpdate('name', { species: 'hamster' })
1128
- * .execute()
1129
- * ```
1130
- *
1131
- * The generated SQL (PostgreSQL):
1132
- *
1133
- * ```sql
1134
- * insert into "pet" ("name", "species")
1135
- * values ($1, $2)
1136
- * on conflict ("name") do update set "species" = $3
1137
- * ```
1138
- *
1139
- * @example
1140
- * You can provied the name of the constraint instead of a column name
1141
- *
1142
- * ```ts
1143
- * await db
1144
- * .insertInto('pet')
1145
- * .values({
1146
- * id: db.generated,
1147
- * name: 'Catto',
1148
- * species: 'cat',
1149
- * })
1150
- * .onConflictUpdate(
1151
- * { constraint: 'pet_name_key' },
1152
- * { species: 'hamster' }
1153
- * )
1154
- * .execute()
1155
- * ```
1156
- *
1157
- * The generated SQL (PostgreSQL):
1158
- *
1159
- * ```sql
1160
- * insert into "pet" ("name", "species")
1161
- * values ($1, $2)
1162
- * on conflict on constraint "pet_name_key"
1163
- * do update set "species" = $3
1164
- * ```
1165
- */
1166
- onConflictUpdate(column: AnyColumn<DB, TB>, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
1167
- onConflictUpdate(columns: ReadonlyArray<AnyColumn<DB, TB>>, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
1168
- onConflictUpdate(constraint: OnConflictConstraintTarget, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
1169
- /**
1170
- * Adds `on duplicate key update` to an insert query.
1171
- *
1172
- * If you specify `on duplicate key update`, and a row is inserted that would cause
1173
- * a duplicate value in a unique index or primary key, an update of the old row occurs.
1174
- *
1175
- * This is only implemented by some dialects like MySQL. On most dialects you should
1176
- * use {@link onConflictUpdate} instead.
1177
- *
1178
- * @example
1179
- * ```ts
1180
- * await db
1181
- * .insertInto('person')
1182
- * .values(values)
1183
- * .onDuplicateKeyUpdate({ species: 'hamster' })
1184
- * ```
1185
- */
1186
- onDuplicateKeyUpdate(updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
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>;
1187
846
  /**
1188
- * Sets the values to update for an {@link Kysely.updateTable | update} query.
1189
- *
1190
- * This method takes an object whose keys are column names and values are
1191
- * values to update. In addition to the column's type, the values can be `raw`
1192
- * instances or select queries.
1193
- *
1194
- * The return value of an update query is an instance of {@link UpdateResult}.
1195
- * You can use the {@link QueryBuilder.returning | returning} method on
1196
- * supported databases to get out the updated rows.
1197
- *
1198
- * @example
1199
- * Update a row in `person` table:
1200
- *
1201
- * ```ts
1202
- * const result = await db
1203
- * .updateTable('person')
1204
- * .set({
1205
- * first_name: 'Jennifer',
1206
- * last_name: 'Aniston'
1207
- * })
1208
- * .where('id', '=', 1)
1209
- * .executeTakeFirst()
1210
- *
1211
- * console.log(result.numUpdatedRows)
1212
- * ```
1213
- *
1214
- * The generated SQL (PostgreSQL):
1215
- *
1216
- * ```sql
1217
- * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3
1218
- * ```
1219
- *
1220
- * @example
1221
- * On postgresql you ca chain `returning` to the query to get
1222
- * the updated rows' columns (or any other expression) as the
1223
- * return value:
1224
- *
1225
- * ```ts
1226
- * const row = await db
1227
- * .updateTable('person')
1228
- * .set({
1229
- * first_name: 'Jennifer',
1230
- * last_name: 'Aniston'
1231
- * })
1232
- * .where('id', '=', 1)
1233
- * .returning('id')
1234
- * .executeTakeFirstOrThrow()
1235
- *
1236
- * row.id
1237
- * ```
1238
- *
1239
- * The generated SQL (PostgreSQL):
1240
- *
1241
- * ```sql
1242
- * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3 returning "id"
1243
- * ```
1244
- *
1245
- * @example
1246
- * In addition to primitives, the values can also be `raw` expressions or
1247
- * select queries:
1248
- *
1249
- * ```ts
1250
- * const result = await db
1251
- * .updateTable('person')
1252
- * .set({
1253
- * first_name: 'Jennifer',
1254
- * last_name: db.raw('? || ?', ['Ani', 'ston']),
1255
- * age: db.selectFrom('person').select(raw('avg(age)')),
1256
- * })
1257
- * .where('id', '=', 1)
1258
- * .executeTakeFirst()
1259
- *
1260
- * console.log(result.numUpdatedRows)
1261
- * ```
1262
- *
1263
- * The generated SQL (PostgreSQL):
1264
- *
1265
- * ```sql
1266
- * update "person" set
1267
- * "first_name" = $1,
1268
- * "last_name" = $2 || $3,
1269
- * "age" = (select avg(age) from "person")
1270
- * where "id" = $4
1271
- * ```
847
+ * Just like {@link innerJoin} but adds a left join nstead of an inner join.
1272
848
  */
1273
- set(row: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
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>;
1274
851
  /**
1275
- * Allows you to return data from modified rows.
1276
- *
1277
- * On supported databases like PostgreSQL, this method can be chained to
1278
- * `insert`, `update` and `delete` queries to return data.
1279
- *
1280
- * Note that on SQLite you need to give aliases for the expressions to avoid
1281
- * [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
1282
- * For example `.returning('id as id')`.
1283
- *
1284
- * Also see the {@link QueryBuilder.returningAll | returningAll} method.
1285
- *
1286
- * @example
1287
- * Return one column:
1288
- *
1289
- * ```ts
1290
- * const { id } = await db
1291
- * .insertInto('person')
1292
- * .values({
1293
- * id: db.generated,
1294
- * first_name: 'Jennifer',
1295
- * last_name: 'Aniston'
1296
- * })
1297
- * .returning('id')
1298
- * .executeTakeFirst()
1299
- * ```
1300
- *
1301
- * @example
1302
- * Return multiple columns:
1303
- *
1304
- * ```ts
1305
- * const { id, first_name } = await db
1306
- * .insertInto('person')
1307
- * .values({
1308
- * id: db.generated,
1309
- * first_name: 'Jennifer',
1310
- * last_name: 'Aniston'
1311
- * })
1312
- * .returning(['id', 'last_name'])
1313
- * .executeTakeFirst()
1314
- * ```
1315
- *
1316
- * @example
1317
- * Return arbitrary expressions:
1318
- *
1319
- * ```ts
1320
- * const { raw } = db
1321
- *
1322
- * const { id, full_name, first_pet_id } = await db
1323
- * .insertInto('person')
1324
- * .values({
1325
- * id: db.generated,
1326
- * first_name: 'Jennifer',
1327
- * last_name: 'Aniston'
1328
- * })
1329
- * .returning([
1330
- * 'id as id',
1331
- * raw<string>(`concat(first_name, ' ', last_name)`).as('full_name'),
1332
- * (qb) => qb.subQuery('pets').select('pet.id').limit(1).as('first_pet_id')
1333
- * ])
1334
- * .executeTakeFirst()
1335
- * ```
852
+ * Just like {@link innerJoin} but adds a right join instead of an inner join.
1336
853
  */
1337
- returning<S extends SelectExpression<DB, TB>>(selections: ReadonlyArray<S>): QueryBuilderWithReturning<DB, TB, O, S>;
1338
- returning<S extends SelectExpression<DB, TB>>(selection: S): QueryBuilderWithReturning<DB, TB, O, S>;
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>;
1339
856
  /**
1340
- * Adds a `returning *` to an insert/update/delete query on databases
1341
- * that support `returning` such as PostgreSQL.
857
+ * Just like {@link innerJoin} but adds a full join instead of an inner join.
1342
858
  */
1343
- 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>;
1344
861
  /**
1345
862
  * Adds an `order by` clause to the query.
1346
863
  *
@@ -1350,7 +867,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1350
867
  * The first argument is the expression to order by and the second is the
1351
868
  * order (`asc` or `desc`).
1352
869
  *
1353
- * @example
870
+ * ### Examples
871
+ *
1354
872
  * ```ts
1355
873
  * await db
1356
874
  * .selectFrom('person')
@@ -1368,7 +886,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1368
886
  * order by "id" asc, "fn" desc
1369
887
  * ```
1370
888
  *
1371
- * @example
1372
889
  * The order by expression can also be a `raw` expression or a subquery
1373
890
  * in addition to column references:
1374
891
  *
@@ -1376,7 +893,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1376
893
  * await db
1377
894
  * .selectFrom('person')
1378
895
  * .selectAll()
1379
- * .orderBy((qb) => qb.subQuery('pet')
896
+ * .orderBy((qb) => qb.selectFrom('pet')
1380
897
  * .select('pet.name')
1381
898
  * .whereRef('pet.owner_id', '=', 'person.id')
1382
899
  * .limit(1)
@@ -1401,7 +918,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1401
918
  * concat(first_name, last_name) asc
1402
919
  * ```
1403
920
  *
1404
- * @example
1405
921
  * `dynamic.ref` can be used to refer to columns not known at
1406
922
  * compile time:
1407
923
  *
@@ -1427,11 +943,12 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1427
943
  * order by "fn" asc
1428
944
  * ```
1429
945
  */
1430
- 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>;
1431
947
  /**
1432
948
  * Adds a `group by` clause to the query.
1433
949
  *
1434
- * @example
950
+ * ### Examples
951
+ *
1435
952
  * ```ts
1436
953
  * await db
1437
954
  * .selectFrom('person')
@@ -1451,11 +968,10 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1451
968
  * group by "first_name"
1452
969
  * ```
1453
970
  *
1454
- * @example
1455
971
  * `groupBy` also accepts an array:
1456
972
  *
1457
973
  * ```ts
1458
- * const { raw } = db
974
+ * const { raw } = db
1459
975
  *
1460
976
  * await db
1461
977
  * .selectFrom('person')
@@ -1479,12 +995,11 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1479
995
  * group by "first_name", "last_name"
1480
996
  * ```
1481
997
  *
1482
- * @example
1483
998
  * The group by expressions can also be subqueries or
1484
999
  * raw expressions:
1485
1000
  *
1486
1001
  * ```ts
1487
- * const { raw } = db
1002
+ * const { raw } = db
1488
1003
  *
1489
1004
  * await db
1490
1005
  * .selectFrom('person')
@@ -1495,12 +1010,11 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1495
1010
  * ])
1496
1011
  * .groupBy([
1497
1012
  * raw('concat(first_name, last_name)'),
1498
- * (qb) => qb.subQuery('pet').select('id').limit(1)
1013
+ * (qb) => qb.selectFrom('pet').select('id').limit(1)
1499
1014
  * ])
1500
1015
  * .execute()
1501
1016
  * ```
1502
1017
  *
1503
- * @example
1504
1018
  * `dynamic.ref` can be used to refer to columns not known at
1505
1019
  * compile time:
1506
1020
  *
@@ -1526,12 +1040,13 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1526
1040
  * group by "first_name"
1527
1041
  * ```
1528
1042
  */
1529
- groupBy(orderBy: ReadonlyArray<ReferenceExpression<DB, TB>>): QueryBuilder<DB, TB, O>;
1530
- 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>;
1531
1045
  /**
1532
1046
  * Adds a limit clause to the query.
1533
1047
  *
1534
- * @example
1048
+ * ### Examples
1049
+ *
1535
1050
  * Select the first 10 rows of the result:
1536
1051
  *
1537
1052
  * ```ts
@@ -1541,7 +1056,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1541
1056
  * .limit(10)
1542
1057
  * ```
1543
1058
  *
1544
- * @example
1545
1059
  * Select rows from index 10 to index 19 of the result:
1546
1060
  *
1547
1061
  * ```ts
@@ -1552,11 +1066,12 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1552
1066
  * .limit(10)
1553
1067
  * ```
1554
1068
  */
1555
- limit(limit: number): QueryBuilder<DB, TB, O>;
1069
+ limit(limit: number): SelectQueryBuilder<DB, TB, O>;
1556
1070
  /**
1557
1071
  * Adds an offset clause to the query.
1558
1072
  *
1559
- * @example
1073
+ * ### Examples
1074
+ *
1560
1075
  * Select rows from index 10 to index 19 of the result:
1561
1076
  *
1562
1077
  * ```ts
@@ -1567,13 +1082,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1567
1082
  * .limit(10)
1568
1083
  * ```
1569
1084
  */
1570
- offset(offset: number): QueryBuilder<DB, TB, O>;
1085
+ offset(offset: number): SelectQueryBuilder<DB, TB, O>;
1571
1086
  /**
1572
1087
  * Combines another select query or raw expression to this query using `union`.
1573
1088
  *
1574
1089
  * The output row type of the combined query must match `this` query.
1575
1090
  *
1576
- * @xample
1091
+ * ### Examples
1092
+ *
1577
1093
  * ```ts
1578
1094
  * db.selectFrom('person')
1579
1095
  * .select(['id', 'first_name as name'])
@@ -1581,13 +1097,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1581
1097
  * .orderBy('name')
1582
1098
  * ```
1583
1099
  */
1584
- union(expression: UnionExpression<DB, O>): QueryBuilder<DB, TB, O>;
1100
+ union(expression: UnionExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1585
1101
  /**
1586
1102
  * Combines another select query or raw expression to this query using `union all`.
1587
1103
  *
1588
1104
  * The output row type of the combined query must match `this` query.
1589
1105
  *
1590
- * @xample
1106
+ * ### Examples
1107
+ *
1591
1108
  * ```ts
1592
1109
  * db.selectFrom('person')
1593
1110
  * .select(['id', 'first_name as name'])
@@ -1595,13 +1112,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1595
1112
  * .orderBy('name')
1596
1113
  * ```
1597
1114
  */
1598
- unionAll(expression: UnionExpression<DB, O>): QueryBuilder<DB, TB, O>;
1115
+ unionAll(expression: UnionExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1599
1116
  /**
1600
1117
  * Simply calls the given function passing `this` as the only argument.
1601
1118
  *
1602
1119
  * This method can be useful when adding optional method calls:
1603
1120
  *
1604
- * @example
1121
+ * ### Examples
1122
+ *
1605
1123
  * ```ts
1606
1124
  * db.selectFrom('person')
1607
1125
  * .selectAll()
@@ -1617,7 +1135,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1617
1135
  *
1618
1136
  * The next example uses a helper funtion `log` to log a query:
1619
1137
  *
1620
- * @example
1621
1138
  * ```ts
1622
1139
  * function log<T extends AnyQueryBuilder>(qb: T): T {
1623
1140
  * console.log(qb.compile())
@@ -1634,12 +1151,13 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1634
1151
  /**
1635
1152
  * Gives an alias for the query. This method is only useful for sub queries.
1636
1153
  *
1637
- * @example
1154
+ * ### Examples
1155
+ *
1638
1156
  * ```ts
1639
1157
  * await db.selectFrom('pet')
1640
1158
  * .selectAll('pet')
1641
1159
  * .select(
1642
- * (qb) => qb.subQuery('person')
1160
+ * (qb) => qb.selectFrom('person')
1643
1161
  * .select('first_name')
1644
1162
  * .whereRef('pet.owner_id', '=', 'person.id')
1645
1163
  * .as('owner_first_name')
@@ -1654,8 +1172,9 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1654
1172
  * You should only use this method as the last resort if the types
1655
1173
  * don't support your use case.
1656
1174
  */
1657
- castTo<T>(): QueryBuilder<DB, TB, T>;
1658
- toOperationNode(): QueryNode;
1175
+ castTo<T>(): SelectQueryBuilder<DB, TB, T>;
1176
+ withPlugin(plugin: KyselyPlugin): SelectQueryBuilder<DB, TB, O>;
1177
+ toOperationNode(): SelectQueryNode;
1659
1178
  compile(): CompiledQuery;
1660
1179
  /**
1661
1180
  * Executes the query and returns an array of rows.
@@ -1678,18 +1197,18 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
1678
1197
  */
1679
1198
  executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<O>;
1680
1199
  }
1681
- export interface QueryBuilderProps {
1200
+ export interface SelectQueryBuilderProps {
1682
1201
  readonly queryId: QueryId;
1683
- readonly queryNode: QueryNode;
1202
+ readonly queryNode: SelectQueryNode;
1684
1203
  readonly executor: QueryExecutor;
1685
1204
  readonly parseContext: ParseContext;
1686
1205
  }
1687
1206
  /**
1688
- * {@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}.
1689
1208
  */
1690
1209
  export declare class AliasedQueryBuilder<DB, TB extends keyof DB, O = undefined, A extends string = never> {
1691
1210
  #private;
1692
- constructor(queryBuilder: QueryBuilder<DB, TB, O>, alias: A);
1211
+ constructor(queryBuilder: SelectQueryBuilder<DB, TB, O>, alias: A);
1693
1212
  /**
1694
1213
  * @private
1695
1214
  *
@@ -1701,11 +1220,3 @@ export declare class AliasedQueryBuilder<DB, TB extends keyof DB, O = undefined,
1701
1220
  protected get alias(): A;
1702
1221
  toOperationNode(): AliasNode;
1703
1222
  }
1704
- export declare type NoResultErrorConstructor = new (node: QueryNode) => Error;
1705
- export declare class NoResultError extends Error {
1706
- /**
1707
- * The operation node tree of the query that was executed.
1708
- */
1709
- readonly node: QueryNode;
1710
- constructor(node: QueryNode);
1711
- }