kysely 0.11.1 → 0.12.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 (216) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  3. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -6
  4. package/dist/cjs/dialect/postgres/postgres-query-compiler.d.ts +3 -0
  5. package/dist/cjs/dialect/postgres/postgres-query-compiler.js +9 -1
  6. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +6 -2
  7. package/dist/cjs/dialect/sqlite/sqlite-driver.js +7 -7
  8. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
  9. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +6 -6
  10. package/dist/cjs/driver/runtime-driver.js +1 -1
  11. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +1 -0
  12. package/dist/cjs/dynamic/dynamic-reference-builder.js +9 -1
  13. package/dist/cjs/dynamic/dynamic.d.ts +6 -7
  14. package/dist/cjs/dynamic/dynamic.js +6 -7
  15. package/dist/cjs/index.d.ts +51 -33
  16. package/dist/cjs/index.js +48 -30
  17. package/dist/cjs/kysely.d.ts +39 -15
  18. package/dist/cjs/kysely.js +32 -9
  19. package/dist/cjs/migration/migration.d.ts +2 -2
  20. package/dist/cjs/operation-node/alias-node.d.ts +1 -1
  21. package/dist/cjs/operation-node/create-table-node.d.ts +6 -2
  22. package/dist/cjs/operation-node/create-table-node.js +6 -6
  23. package/dist/cjs/operation-node/create-view-node.d.ts +1 -0
  24. package/dist/cjs/operation-node/insert-query-node.d.ts +4 -4
  25. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  26. package/dist/cjs/operation-node/operation-node-transformer.js +11 -1
  27. package/dist/cjs/operation-node/operation-node-utils.d.ts +1 -1
  28. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  29. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  30. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  31. package/dist/cjs/operation-node/query-node.d.ts +0 -2
  32. package/dist/cjs/operation-node/query-node.js +0 -10
  33. package/dist/cjs/operation-node/values-node.d.ts +15 -0
  34. package/dist/cjs/operation-node/values-node.js +18 -0
  35. package/dist/cjs/parser/complex-expression-parser.d.ts +9 -0
  36. package/dist/cjs/parser/complex-expression-parser.js +25 -0
  37. package/dist/cjs/parser/filter-parser.d.ts +13 -3
  38. package/dist/cjs/parser/filter-parser.js +56 -62
  39. package/dist/cjs/parser/insert-values-parser.d.ts +7 -10
  40. package/dist/cjs/parser/insert-values-parser.js +31 -39
  41. package/dist/cjs/parser/order-by-parser.d.ts +1 -1
  42. package/dist/cjs/parser/parse-context.d.ts +8 -8
  43. package/dist/cjs/parser/parse-context.js +10 -10
  44. package/dist/cjs/parser/reference-parser.d.ts +8 -7
  45. package/dist/cjs/parser/reference-parser.js +8 -17
  46. package/dist/cjs/parser/returning-parser.d.ts +1 -5
  47. package/dist/cjs/parser/select-parser.d.ts +12 -14
  48. package/dist/cjs/parser/select-parser.js +5 -9
  49. package/dist/cjs/parser/table-parser.d.ts +9 -11
  50. package/dist/cjs/parser/table-parser.js +2 -8
  51. package/dist/cjs/parser/union-parser.d.ts +2 -2
  52. package/dist/cjs/parser/union-parser.js +1 -6
  53. package/dist/cjs/parser/update-set-parser.d.ts +2 -8
  54. package/dist/cjs/parser/update-set-parser.js +6 -26
  55. package/dist/cjs/parser/value-parser.d.ts +9 -6
  56. package/dist/cjs/parser/value-parser.js +7 -30
  57. package/dist/cjs/parser/with-parser.d.ts +6 -3
  58. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  59. package/dist/cjs/query-builder/delete-query-builder.d.ts +102 -0
  60. package/dist/cjs/query-builder/delete-query-builder.js +185 -0
  61. package/dist/cjs/query-builder/expression-builder.d.ts +8 -6
  62. package/dist/cjs/query-builder/expression-builder.js +3 -3
  63. package/dist/cjs/query-builder/function-builder.d.ts +2 -1
  64. package/dist/cjs/query-builder/function-builder.js +2 -1
  65. package/dist/cjs/query-builder/having-interface.d.ts +49 -0
  66. package/dist/cjs/query-builder/having-interface.js +2 -0
  67. package/dist/cjs/query-builder/insert-query-builder.d.ts +439 -0
  68. package/dist/cjs/query-builder/insert-query-builder.js +256 -0
  69. package/dist/cjs/query-builder/insert-result.d.ts +3 -2
  70. package/dist/cjs/query-builder/insert-result.js +3 -2
  71. package/dist/cjs/query-builder/join-builder.d.ts +22 -20
  72. package/dist/cjs/query-builder/join-builder.js +12 -12
  73. package/dist/cjs/query-builder/join-interface.d.ts +133 -0
  74. package/dist/cjs/query-builder/join-interface.js +2 -0
  75. package/dist/cjs/query-builder/no-result-error.d.ts +9 -0
  76. package/dist/cjs/query-builder/no-result-error.js +14 -0
  77. package/dist/cjs/query-builder/returning-interface.d.ts +73 -0
  78. package/dist/cjs/query-builder/returning-interface.js +2 -0
  79. package/dist/cjs/query-builder/select-query-builder.d.ts +711 -0
  80. package/dist/cjs/query-builder/select-query-builder.js +571 -0
  81. package/dist/cjs/query-builder/update-query-builder.d.ts +190 -0
  82. package/dist/cjs/query-builder/update-query-builder.js +279 -0
  83. package/dist/cjs/query-builder/where-interface.d.ts +381 -0
  84. package/dist/cjs/query-builder/where-interface.js +2 -0
  85. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  86. package/dist/cjs/query-compiler/default-query-compiler.js +22 -5
  87. package/dist/cjs/query-creator.d.ts +42 -40
  88. package/dist/cjs/query-creator.js +33 -28
  89. package/dist/cjs/query-executor/query-executor.d.ts +1 -1
  90. package/dist/cjs/query-executor/query-executor.js +1 -1
  91. package/dist/cjs/raw-builder/raw-builder.d.ts +2 -0
  92. package/dist/cjs/raw-builder/raw-builder.js +6 -0
  93. package/dist/cjs/schema/alter-table-builder.d.ts +2 -2
  94. package/dist/cjs/schema/column-definition-builder.d.ts +27 -20
  95. package/dist/cjs/schema/create-index-builder.d.ts +2 -1
  96. package/dist/cjs/schema/create-index-builder.js +2 -1
  97. package/dist/cjs/schema/create-table-builder.d.ts +26 -9
  98. package/dist/cjs/schema/create-table-builder.js +42 -9
  99. package/dist/cjs/schema/create-view-builder.d.ts +17 -3
  100. package/dist/cjs/schema/create-view-builder.js +25 -16
  101. package/dist/cjs/schema/schema.d.ts +18 -11
  102. package/dist/cjs/schema/schema.js +18 -11
  103. package/dist/cjs/util/dynamic-import.js +1 -1
  104. package/dist/cjs/util/log.d.ts +11 -8
  105. package/dist/cjs/util/log.js +25 -12
  106. package/dist/cjs/util/type-utils.d.ts +7 -7
  107. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  108. package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -6
  109. package/dist/esm/dialect/postgres/postgres-query-compiler.d.ts +3 -0
  110. package/dist/esm/dialect/postgres/postgres-query-compiler.js +9 -1
  111. package/dist/esm/dialect/sqlite/sqlite-adapter.js +6 -2
  112. package/dist/esm/dialect/sqlite/sqlite-driver.js +7 -7
  113. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
  114. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +6 -6
  115. package/dist/esm/driver/runtime-driver.js +1 -1
  116. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +1 -0
  117. package/dist/esm/dynamic/dynamic-reference-builder.js +7 -0
  118. package/dist/esm/dynamic/dynamic.d.ts +6 -7
  119. package/dist/esm/dynamic/dynamic.js +6 -7
  120. package/dist/esm/index.d.ts +51 -33
  121. package/dist/esm/index.js +48 -30
  122. package/dist/esm/kysely.d.ts +39 -15
  123. package/dist/esm/kysely.js +32 -9
  124. package/dist/esm/migration/migration.d.ts +2 -2
  125. package/dist/esm/operation-node/alias-node.d.ts +1 -1
  126. package/dist/esm/operation-node/create-table-node.d.ts +6 -2
  127. package/dist/esm/operation-node/create-table-node.js +6 -6
  128. package/dist/esm/operation-node/create-view-node.d.ts +1 -0
  129. package/dist/esm/operation-node/insert-query-node.d.ts +4 -4
  130. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  131. package/dist/esm/operation-node/operation-node-transformer.js +11 -1
  132. package/dist/esm/operation-node/operation-node-utils.d.ts +1 -1
  133. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  134. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  135. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  136. package/dist/esm/operation-node/query-node.d.ts +0 -2
  137. package/dist/esm/operation-node/query-node.js +0 -10
  138. package/dist/esm/operation-node/values-node.d.ts +15 -0
  139. package/dist/esm/operation-node/values-node.js +15 -0
  140. package/dist/esm/parser/complex-expression-parser.d.ts +9 -0
  141. package/dist/esm/parser/complex-expression-parser.js +20 -0
  142. package/dist/esm/parser/filter-parser.d.ts +13 -3
  143. package/dist/esm/parser/filter-parser.js +55 -62
  144. package/dist/esm/parser/insert-values-parser.d.ts +7 -10
  145. package/dist/esm/parser/insert-values-parser.js +31 -38
  146. package/dist/esm/parser/order-by-parser.d.ts +1 -1
  147. package/dist/esm/parser/parse-context.d.ts +8 -8
  148. package/dist/esm/parser/parse-context.js +10 -10
  149. package/dist/esm/parser/reference-parser.d.ts +8 -7
  150. package/dist/esm/parser/reference-parser.js +9 -18
  151. package/dist/esm/parser/returning-parser.d.ts +1 -5
  152. package/dist/esm/parser/select-parser.d.ts +12 -14
  153. package/dist/esm/parser/select-parser.js +6 -10
  154. package/dist/esm/parser/table-parser.d.ts +9 -11
  155. package/dist/esm/parser/table-parser.js +3 -9
  156. package/dist/esm/parser/union-parser.d.ts +2 -2
  157. package/dist/esm/parser/union-parser.js +1 -6
  158. package/dist/esm/parser/update-set-parser.d.ts +2 -8
  159. package/dist/esm/parser/update-set-parser.js +5 -24
  160. package/dist/esm/parser/value-parser.d.ts +9 -6
  161. package/dist/esm/parser/value-parser.js +8 -31
  162. package/dist/esm/parser/with-parser.d.ts +6 -3
  163. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  164. package/dist/esm/query-builder/delete-query-builder.d.ts +102 -0
  165. package/dist/esm/query-builder/delete-query-builder.js +181 -0
  166. package/dist/esm/query-builder/expression-builder.d.ts +8 -6
  167. package/dist/esm/query-builder/expression-builder.js +3 -3
  168. package/dist/esm/query-builder/function-builder.d.ts +2 -1
  169. package/dist/esm/query-builder/function-builder.js +2 -1
  170. package/dist/esm/query-builder/having-interface.d.ts +49 -0
  171. package/dist/esm/query-builder/having-interface.js +1 -0
  172. package/dist/esm/query-builder/insert-query-builder.d.ts +439 -0
  173. package/dist/esm/query-builder/insert-query-builder.js +252 -0
  174. package/dist/esm/query-builder/insert-result.d.ts +3 -2
  175. package/dist/esm/query-builder/insert-result.js +3 -2
  176. package/dist/esm/query-builder/join-builder.d.ts +22 -20
  177. package/dist/esm/query-builder/join-builder.js +12 -12
  178. package/dist/esm/query-builder/join-interface.d.ts +133 -0
  179. package/dist/esm/query-builder/join-interface.js +1 -0
  180. package/dist/esm/query-builder/no-result-error.d.ts +9 -0
  181. package/dist/esm/query-builder/no-result-error.js +10 -0
  182. package/dist/esm/query-builder/returning-interface.d.ts +73 -0
  183. package/dist/esm/query-builder/returning-interface.js +1 -0
  184. package/dist/esm/query-builder/select-query-builder.d.ts +711 -0
  185. package/dist/esm/query-builder/select-query-builder.js +566 -0
  186. package/dist/esm/query-builder/update-query-builder.d.ts +190 -0
  187. package/dist/esm/query-builder/update-query-builder.js +275 -0
  188. package/dist/esm/query-builder/where-interface.d.ts +381 -0
  189. package/dist/esm/query-builder/where-interface.js +1 -0
  190. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  191. package/dist/esm/query-compiler/default-query-compiler.js +22 -5
  192. package/dist/esm/query-creator.d.ts +42 -40
  193. package/dist/esm/query-creator.js +33 -28
  194. package/dist/esm/query-executor/query-executor.d.ts +1 -1
  195. package/dist/esm/query-executor/query-executor.js +1 -1
  196. package/dist/esm/raw-builder/raw-builder.d.ts +2 -0
  197. package/dist/esm/raw-builder/raw-builder.js +6 -0
  198. package/dist/esm/schema/alter-table-builder.d.ts +2 -2
  199. package/dist/esm/schema/column-definition-builder.d.ts +27 -20
  200. package/dist/esm/schema/create-index-builder.d.ts +2 -1
  201. package/dist/esm/schema/create-index-builder.js +2 -1
  202. package/dist/esm/schema/create-table-builder.d.ts +26 -9
  203. package/dist/esm/schema/create-table-builder.js +43 -10
  204. package/dist/esm/schema/create-view-builder.d.ts +17 -3
  205. package/dist/esm/schema/create-view-builder.js +25 -16
  206. package/dist/esm/schema/schema.d.ts +18 -11
  207. package/dist/esm/schema/schema.js +18 -11
  208. package/dist/esm/util/dynamic-import.js +1 -1
  209. package/dist/esm/util/log.d.ts +11 -8
  210. package/dist/esm/util/log.js +25 -12
  211. package/dist/esm/util/type-utils.d.ts +7 -7
  212. package/package.json +3 -3
  213. package/dist/cjs/query-builder/query-builder.d.ts +0 -1707
  214. package/dist/cjs/query-builder/query-builder.js +0 -1067
  215. package/dist/esm/query-builder/query-builder.d.ts +0 -1707
  216. package/dist/esm/query-builder/query-builder.js +0 -1061
@@ -4,10 +4,11 @@
4
4
  * If the table has an auto incrementing primary key {@link insertId} will hold
5
5
  * the generated id on dialects that support it. For example PostgreSQL doesn't
6
6
  * return the id by default and {@link insertId} is undefined. On PostgreSQL you
7
- * need to use {@link QueryBuilder.returning} or {@link QueryBuilder.returningAll}
7
+ * need to use {@link ReturningInterface.returning} or {@link ReturningInterface.returningAll}
8
8
  * to get out the inserted id.
9
9
  *
10
- * @example
10
+ * ### Examples
11
+ *
11
12
  * ```ts
12
13
  * const result = await db
13
14
  * .insertInto('person')
@@ -1,68 +1,70 @@
1
1
  import { JoinNode } from '../operation-node/join-node.js';
2
2
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
- import { ExistsExpression, FilterOperator } from '../parser/filter-parser.js';
3
+ import { ExistsExpression, FilterOperator, FilterValueExpressionOrList } from '../parser/filter-parser.js';
4
4
  import { ParseContext } from '../parser/parse-context.js';
5
5
  import { ReferenceExpression } from '../parser/reference-parser.js';
6
- import { ValueExpressionOrList } from '../parser/value-parser.js';
6
+ import { AnyRawBuilder } from '../util/type-utils.js';
7
7
  export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
8
8
  #private;
9
9
  constructor(props: JoinBuilderProps);
10
10
  /**
11
- * Just like {@link QueryBuilder.where} but adds an item to the join's
11
+ * Just like {@link WhereInterface.where} but adds an item to the join's
12
12
  * `on` clause instead.
13
13
  *
14
- * See {@link QueryBuilder.where} for documentation and examples.
14
+ * See {@link WhereInterface.where} for documentation and examples.
15
15
  */
16
- on<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: ValueExpressionOrList<DB, TB, RE>): JoinBuilder<DB, TB>;
16
+ on<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): JoinBuilder<DB, TB>;
17
17
  on(grouper: (qb: JoinBuilder<DB, TB>) => JoinBuilder<DB, TB>): JoinBuilder<DB, TB>;
18
+ on(raw: AnyRawBuilder): JoinBuilder<DB, TB>;
18
19
  /**
19
- * Just like {@link QueryBuilder.orWhere} but adds an item to the join's
20
+ * Just like {@link WhereInterface.orWhere} but adds an item to the join's
20
21
  * `on` clause instead.
21
22
  *
22
- * See {@link QueryBuilder.orWhere} for documentation and examples.
23
+ * See {@link WhereInterface.orWhere} for documentation and examples.
23
24
  */
24
- orOn<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: ValueExpressionOrList<DB, TB, RE>): JoinBuilder<DB, TB>;
25
+ orOn<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): JoinBuilder<DB, TB>;
25
26
  orOn(grouper: (qb: JoinBuilder<DB, TB>) => JoinBuilder<DB, TB>): JoinBuilder<DB, TB>;
27
+ orOn(raw: AnyRawBuilder): JoinBuilder<DB, TB>;
26
28
  /**
27
- * Just like {@link QueryBuilder.whereRef} but adds an item to the join's
29
+ * Just like {@link WhereInterface.whereRef} but adds an item to the join's
28
30
  * `on` clause instead.
29
31
  *
30
- * See {@link QueryBuilder.whereRef} for documentation and examples.
32
+ * See {@link WhereInterface.whereRef} for documentation and examples.
31
33
  */
32
34
  onRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): JoinBuilder<DB, TB>;
33
35
  /**
34
- * Just like {@link QueryBuilder.orWhereRef} but adds an item to the join's
36
+ * Just like {@link WhereInterface.orWhereRef} but adds an item to the join's
35
37
  * `on` clause instead.
36
38
  *
37
- * See {@link QueryBuilder.orWhereRef} for documentation and examples.
39
+ * See {@link WhereInterface.orWhereRef} for documentation and examples.
38
40
  */
39
41
  orOnRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): JoinBuilder<DB, TB>;
40
42
  /**
41
- * Just like {@link QueryBuilder.whereExists} but adds an item to the join's
43
+ * Just like {@link WhereInterface.whereExists} but adds an item to the join's
42
44
  * `on` clause instead.
43
45
  *
44
- * See {@link QueryBuilder.whereExists} for documentation and examples.
46
+ * See {@link WhereInterface.whereExists} for documentation and examples.
45
47
  */
46
48
  onExists(arg: ExistsExpression<DB, TB>): JoinBuilder<DB, TB>;
47
49
  /**
48
- * Just like {@link QueryBuilder.whereNotExists} but adds an item to the join's
50
+ * Just like {@link WhereInterface.whereNotExists} but adds an item to the join's
49
51
  * `on` clause instead.
50
52
  *
51
- * See {@link QueryBuilder.whereNotExists} for documentation and examples.
53
+ * See {@link WhereInterface.whereNotExists} for documentation and examples.
52
54
  */
53
55
  onNotExists(arg: ExistsExpression<DB, TB>): JoinBuilder<DB, TB>;
54
56
  /**
55
- * Just like {@link QueryBuilder.orWhereExists} but adds an item to the join's
57
+ * Just like {@link WhereInterface.orWhereExists} but adds an item to the join's
56
58
  * `on` clause instead.
57
59
  *
58
- * See {@link QueryBuilder.orWhereExists} for documentation and examples.
60
+ * See {@link WhereInterface.orWhereExists} for documentation and examples.
59
61
  */
60
62
  orOnExists(arg: ExistsExpression<DB, TB>): JoinBuilder<DB, TB>;
61
63
  /**
62
- * Just like {@link QueryBuilder.orWhereNotExists} but adds an item to the join's
64
+ * Just like {@link WhereInterface.orWhereNotExists} but adds an item to the join's
63
65
  * `on` clause instead.
64
66
  *
65
- * See {@link QueryBuilder.orWhereNotExists} for documentation and examples.
67
+ * See {@link WhereInterface.orWhereNotExists} for documentation and examples.
66
68
  */
67
69
  orOnNotExists(arg: ExistsExpression<DB, TB>): JoinBuilder<DB, TB>;
68
70
  toOperationNode(): JoinNode;
@@ -20,10 +20,10 @@ export class JoinBuilder {
20
20
  });
21
21
  }
22
22
  /**
23
- * Just like {@link QueryBuilder.whereRef} but adds an item to the join's
23
+ * Just like {@link WhereInterface.whereRef} but adds an item to the join's
24
24
  * `on` clause instead.
25
25
  *
26
- * See {@link QueryBuilder.whereRef} for documentation and examples.
26
+ * See {@link WhereInterface.whereRef} for documentation and examples.
27
27
  */
28
28
  onRef(lhs, op, rhs) {
29
29
  return new JoinBuilder({
@@ -32,10 +32,10 @@ export class JoinBuilder {
32
32
  });
33
33
  }
34
34
  /**
35
- * Just like {@link QueryBuilder.orWhereRef} but adds an item to the join's
35
+ * Just like {@link WhereInterface.orWhereRef} but adds an item to the join's
36
36
  * `on` clause instead.
37
37
  *
38
- * See {@link QueryBuilder.orWhereRef} for documentation and examples.
38
+ * See {@link WhereInterface.orWhereRef} for documentation and examples.
39
39
  */
40
40
  orOnRef(lhs, op, rhs) {
41
41
  return new JoinBuilder({
@@ -44,10 +44,10 @@ export class JoinBuilder {
44
44
  });
45
45
  }
46
46
  /**
47
- * Just like {@link QueryBuilder.whereExists} but adds an item to the join's
47
+ * Just like {@link WhereInterface.whereExists} but adds an item to the join's
48
48
  * `on` clause instead.
49
49
  *
50
- * See {@link QueryBuilder.whereExists} for documentation and examples.
50
+ * See {@link WhereInterface.whereExists} for documentation and examples.
51
51
  */
52
52
  onExists(arg) {
53
53
  return new JoinBuilder({
@@ -56,10 +56,10 @@ export class JoinBuilder {
56
56
  });
57
57
  }
58
58
  /**
59
- * Just like {@link QueryBuilder.whereNotExists} but adds an item to the join's
59
+ * Just like {@link WhereInterface.whereNotExists} but adds an item to the join's
60
60
  * `on` clause instead.
61
61
  *
62
- * See {@link QueryBuilder.whereNotExists} for documentation and examples.
62
+ * See {@link WhereInterface.whereNotExists} for documentation and examples.
63
63
  */
64
64
  onNotExists(arg) {
65
65
  return new JoinBuilder({
@@ -68,10 +68,10 @@ export class JoinBuilder {
68
68
  });
69
69
  }
70
70
  /**
71
- * Just like {@link QueryBuilder.orWhereExists} but adds an item to the join's
71
+ * Just like {@link WhereInterface.orWhereExists} but adds an item to the join's
72
72
  * `on` clause instead.
73
73
  *
74
- * See {@link QueryBuilder.orWhereExists} for documentation and examples.
74
+ * See {@link WhereInterface.orWhereExists} for documentation and examples.
75
75
  */
76
76
  orOnExists(arg) {
77
77
  return new JoinBuilder({
@@ -80,10 +80,10 @@ export class JoinBuilder {
80
80
  });
81
81
  }
82
82
  /**
83
- * Just like {@link QueryBuilder.orWhereNotExists} but adds an item to the join's
83
+ * Just like {@link WhereInterface.orWhereNotExists} but adds an item to the join's
84
84
  * `on` clause instead.
85
85
  *
86
- * See {@link QueryBuilder.orWhereNotExists} for documentation and examples.
86
+ * See {@link WhereInterface.orWhereNotExists} for documentation and examples.
87
87
  */
88
88
  orOnNotExists(arg) {
89
89
  return new JoinBuilder({
@@ -0,0 +1,133 @@
1
+ import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
2
+ import { FullJoinTableExpressionDatabase, LeftJoinTableExpressionDatabase, RightJoinTableExpressionDatabase, TableExpression, TableExpressionDatabase, TableExpressionTables } from '../parser/table-parser.js';
3
+ export interface JoinInterface<DB, TB extends keyof DB> {
4
+ /**
5
+ * Joins another table to the query using an inner join.
6
+ *
7
+ * ### Examples
8
+ *
9
+ * Simple usage by providing a table name and two columns to join:
10
+ *
11
+ * ```ts
12
+ * const result = await db
13
+ * .selectFrom('person')
14
+ * .innerJoin('pet', 'pet.owner_id', 'person.id')
15
+ * // `select` needs to come after the call to `innerJoin` so
16
+ * // that you can select from the joined table.
17
+ * .select('person.id', 'pet.name')
18
+ * .execute()
19
+ *
20
+ * result[0].id
21
+ * result[0].name
22
+ * ```
23
+ *
24
+ * The generated SQL (PostgreSQL):
25
+ *
26
+ * ```sql
27
+ * select "person"."id", "pet"."name"
28
+ * from "person"
29
+ * inner join "pet"
30
+ * on "pet"."owner_id" = "person"."id"
31
+ * ```
32
+ *
33
+ * You can give an alias for the joined table like this:
34
+ *
35
+ * ```ts
36
+ * await db.selectFrom('person')
37
+ * .innerJoin('pet as p', 'p.owner_id', 'person.id')
38
+ * .where('p.name', '=', 'Doggo')
39
+ * .selectAll()
40
+ * .execute()
41
+ * ```
42
+ *
43
+ * The generated SQL (PostgreSQL):
44
+ *
45
+ * ```sql
46
+ * select *
47
+ * from "person"
48
+ * inner join "pet" as "p"
49
+ * on "p"."owner_id" = "person"."id"
50
+ * where "p".name" = $1
51
+ * ```
52
+ *
53
+ * You can provide a function as the second argument to get a join
54
+ * builder for creating more complex joins. The join builder has a
55
+ * bunch of `on*` methods for building the `on` clause of the join.
56
+ * There's basically an equivalent for every `where` method
57
+ * (`on`, `onRef`, `onExists` etc.). You can do all the same things
58
+ * with the `on` method that you can with the corresponding `where`
59
+ * method. See the `where` method documentation for more examples.
60
+ *
61
+ * ```ts
62
+ * await db.selectFrom('person')
63
+ * .innerJoin(
64
+ * 'pet',
65
+ * (join) => join
66
+ * .onRef('pet.owner_id', '=', 'person.id')
67
+ * .on('pet.name', '=', 'Doggo')
68
+ * )
69
+ * .selectAll()
70
+ * .execute()
71
+ * ```
72
+ *
73
+ * The generated SQL (PostgreSQL):
74
+ *
75
+ * ```sql
76
+ * select *
77
+ * from "person"
78
+ * inner join "pet"
79
+ * on "pet"."owner_id" = "person"."id"
80
+ * and "pet"."name" = $1
81
+ * ```
82
+ *
83
+ * You can join a subquery by providing a function as the first
84
+ * argument:
85
+ *
86
+ * ```ts
87
+ * await db.selectFrom('person')
88
+ * .innerJoin(
89
+ * (qb) => qb.selectFrom('pet')
90
+ * .select(['owner_id', 'name'])
91
+ * .where('name', '=', 'Doggo')
92
+ * .as('doggos'),
93
+ * 'doggos.owner_id',
94
+ * 'person.id',
95
+ * )
96
+ * .selectAll()
97
+ * .execute()
98
+ * ```
99
+ *
100
+ * The generated SQL (PostgreSQL):
101
+ *
102
+ * ```sql
103
+ * select *
104
+ * from "person"
105
+ * inner join (
106
+ * select "owner_id", "name"
107
+ * from "pet"
108
+ * where "name" = $1
109
+ * ) as "doggos"
110
+ * on "doggos"."owner_id" = "person"."id"
111
+ * ```
112
+ */
113
+ innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): JoinInterface<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>>;
114
+ innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): JoinInterface<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>>;
115
+ /**
116
+ * Just like {@link JoinInterface.innerJoin | innerJoin} but adds a left join
117
+ * instead of an inner join.
118
+ */
119
+ leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): JoinInterface<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>>;
120
+ leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): JoinInterface<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>>;
121
+ /**
122
+ * Just like {@link JoinInterface.innerJoin | innerJoin} but adds a right join
123
+ * instead of an inner join.
124
+ */
125
+ rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): JoinInterface<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>>;
126
+ rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): JoinInterface<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>>;
127
+ /**
128
+ * Just like {@link JoinInterface.innerJoin | innerJoin} but adds a full join
129
+ * instead of an inner join.
130
+ */
131
+ fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): JoinInterface<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>>;
132
+ fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): JoinInterface<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>>;
133
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import { QueryNode } from '../operation-node/query-node.js';
2
+ export declare type NoResultErrorConstructor = new (node: QueryNode) => Error;
3
+ export declare class NoResultError extends Error {
4
+ /**
5
+ * The operation node tree of the query that was executed.
6
+ */
7
+ readonly node: QueryNode;
8
+ constructor(node: QueryNode);
9
+ }
@@ -0,0 +1,10 @@
1
+ export class NoResultError extends Error {
2
+ /**
3
+ * The operation node tree of the query that was executed.
4
+ */
5
+ node;
6
+ constructor(node) {
7
+ super('no result');
8
+ this.node = node;
9
+ }
10
+ }
@@ -0,0 +1,73 @@
1
+ import { ReturningRow } from '../parser/returning-parser.js';
2
+ import { SelectExpression } from '../parser/select-parser.js';
3
+ export interface ReturningInterface<DB, TB extends keyof DB, O> {
4
+ /**
5
+ * Allows you to return data from modified rows.
6
+ *
7
+ * On supported databases like PostgreSQL, this method can be chained to
8
+ * `insert`, `update` and `delete` queries to return data.
9
+ *
10
+ * Note that on SQLite you need to give aliases for the expressions to avoid
11
+ * [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
12
+ * For example `.returning('id as id')`.
13
+ *
14
+ * Also see the {@link ReturningInterface.returningAll | returningAll} method.
15
+ *
16
+ * ### Examples
17
+ *
18
+ * Return one column:
19
+ *
20
+ * ```ts
21
+ * const { id } = await db
22
+ * .insertInto('person')
23
+ * .values({
24
+ * id: db.generated,
25
+ * first_name: 'Jennifer',
26
+ * last_name: 'Aniston'
27
+ * })
28
+ * .returning('id')
29
+ * .executeTakeFirst()
30
+ * ```
31
+ *
32
+ * Return multiple columns:
33
+ *
34
+ * ```ts
35
+ * const { id, first_name } = await db
36
+ * .insertInto('person')
37
+ * .values({
38
+ * id: db.generated,
39
+ * first_name: 'Jennifer',
40
+ * last_name: 'Aniston'
41
+ * })
42
+ * .returning(['id', 'last_name'])
43
+ * .executeTakeFirst()
44
+ * ```
45
+ *
46
+ * Return arbitrary expressions:
47
+ *
48
+ * ```ts
49
+ * const { raw } = db
50
+ *
51
+ * const { id, full_name, first_pet_id } = await db
52
+ * .insertInto('person')
53
+ * .values({
54
+ * id: db.generated,
55
+ * first_name: 'Jennifer',
56
+ * last_name: 'Aniston'
57
+ * })
58
+ * .returning([
59
+ * 'id as id',
60
+ * raw<string>(`concat(first_name, ' ', last_name)`).as('full_name'),
61
+ * (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
62
+ * ])
63
+ * .executeTakeFirst()
64
+ * ```
65
+ */
66
+ returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
67
+ returning<SE extends SelectExpression<DB, TB>>(selection: SE): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
68
+ /**
69
+ * Adds a `returning *` to an insert/update/delete query on databases
70
+ * that support `returning` such as PostgreSQL.
71
+ */
72
+ returningAll(): ReturningInterface<DB, TB, DB[TB]>;
73
+ }
@@ -0,0 +1 @@
1
+ export {};