kysely 0.26.3 → 0.27.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 (185) hide show
  1. package/dist/cjs/dialect/dialect-adapter-base.d.ts +8 -0
  2. package/dist/cjs/dialect/dialect-adapter-base.js +3 -0
  3. package/dist/cjs/dialect/dialect-adapter.d.ts +8 -0
  4. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +78 -0
  5. package/dist/cjs/dialect/mssql/mssql-adapter.js +30 -0
  6. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +143 -0
  7. package/dist/cjs/dialect/mssql/mssql-dialect-config.js +2 -0
  8. package/dist/cjs/dialect/mssql/mssql-dialect.d.ts +70 -0
  9. package/dist/cjs/dialect/mssql/mssql-dialect.js +65 -0
  10. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +54 -0
  11. package/dist/cjs/dialect/mssql/mssql-driver.js +268 -0
  12. package/dist/cjs/dialect/mssql/mssql-introspector.d.ts +20 -0
  13. package/dist/cjs/dialect/mssql/mssql-introspector.js +97 -0
  14. package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +11 -0
  15. package/dist/cjs/dialect/mssql/mssql-query-compiler.js +64 -0
  16. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +2 -0
  17. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +28 -0
  18. package/dist/cjs/dialect/postgres/postgres-driver.js +1 -1
  19. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +1 -1
  20. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +2 -1
  21. package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
  22. package/dist/cjs/dialect/sqlite/sqlite-driver.js +15 -2
  23. package/dist/cjs/driver/driver.d.ts +1 -1
  24. package/dist/cjs/driver/driver.js +1 -0
  25. package/dist/cjs/driver/runtime-driver.js +5 -1
  26. package/dist/cjs/driver/single-connection-provider.js +7 -8
  27. package/dist/cjs/expression/expression-builder.d.ts +66 -75
  28. package/dist/cjs/expression/expression-builder.js +8 -17
  29. package/dist/cjs/expression/expression-wrapper.d.ts +8 -8
  30. package/dist/cjs/helpers/mssql.d.ts +152 -0
  31. package/dist/cjs/helpers/mssql.js +160 -0
  32. package/dist/cjs/index.d.ts +7 -1
  33. package/dist/cjs/index.js +6 -0
  34. package/dist/cjs/migration/migrator.js +12 -16
  35. package/dist/cjs/operation-node/add-index-node.d.ts +21 -0
  36. package/dist/cjs/operation-node/add-index-node.js +31 -0
  37. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -1
  38. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
  39. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  40. package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
  41. package/dist/cjs/operation-node/create-table-node.d.ts +1 -0
  42. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  43. package/dist/cjs/operation-node/operation-node-transformer.js +17 -0
  44. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  45. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  46. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  47. package/dist/cjs/operation-node/operator-node.d.ts +3 -3
  48. package/dist/cjs/operation-node/operator-node.js +2 -0
  49. package/dist/cjs/operation-node/unique-constraint-node.d.ts +4 -1
  50. package/dist/cjs/operation-node/unique-constraint-node.js +8 -1
  51. package/dist/cjs/parser/binary-operation-parser.js +1 -1
  52. package/dist/cjs/parser/coalesce-parser.d.ts +12 -2
  53. package/dist/cjs/parser/reference-parser.d.ts +2 -1
  54. package/dist/cjs/parser/update-set-parser.d.ts +5 -2
  55. package/dist/cjs/parser/update-set-parser.js +13 -3
  56. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +4 -4
  57. package/dist/cjs/query-builder/case-builder.d.ts +5 -4
  58. package/dist/cjs/query-builder/delete-query-builder.d.ts +3 -3
  59. package/dist/cjs/query-builder/function-module.d.ts +96 -25
  60. package/dist/cjs/query-builder/function-module.js +17 -3
  61. package/dist/cjs/query-builder/having-interface.d.ts +3 -5
  62. package/dist/cjs/query-builder/insert-query-builder.d.ts +27 -9
  63. package/dist/cjs/query-builder/insert-query-builder.js +3 -3
  64. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  65. package/dist/cjs/query-builder/insert-result.js +8 -1
  66. package/dist/cjs/query-builder/json-path-builder.d.ts +3 -2
  67. package/dist/cjs/query-builder/json-path-builder.js +6 -3
  68. package/dist/cjs/query-builder/on-conflict-builder.d.ts +58 -16
  69. package/dist/cjs/query-builder/on-conflict-builder.js +1 -6
  70. package/dist/cjs/query-builder/over-builder.d.ts +2 -2
  71. package/dist/cjs/query-builder/select-query-builder.d.ts +38 -22
  72. package/dist/cjs/query-builder/update-query-builder.d.ts +20 -4
  73. package/dist/cjs/query-builder/update-query-builder.js +2 -2
  74. package/dist/cjs/query-builder/where-interface.d.ts +3 -3
  75. package/dist/cjs/query-compiler/default-query-compiler.d.ts +9 -1
  76. package/dist/cjs/query-compiler/default-query-compiler.js +65 -12
  77. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +104 -0
  78. package/dist/cjs/schema/alter-table-add-index-builder.js +146 -0
  79. package/dist/cjs/schema/alter-table-builder.d.ts +41 -1
  80. package/dist/cjs/schema/alter-table-builder.js +59 -2
  81. package/dist/cjs/schema/column-definition-builder.d.ts +25 -0
  82. package/dist/cjs/schema/column-definition-builder.js +27 -0
  83. package/dist/cjs/schema/create-index-builder.d.ts +23 -0
  84. package/dist/cjs/schema/create-index-builder.js +30 -0
  85. package/dist/cjs/schema/create-table-builder.d.ts +28 -2
  86. package/dist/cjs/schema/create-table-builder.js +38 -3
  87. package/dist/cjs/schema/unique-constraint-builder.d.ts +14 -0
  88. package/dist/cjs/schema/unique-constraint-builder.js +24 -0
  89. package/dist/cjs/util/log.js +5 -1
  90. package/dist/cjs/util/object-utils.d.ts +1 -1
  91. package/dist/cjs/util/type-utils.d.ts +27 -19
  92. package/dist/esm/dialect/dialect-adapter-base.d.ts +8 -0
  93. package/dist/esm/dialect/dialect-adapter-base.js +3 -0
  94. package/dist/esm/dialect/dialect-adapter.d.ts +8 -0
  95. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +78 -0
  96. package/dist/esm/dialect/mssql/mssql-adapter.js +27 -0
  97. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +143 -0
  98. package/dist/esm/dialect/mssql/mssql-dialect-config.js +2 -0
  99. package/dist/esm/dialect/mssql/mssql-dialect.d.ts +70 -0
  100. package/dist/esm/dialect/mssql/mssql-dialect.js +62 -0
  101. package/dist/esm/dialect/mssql/mssql-driver.d.ts +54 -0
  102. package/dist/esm/dialect/mssql/mssql-driver.js +265 -0
  103. package/dist/esm/dialect/mssql/mssql-introspector.d.ts +20 -0
  104. package/dist/esm/dialect/mssql/mssql-introspector.js +94 -0
  105. package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +11 -0
  106. package/dist/esm/dialect/mssql/mssql-query-compiler.js +61 -0
  107. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +2 -0
  108. package/dist/esm/dialect/mysql/mysql-query-compiler.js +28 -0
  109. package/dist/esm/dialect/postgres/postgres-driver.js +1 -1
  110. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +1 -1
  111. package/dist/esm/dialect/sqlite/sqlite-adapter.js +2 -1
  112. package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
  113. package/dist/esm/dialect/sqlite/sqlite-driver.js +15 -2
  114. package/dist/esm/driver/driver.d.ts +1 -1
  115. package/dist/esm/driver/driver.js +1 -0
  116. package/dist/esm/driver/runtime-driver.js +5 -1
  117. package/dist/esm/driver/single-connection-provider.js +7 -8
  118. package/dist/esm/expression/expression-builder.d.ts +66 -75
  119. package/dist/esm/expression/expression-builder.js +10 -19
  120. package/dist/esm/expression/expression-wrapper.d.ts +8 -8
  121. package/dist/esm/helpers/mssql.d.ts +152 -0
  122. package/dist/esm/helpers/mssql.js +155 -0
  123. package/dist/esm/index.d.ts +7 -1
  124. package/dist/esm/index.js +6 -0
  125. package/dist/esm/migration/migrator.js +12 -16
  126. package/dist/esm/operation-node/add-index-node.d.ts +21 -0
  127. package/dist/esm/operation-node/add-index-node.js +29 -0
  128. package/dist/esm/operation-node/alter-table-node.d.ts +5 -1
  129. package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
  130. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  131. package/dist/esm/operation-node/create-index-node.d.ts +1 -0
  132. package/dist/esm/operation-node/create-table-node.d.ts +1 -0
  133. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  134. package/dist/esm/operation-node/operation-node-transformer.js +17 -0
  135. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  136. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  137. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  138. package/dist/esm/operation-node/operator-node.d.ts +3 -3
  139. package/dist/esm/operation-node/operator-node.js +2 -0
  140. package/dist/esm/operation-node/unique-constraint-node.d.ts +4 -1
  141. package/dist/esm/operation-node/unique-constraint-node.js +8 -1
  142. package/dist/esm/parser/binary-operation-parser.js +1 -1
  143. package/dist/esm/parser/coalesce-parser.d.ts +12 -2
  144. package/dist/esm/parser/reference-parser.d.ts +2 -1
  145. package/dist/esm/parser/update-set-parser.d.ts +5 -2
  146. package/dist/esm/parser/update-set-parser.js +10 -1
  147. package/dist/esm/query-builder/aggregate-function-builder.d.ts +4 -4
  148. package/dist/esm/query-builder/case-builder.d.ts +5 -4
  149. package/dist/esm/query-builder/delete-query-builder.d.ts +3 -3
  150. package/dist/esm/query-builder/function-module.d.ts +96 -25
  151. package/dist/esm/query-builder/function-module.js +17 -3
  152. package/dist/esm/query-builder/having-interface.d.ts +3 -5
  153. package/dist/esm/query-builder/insert-query-builder.d.ts +27 -9
  154. package/dist/esm/query-builder/insert-query-builder.js +4 -4
  155. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  156. package/dist/esm/query-builder/insert-result.js +8 -1
  157. package/dist/esm/query-builder/json-path-builder.d.ts +3 -2
  158. package/dist/esm/query-builder/json-path-builder.js +6 -3
  159. package/dist/esm/query-builder/on-conflict-builder.d.ts +58 -16
  160. package/dist/esm/query-builder/on-conflict-builder.js +2 -7
  161. package/dist/esm/query-builder/over-builder.d.ts +2 -2
  162. package/dist/esm/query-builder/select-query-builder.d.ts +38 -22
  163. package/dist/esm/query-builder/update-query-builder.d.ts +20 -4
  164. package/dist/esm/query-builder/update-query-builder.js +3 -3
  165. package/dist/esm/query-builder/where-interface.d.ts +3 -3
  166. package/dist/esm/query-compiler/default-query-compiler.d.ts +9 -1
  167. package/dist/esm/query-compiler/default-query-compiler.js +65 -12
  168. package/dist/esm/schema/alter-table-add-index-builder.d.ts +104 -0
  169. package/dist/esm/schema/alter-table-add-index-builder.js +143 -0
  170. package/dist/esm/schema/alter-table-builder.d.ts +41 -1
  171. package/dist/esm/schema/alter-table-builder.js +59 -2
  172. package/dist/esm/schema/column-definition-builder.d.ts +25 -0
  173. package/dist/esm/schema/column-definition-builder.js +27 -0
  174. package/dist/esm/schema/create-index-builder.d.ts +23 -0
  175. package/dist/esm/schema/create-index-builder.js +30 -0
  176. package/dist/esm/schema/create-table-builder.d.ts +28 -2
  177. package/dist/esm/schema/create-table-builder.js +38 -3
  178. package/dist/esm/schema/unique-constraint-builder.d.ts +14 -0
  179. package/dist/esm/schema/unique-constraint-builder.js +21 -0
  180. package/dist/esm/util/log.js +5 -1
  181. package/dist/esm/util/object-utils.d.ts +1 -1
  182. package/dist/esm/util/type-utils.d.ts +27 -19
  183. package/helpers/mssql.d.ts +1 -0
  184. package/helpers/mssql.js +1 -0
  185. package/package.json +17 -6
@@ -3,7 +3,7 @@ import { ColumnNode } from '../operation-node/column-node.js';
3
3
  import { IdentifierNode } from '../operation-node/identifier-node.js';
4
4
  import { OnConflictNode } from '../operation-node/on-conflict-node.js';
5
5
  import { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';
6
- import { parseUpdateExpression, } from '../parser/update-set-parser.js';
6
+ import { parseUpdateObjectExpression, } from '../parser/update-set-parser.js';
7
7
  import { freeze } from '../util/object-utils.js';
8
8
  import { preventAwait } from '../util/prevent-await.js';
9
9
  export class OnConflictBuilder {
@@ -81,11 +81,6 @@ export class OnConflictBuilder {
81
81
  onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseValueBinaryOperationOrExpression(args)),
82
82
  });
83
83
  }
84
- /**
85
- * Specify an index predicate for the index target.
86
- *
87
- * See {@link WhereInterface.whereRef} for more info.
88
- */
89
84
  whereRef(lhs, op, rhs) {
90
85
  return new OnConflictBuilder({
91
86
  ...this.#props,
@@ -173,7 +168,7 @@ export class OnConflictBuilder {
173
168
  return new OnConflictUpdateBuilder({
174
169
  ...this.#props,
175
170
  onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {
176
- updates: parseUpdateExpression(update),
171
+ updates: parseUpdateObjectExpression(update),
177
172
  }),
178
173
  });
179
174
  }
@@ -28,7 +28,7 @@ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNo
28
28
  * from "person"
29
29
  * ```
30
30
  */
31
- orderBy(orderBy: StringReference<DB, TB> | DynamicReferenceBuilder<any>, direction?: OrderByDirectionExpression): OverBuilder<DB, TB>;
31
+ orderBy<OE extends StringReference<DB, TB> | DynamicReferenceBuilder<any>>(orderBy: OE, direction?: OrderByDirectionExpression): OverBuilder<DB, TB>;
32
32
  /**
33
33
  * Adds partition by clause item/s inside the over function.
34
34
  *
@@ -51,7 +51,7 @@ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNo
51
51
  * ```
52
52
  */
53
53
  partitionBy(partitionBy: ReadonlyArray<PartitionByExpression<DB, TB>>): OverBuilder<DB, TB>;
54
- partitionBy(partitionBy: PartitionByExpression<DB, TB>): OverBuilder<DB, TB>;
54
+ partitionBy<PE extends PartitionByExpression<DB, TB>>(partitionBy: PE): OverBuilder<DB, TB>;
55
55
  /**
56
56
  * Simply calls the provided function passing `this` as the only argument. `$call` returns
57
57
  * what the provided function returns.
@@ -325,8 +325,8 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
325
325
  * .execute()
326
326
  * ```
327
327
  */
328
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
329
- where(expression: ExpressionOrFactory<DB, TB, SqlBool>): SelectQueryBuilder<DB, TB, O>;
328
+ where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): SelectQueryBuilder<DB, TB, O>;
329
+ where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): SelectQueryBuilder<DB, TB, O>;
330
330
  /**
331
331
  * Adds a `where` clause where both sides of the operator are references
332
332
  * to columns.
@@ -378,18 +378,18 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
378
378
  * ) as "pet_name"
379
379
  * from "person"
380
380
  */
381
- whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
381
+ whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): SelectQueryBuilder<DB, TB, O>;
382
382
  /**
383
383
  * Just like {@link WhereInterface.where | where} but adds a `having` statement
384
384
  * instead of a `where` statement.
385
385
  */
386
- having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
387
- having(expression: ExpressionOrFactory<DB, TB, SqlBool>): SelectQueryBuilder<DB, TB, O>;
386
+ having<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): SelectQueryBuilder<DB, TB, O>;
387
+ having<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): SelectQueryBuilder<DB, TB, O>;
388
388
  /**
389
389
  * Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
390
390
  * instead of a `where` statement.
391
391
  */
392
- havingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
392
+ havingRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): SelectQueryBuilder<DB, TB, O>;
393
393
  /**
394
394
  * Adds a select statement to the query.
395
395
  *
@@ -468,14 +468,14 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
468
468
  *
469
469
  * <!-- siteExample("select", "Aliases", 40) -->
470
470
  *
471
- * You can provide an alias for the selections by appending `as the_alias` to the selection.
471
+ * You can give an alias for selections and tables by appending `as the_alias` to the name:
472
472
  *
473
473
  * ```ts
474
474
  * const persons = await db
475
- * .selectFrom('person')
475
+ * .selectFrom('person as p')
476
476
  * .select([
477
477
  * 'first_name as fn',
478
- * 'person.last_name as ln'
478
+ * 'p.last_name as ln'
479
479
  * ])
480
480
  * .execute()
481
481
  * ```
@@ -485,8 +485,8 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
485
485
  * ```sql
486
486
  * select
487
487
  * "first_name" as "fn",
488
- * "person"."last_name" as "ln"
489
- * from "person"
488
+ * "p"."last_name" as "ln"
489
+ * from "person" as "p"
490
490
  * ```
491
491
  *
492
492
  * <!-- siteExample("select", "Complex selections", 50) -->
@@ -1035,9 +1035,9 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1035
1035
  * order by "fn" asc
1036
1036
  * ```
1037
1037
  */
1038
- orderBy(orderBy: UndirectedOrderByExpression<DB, TB, O>, direction?: OrderByDirectionExpression): SelectQueryBuilder<DB, TB, O>;
1039
- orderBy(ref: DirectedOrderByStringReference<DB, TB, O>): SelectQueryBuilder<DB, TB, O>;
1040
- orderBy(refs: ReadonlyArray<OrderByExpression<DB, TB, O>>): SelectQueryBuilder<DB, TB, O>;
1038
+ orderBy<OE extends UndirectedOrderByExpression<DB, TB, O>>(orderBy: OE, direction?: OrderByDirectionExpression): SelectQueryBuilder<DB, TB, O>;
1039
+ orderBy<OE extends DirectedOrderByStringReference<DB, TB, O>>(ref: OE): SelectQueryBuilder<DB, TB, O>;
1040
+ orderBy<OE extends OrderByExpression<DB, TB, O>>(refs: ReadonlyArray<OE>): SelectQueryBuilder<DB, TB, O>;
1041
1041
  /**
1042
1042
  * Adds a `group by` clause to the query.
1043
1043
  *
@@ -1136,7 +1136,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1136
1136
  * group by "first_name"
1137
1137
  * ```
1138
1138
  */
1139
- groupBy(groupBy: GroupByArg<DB, TB, O>): SelectQueryBuilder<DB, TB, O>;
1139
+ groupBy<GE extends GroupByArg<DB, TB, O>>(groupBy: GE): SelectQueryBuilder<DB, TB, O>;
1140
1140
  /**
1141
1141
  * Adds a limit clause to the query.
1142
1142
  *
@@ -1204,7 +1204,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1204
1204
  * .orderBy('name')
1205
1205
  * ```
1206
1206
  */
1207
- union(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1207
+ union<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1208
1208
  /**
1209
1209
  * Combines another select query or raw expression to this query using `union all`.
1210
1210
  *
@@ -1231,7 +1231,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1231
1231
  * .orderBy('name')
1232
1232
  * ```
1233
1233
  */
1234
- unionAll(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1234
+ unionAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1235
1235
  /**
1236
1236
  * Combines another select query or raw expression to this query using `intersect`.
1237
1237
  *
@@ -1258,7 +1258,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1258
1258
  * .orderBy('name')
1259
1259
  * ```
1260
1260
  */
1261
- intersect(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1261
+ intersect<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1262
1262
  /**
1263
1263
  * Combines another select query or raw expression to this query using `intersect all`.
1264
1264
  *
@@ -1285,7 +1285,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1285
1285
  * .orderBy('name')
1286
1286
  * ```
1287
1287
  */
1288
- intersectAll(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1288
+ intersectAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1289
1289
  /**
1290
1290
  * Combines another select query or raw expression to this query using `except`.
1291
1291
  *
@@ -1312,7 +1312,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1312
1312
  * .orderBy('name')
1313
1313
  * ```
1314
1314
  */
1315
- except(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1315
+ except<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1316
1316
  /**
1317
1317
  * Combines another select query or raw expression to this query using `except all`.
1318
1318
  *
@@ -1339,7 +1339,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1339
1339
  * .orderBy('name')
1340
1340
  * ```
1341
1341
  */
1342
- exceptAll(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1342
+ exceptAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1343
1343
  /**
1344
1344
  * Gives an alias for the query. This method is only useful for sub queries.
1345
1345
  *
@@ -1545,7 +1545,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1545
1545
  * )
1546
1546
  * ```
1547
1547
  */
1548
- $if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<any, any, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<O2>>;
1548
+ $if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<any, any, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<Omit<O2, keyof O>>>;
1549
1549
  /**
1550
1550
  * Change the output type of the query.
1551
1551
  *
@@ -1640,6 +1640,22 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1640
1640
  *
1641
1641
  * functionThatExpectsPersonWithNonNullValue(person)
1642
1642
  * ```
1643
+ *
1644
+ * Giving the explicit narrowed type (`string` in the example above) works fine for
1645
+ * simple types. If the type is complex, for example a JSON column or a subquery,
1646
+ * you can use the special `NotNull` type to make the column not null.
1647
+ *
1648
+ * ```ts
1649
+ * import { NotNull } from 'kysely'
1650
+ *
1651
+ * const person = await db.selectFrom('person')
1652
+ * .where('nullable_column', 'is not', null)
1653
+ * .selectAll()
1654
+ * .$narrowType<{ nullable_column: NotNull }>()
1655
+ * .executeTakeFirstOrThrow()
1656
+ *
1657
+ * functionThatExpectsPersonWithNonNullValue(person)
1658
+ * ```
1643
1659
  */
1644
1660
  $narrowType<T>(): SelectQueryBuilder<DB, TB, NarrowPartial<O, T>>;
1645
1661
  /**
@@ -8,7 +8,7 @@ import { ReferenceExpression } from '../parser/reference-parser.js';
8
8
  import { QueryNode } from '../operation-node/query-node.js';
9
9
  import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '../util/type-utils.js';
10
10
  import { UpdateQueryNode } from '../operation-node/update-query-node.js';
11
- import { UpdateObject, UpdateObjectFactory } from '../parser/update-set-parser.js';
11
+ import { UpdateObject, UpdateObjectFactory, ExtractUpdateTypeFromReferenceExpression } from '../parser/update-set-parser.js';
12
12
  import { Compilable } from '../util/compilable.js';
13
13
  import { QueryExecutor } from '../query-executor/query-executor.js';
14
14
  import { QueryId } from '../util/query-id.js';
@@ -24,6 +24,7 @@ import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../p
24
24
  import { KyselyTypeError } from '../util/type-error.js';
25
25
  import { Streamable } from '../util/streamable.js';
26
26
  import { ExpressionOrFactory } from '../parser/expression-parser.js';
27
+ import { ValueExpression } from '../parser/value-parser.js';
27
28
  export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
28
29
  #private;
29
30
  constructor(props: UpdateQueryBuilderProps);
@@ -326,8 +327,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
326
327
  * .execute()
327
328
  * ```
328
329
  */
329
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
330
- where(expression: ExpressionOrFactory<DB, TB, SqlBool>): UpdateQueryBuilder<DB, UT, TB, O>;
330
+ where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): UpdateQueryBuilder<DB, UT, TB, O>;
331
+ where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): UpdateQueryBuilder<DB, UT, TB, O>;
331
332
  /**
332
333
  * Adds a `where` clause where both sides of the operator are references
333
334
  * to columns.
@@ -379,7 +380,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
379
380
  * ) as "pet_name"
380
381
  * from "person"
381
382
  */
382
- whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
383
+ whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): UpdateQueryBuilder<DB, UT, TB, O>;
383
384
  /**
384
385
  * Clears all where expressions from the query.
385
386
  *
@@ -625,6 +626,20 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
625
626
  * "id" = $4
626
627
  * ```
627
628
  *
629
+ * If you provide two arguments the first one is interpreted as the column
630
+ * (or other target) and the second as the value:
631
+ *
632
+ * ```ts
633
+ * const result = await db
634
+ * .updateTable('person')
635
+ * .set('first_name', 'Foo')
636
+ * // As always, both arguments can be arbitrary expressions or
637
+ * // callbacks that give you access to an expression builder:
638
+ * .set(sql`address['postalCode']`, (eb) => eb.val('61710))
639
+ * .where('id', '=', '1')
640
+ * .executeTakeFirst()
641
+ * ```
642
+ *
628
643
  * On PostgreSQL you can chain `returning` to the query to get
629
644
  * the updated rows' columns (or any other expression) as the
630
645
  * return value:
@@ -682,6 +697,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
682
697
  */
683
698
  set(update: UpdateObject<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
684
699
  set(update: UpdateObjectFactory<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
700
+ set<RE extends ReferenceExpression<DB, UT>>(key: RE, value: ValueExpression<DB, TB, ExtractUpdateTypeFromReferenceExpression<DB, UT, RE>>): UpdateQueryBuilder<DB, UT, TB, O>;
685
701
  /**
686
702
  * Allows you to return data from modified rows.
687
703
  *
@@ -4,7 +4,7 @@ import { parseTableExpressionOrList, } from '../parser/table-parser.js';
4
4
  import { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';
5
5
  import { QueryNode } from '../operation-node/query-node.js';
6
6
  import { UpdateQueryNode } from '../operation-node/update-query-node.js';
7
- import { parseUpdateExpression, } from '../parser/update-set-parser.js';
7
+ import { parseUpdate, } from '../parser/update-set-parser.js';
8
8
  import { preventAwait } from '../util/prevent-await.js';
9
9
  import { freeze } from '../util/object-utils.js';
10
10
  import { UpdateResult } from './update-result.js';
@@ -63,10 +63,10 @@ export class UpdateQueryBuilder {
63
63
  queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('FullJoin', args)),
64
64
  });
65
65
  }
66
- set(update) {
66
+ set(...args) {
67
67
  return new UpdateQueryBuilder({
68
68
  ...this.#props,
69
- queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdateExpression(update)),
69
+ queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdate(...args)),
70
70
  });
71
71
  }
72
72
  returning(selection) {
@@ -302,8 +302,8 @@ export interface WhereInterface<DB, TB extends keyof DB> {
302
302
  * .execute()
303
303
  * ```
304
304
  */
305
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
306
- where(expression: ExpressionOrFactory<DB, TB, SqlBool>): WhereInterface<DB, TB>;
305
+ where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): WhereInterface<DB, TB>;
306
+ where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): WhereInterface<DB, TB>;
307
307
  /**
308
308
  * Adds a `where` clause where both sides of the operator are references
309
309
  * to columns.
@@ -355,7 +355,7 @@ export interface WhereInterface<DB, TB extends keyof DB> {
355
355
  * ) as "pet_name"
356
356
  * from "person"
357
357
  */
358
- whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
358
+ whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): WhereInterface<DB, TB>;
359
359
  /**
360
360
  * Clears all where expressions from the query.
361
361
  *
@@ -48,7 +48,7 @@ import { RootOperationNode, QueryCompiler } from './query-compiler.js';
48
48
  import { HavingNode } from '../operation-node/having-node.js';
49
49
  import { CreateSchemaNode } from '../operation-node/create-schema-node.js';
50
50
  import { DropSchemaNode } from '../operation-node/drop-schema-node.js';
51
- import { AlterTableNode } from '../operation-node/alter-table-node.js';
51
+ import { AlterTableColumnAlterationNode, AlterTableNode } from '../operation-node/alter-table-node.js';
52
52
  import { DropColumnNode } from '../operation-node/drop-column-node.js';
53
53
  import { RenameColumnNode } from '../operation-node/rename-column-node.js';
54
54
  import { AlterColumnNode } from '../operation-node/alter-column-node.js';
@@ -88,6 +88,7 @@ import { JSONPathNode } from '../operation-node/json-path-node.js';
88
88
  import { JSONPathLegNode } from '../operation-node/json-path-leg-node.js';
89
89
  import { JSONOperatorChainNode } from '../operation-node/json-operator-chain-node.js';
90
90
  import { TupleNode } from '../operation-node/tuple-node.js';
91
+ import { AddIndexNode } from '../operation-node/add-index-node.js';
91
92
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
92
93
  #private;
93
94
  protected get numParameters(): number;
@@ -184,6 +185,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
184
185
  protected visitJSONPath(node: JSONPathNode): void;
185
186
  protected visitJSONPathLeg(node: JSONPathLegNode): void;
186
187
  protected visitJSONOperatorChain(node: JSONOperatorChainNode): void;
188
+ protected visitAddIndex(node: AddIndexNode): void;
187
189
  protected append(str: string): void;
188
190
  protected appendValue(parameter: unknown): void;
189
191
  protected getLeftIdentifierWrapper(): string;
@@ -197,4 +199,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
197
199
  protected addParameter(parameter: unknown): void;
198
200
  protected appendImmediateValue(value: unknown): void;
199
201
  protected sortSelectModifiers(arr: SelectModifierNode[]): ReadonlyArray<SelectModifierNode>;
202
+ protected compileColumnAlterations(columnAlterations: readonly AlterTableColumnAlterationNode[]): void;
203
+ /**
204
+ * controls whether the dialect adds a "type" keyword before a column's new data
205
+ * type in an ALTER TABLE statement.
206
+ */
207
+ protected announcesNewColumnDataType(): boolean;
200
208
  }
@@ -1,4 +1,5 @@
1
1
  /// <reference types="./default-query-compiler.d.ts" />
2
+ import { CreateTableNode } from '../operation-node/create-table-node.js';
2
3
  import { InsertQueryNode } from '../operation-node/insert-query-node.js';
3
4
  import { OperationNodeVisitor } from '../operation-node/operation-node-visitor.js';
4
5
  import { OperatorNode } from '../operation-node/operator-node.js';
@@ -30,6 +31,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
30
31
  const wrapInParens = this.parentNode !== undefined &&
31
32
  !ParensNode.is(this.parentNode) &&
32
33
  !InsertQueryNode.is(this.parentNode) &&
34
+ !CreateTableNode.is(this.parentNode) &&
33
35
  !CreateViewNode.is(this.parentNode) &&
34
36
  !SetOperationNode.is(this.parentNode);
35
37
  if (this.parentNode === undefined && node.explain) {
@@ -346,16 +348,22 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
346
348
  this.append('if not exists ');
347
349
  }
348
350
  this.visitNode(node.table);
349
- this.append(' (');
350
- this.compileList([...node.columns, ...(node.constraints ?? [])]);
351
- this.append(')');
352
- if (node.onCommit) {
353
- this.append(' on commit ');
354
- this.append(node.onCommit);
351
+ if (node.selectQuery) {
352
+ this.append(' as ');
353
+ this.visitNode(node.selectQuery);
355
354
  }
356
- if (node.endModifiers && node.endModifiers.length > 0) {
357
- this.append(' ');
358
- this.compileList(node.endModifiers, ' ');
355
+ else {
356
+ this.append(' (');
357
+ this.compileList([...node.columns, ...(node.constraints ?? [])]);
358
+ this.append(')');
359
+ if (node.onCommit) {
360
+ this.append(' on commit ');
361
+ this.append(node.onCommit);
362
+ }
363
+ if (node.endModifiers && node.endModifiers.length > 0) {
364
+ this.append(' ');
365
+ this.compileList(node.endModifiers, ' ');
366
+ }
359
367
  }
360
368
  }
361
369
  visitColumnDefinition(node) {
@@ -383,6 +391,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
383
391
  if (node.unique) {
384
392
  this.append(' unique');
385
393
  }
394
+ if (node.nullsNotDistinct) {
395
+ this.append(' nulls not distinct');
396
+ }
386
397
  if (node.primaryKey) {
387
398
  this.append(' primary key');
388
399
  }
@@ -563,6 +574,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
563
574
  this.compileList(node.columns);
564
575
  this.append(')');
565
576
  }
577
+ if (node.nullsNotDistinct) {
578
+ this.append(' nulls not distinct');
579
+ }
566
580
  if (node.where) {
567
581
  this.append(' ');
568
582
  this.visitNode(node.where);
@@ -615,7 +629,11 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
615
629
  this.visitNode(node.name);
616
630
  this.append(' ');
617
631
  }
618
- this.append('unique (');
632
+ this.append('unique');
633
+ if (node.nullsNotDistinct) {
634
+ this.append(' nulls not distinct');
635
+ }
636
+ this.append(' (');
619
637
  this.compileList(node.columns);
620
638
  this.append(')');
621
639
  }
@@ -696,7 +714,13 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
696
714
  this.visitNode(node.dropConstraint);
697
715
  }
698
716
  if (node.columnAlterations) {
699
- this.compileList(node.columnAlterations);
717
+ this.compileColumnAlterations(node.columnAlterations);
718
+ }
719
+ if (node.addIndex) {
720
+ this.visitNode(node.addIndex);
721
+ }
722
+ if (node.dropIndex) {
723
+ this.visitNode(node.dropIndex);
700
724
  }
701
725
  }
702
726
  visitAddColumn(node) {
@@ -718,7 +742,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
718
742
  this.visitNode(node.column);
719
743
  this.append(' ');
720
744
  if (node.dataType) {
721
- this.append('type ');
745
+ if (this.announcesNewColumnDataType()) {
746
+ this.append('type ');
747
+ }
722
748
  this.visitNode(node.dataType);
723
749
  if (node.dataTypeExpression) {
724
750
  this.append('using ');
@@ -1004,6 +1030,23 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
1004
1030
  this.visitNode(node.values[i]);
1005
1031
  }
1006
1032
  }
1033
+ visitAddIndex(node) {
1034
+ this.append('add ');
1035
+ if (node.unique) {
1036
+ this.append('unique ');
1037
+ }
1038
+ this.append('index ');
1039
+ this.visitNode(node.name);
1040
+ if (node.columns) {
1041
+ this.append(' (');
1042
+ this.compileList(node.columns);
1043
+ this.append(')');
1044
+ }
1045
+ if (node.using) {
1046
+ this.append(' using ');
1047
+ this.visitNode(node.using);
1048
+ }
1049
+ }
1007
1050
  append(str) {
1008
1051
  this.#sql += str;
1009
1052
  }
@@ -1077,6 +1120,16 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
1077
1120
  : 1);
1078
1121
  return freeze(arr);
1079
1122
  }
1123
+ compileColumnAlterations(columnAlterations) {
1124
+ this.compileList(columnAlterations);
1125
+ }
1126
+ /**
1127
+ * controls whether the dialect adds a "type" keyword before a column's new data
1128
+ * type in an ALTER TABLE statement.
1129
+ */
1130
+ announcesNewColumnDataType() {
1131
+ return true;
1132
+ }
1080
1133
  }
1081
1134
  const SELECT_MODIFIER_SQL = freeze({
1082
1135
  ForKeyShare: 'for key share',
@@ -0,0 +1,104 @@
1
+ import { Expression } from '../expression/expression.js';
2
+ import { AlterTableNode } from '../operation-node/alter-table-node.js';
3
+ import { IndexType } from '../operation-node/create-index-node.js';
4
+ import { OperationNodeSource } from '../operation-node/operation-node-source.js';
5
+ import { OrderedColumnName } from '../parser/reference-parser.js';
6
+ import { CompiledQuery } from '../query-compiler/compiled-query.js';
7
+ import { QueryExecutor } from '../query-executor/query-executor.js';
8
+ import { Compilable } from '../util/compilable.js';
9
+ import { QueryId } from '../util/query-id.js';
10
+ export declare class AlterTableAddIndexBuilder implements OperationNodeSource, Compilable {
11
+ #private;
12
+ constructor(props: AlterTableAddIndexBuilderProps);
13
+ /**
14
+ * Makes the index unique.
15
+ */
16
+ unique(): AlterTableAddIndexBuilder;
17
+ /**
18
+ * Adds a column to the index.
19
+ *
20
+ * Also see {@link columns} for adding multiple columns at once or {@link expression}
21
+ * for specifying an arbitrary expression.
22
+ *
23
+ * ### Examples
24
+ *
25
+ * ```ts
26
+ * await db.schema
27
+ * .alterTable('person')
28
+ * .createIndex('person_first_name_and_age_index')
29
+ * .column('first_name')
30
+ * .column('age desc')
31
+ * .execute()
32
+ * ```
33
+ *
34
+ * The generated SQL (MySQL):
35
+ *
36
+ * ```sql
37
+ * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
38
+ * ```
39
+ */
40
+ column<CL extends string>(column: OrderedColumnName<CL>): AlterTableAddIndexBuilder;
41
+ /**
42
+ * Specifies a list of columns for the index.
43
+ *
44
+ * Also see {@link column} for adding a single column or {@link expression} for
45
+ * specifying an arbitrary expression.
46
+ *
47
+ * ### Examples
48
+ *
49
+ * ```ts
50
+ * await db.schema
51
+ * .alterTable('person')
52
+ * .addIndex('person_first_name_and_age_index')
53
+ * .columns(['first_name', 'age desc'])
54
+ * .execute()
55
+ * ```
56
+ *
57
+ * The generated SQL (MySQL):
58
+ *
59
+ * ```sql
60
+ * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
61
+ * ```
62
+ */
63
+ columns<CL extends string>(columns: OrderedColumnName<CL>[]): AlterTableAddIndexBuilder;
64
+ /**
65
+ * Specifies an arbitrary expression for the index.
66
+ *
67
+ * ### Examples
68
+ *
69
+ * ```ts
70
+ * import { sql } from 'kysely'
71
+ *
72
+ * await db.schema
73
+ * .alterTable('person')
74
+ * .addIndex('person_first_name_index')
75
+ * .expression(sql`(first_name < 'Sami')`)
76
+ * .execute()
77
+ * ```
78
+ *
79
+ * The generated SQL (MySQL):
80
+ *
81
+ * ```sql
82
+ * alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))
83
+ * ```
84
+ */
85
+ expression(expression: Expression<any>): AlterTableAddIndexBuilder;
86
+ /**
87
+ * Specifies the index type.
88
+ */
89
+ using(indexType: IndexType): AlterTableAddIndexBuilder;
90
+ using(indexType: string): AlterTableAddIndexBuilder;
91
+ /**
92
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
93
+ * what the provided function returns.
94
+ */
95
+ $call<T>(func: (qb: this) => T): T;
96
+ toOperationNode(): AlterTableNode;
97
+ compile(): CompiledQuery;
98
+ execute(): Promise<void>;
99
+ }
100
+ export interface AlterTableAddIndexBuilderProps {
101
+ readonly queryId: QueryId;
102
+ readonly executor: QueryExecutor;
103
+ readonly node: AlterTableNode;
104
+ }