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.
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +8 -0
- package/dist/cjs/dialect/dialect-adapter-base.js +3 -0
- package/dist/cjs/dialect/dialect-adapter.d.ts +8 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +78 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.js +30 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +143 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.js +2 -0
- package/dist/cjs/dialect/mssql/mssql-dialect.d.ts +70 -0
- package/dist/cjs/dialect/mssql/mssql-dialect.js +65 -0
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +54 -0
- package/dist/cjs/dialect/mssql/mssql-driver.js +268 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.d.ts +20 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.js +97 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +11 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +64 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.js +28 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +2 -1
- package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +15 -2
- package/dist/cjs/driver/driver.d.ts +1 -1
- package/dist/cjs/driver/driver.js +1 -0
- package/dist/cjs/driver/runtime-driver.js +5 -1
- package/dist/cjs/driver/single-connection-provider.js +7 -8
- package/dist/cjs/expression/expression-builder.d.ts +66 -75
- package/dist/cjs/expression/expression-builder.js +8 -17
- package/dist/cjs/expression/expression-wrapper.d.ts +8 -8
- package/dist/cjs/helpers/mssql.d.ts +152 -0
- package/dist/cjs/helpers/mssql.js +160 -0
- package/dist/cjs/index.d.ts +7 -1
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/migration/migrator.js +12 -16
- package/dist/cjs/operation-node/add-index-node.d.ts +21 -0
- package/dist/cjs/operation-node/add-index-node.js +31 -0
- package/dist/cjs/operation-node/alter-table-node.d.ts +5 -1
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
- package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
- package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
- package/dist/cjs/operation-node/create-table-node.d.ts +1 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +17 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +3 -3
- package/dist/cjs/operation-node/operator-node.js +2 -0
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +4 -1
- package/dist/cjs/operation-node/unique-constraint-node.js +8 -1
- package/dist/cjs/parser/binary-operation-parser.js +1 -1
- package/dist/cjs/parser/coalesce-parser.d.ts +12 -2
- package/dist/cjs/parser/reference-parser.d.ts +2 -1
- package/dist/cjs/parser/update-set-parser.d.ts +5 -2
- package/dist/cjs/parser/update-set-parser.js +13 -3
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +4 -4
- package/dist/cjs/query-builder/case-builder.d.ts +5 -4
- package/dist/cjs/query-builder/delete-query-builder.d.ts +3 -3
- package/dist/cjs/query-builder/function-module.d.ts +96 -25
- package/dist/cjs/query-builder/function-module.js +17 -3
- package/dist/cjs/query-builder/having-interface.d.ts +3 -5
- package/dist/cjs/query-builder/insert-query-builder.d.ts +27 -9
- package/dist/cjs/query-builder/insert-query-builder.js +3 -3
- package/dist/cjs/query-builder/insert-result.d.ts +8 -1
- package/dist/cjs/query-builder/insert-result.js +8 -1
- package/dist/cjs/query-builder/json-path-builder.d.ts +3 -2
- package/dist/cjs/query-builder/json-path-builder.js +6 -3
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +58 -16
- package/dist/cjs/query-builder/on-conflict-builder.js +1 -6
- package/dist/cjs/query-builder/over-builder.d.ts +2 -2
- package/dist/cjs/query-builder/select-query-builder.d.ts +38 -22
- package/dist/cjs/query-builder/update-query-builder.d.ts +20 -4
- package/dist/cjs/query-builder/update-query-builder.js +2 -2
- package/dist/cjs/query-builder/where-interface.d.ts +3 -3
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +9 -1
- package/dist/cjs/query-compiler/default-query-compiler.js +65 -12
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +104 -0
- package/dist/cjs/schema/alter-table-add-index-builder.js +146 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +41 -1
- package/dist/cjs/schema/alter-table-builder.js +59 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +25 -0
- package/dist/cjs/schema/column-definition-builder.js +27 -0
- package/dist/cjs/schema/create-index-builder.d.ts +23 -0
- package/dist/cjs/schema/create-index-builder.js +30 -0
- package/dist/cjs/schema/create-table-builder.d.ts +28 -2
- package/dist/cjs/schema/create-table-builder.js +38 -3
- package/dist/cjs/schema/unique-constraint-builder.d.ts +14 -0
- package/dist/cjs/schema/unique-constraint-builder.js +24 -0
- package/dist/cjs/util/log.js +5 -1
- package/dist/cjs/util/object-utils.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +27 -19
- package/dist/esm/dialect/dialect-adapter-base.d.ts +8 -0
- package/dist/esm/dialect/dialect-adapter-base.js +3 -0
- package/dist/esm/dialect/dialect-adapter.d.ts +8 -0
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +78 -0
- package/dist/esm/dialect/mssql/mssql-adapter.js +27 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +143 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.js +2 -0
- package/dist/esm/dialect/mssql/mssql-dialect.d.ts +70 -0
- package/dist/esm/dialect/mssql/mssql-dialect.js +62 -0
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +54 -0
- package/dist/esm/dialect/mssql/mssql-driver.js +265 -0
- package/dist/esm/dialect/mssql/mssql-introspector.d.ts +20 -0
- package/dist/esm/dialect/mssql/mssql-introspector.js +94 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +11 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +61 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +28 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +2 -1
- package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +15 -2
- package/dist/esm/driver/driver.d.ts +1 -1
- package/dist/esm/driver/driver.js +1 -0
- package/dist/esm/driver/runtime-driver.js +5 -1
- package/dist/esm/driver/single-connection-provider.js +7 -8
- package/dist/esm/expression/expression-builder.d.ts +66 -75
- package/dist/esm/expression/expression-builder.js +10 -19
- package/dist/esm/expression/expression-wrapper.d.ts +8 -8
- package/dist/esm/helpers/mssql.d.ts +152 -0
- package/dist/esm/helpers/mssql.js +155 -0
- package/dist/esm/index.d.ts +7 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/migration/migrator.js +12 -16
- package/dist/esm/operation-node/add-index-node.d.ts +21 -0
- package/dist/esm/operation-node/add-index-node.js +29 -0
- package/dist/esm/operation-node/alter-table-node.d.ts +5 -1
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
- package/dist/esm/operation-node/column-update-node.d.ts +2 -3
- package/dist/esm/operation-node/create-index-node.d.ts +1 -0
- package/dist/esm/operation-node/create-table-node.d.ts +1 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +17 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +3 -3
- package/dist/esm/operation-node/operator-node.js +2 -0
- package/dist/esm/operation-node/unique-constraint-node.d.ts +4 -1
- package/dist/esm/operation-node/unique-constraint-node.js +8 -1
- package/dist/esm/parser/binary-operation-parser.js +1 -1
- package/dist/esm/parser/coalesce-parser.d.ts +12 -2
- package/dist/esm/parser/reference-parser.d.ts +2 -1
- package/dist/esm/parser/update-set-parser.d.ts +5 -2
- package/dist/esm/parser/update-set-parser.js +10 -1
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +4 -4
- package/dist/esm/query-builder/case-builder.d.ts +5 -4
- package/dist/esm/query-builder/delete-query-builder.d.ts +3 -3
- package/dist/esm/query-builder/function-module.d.ts +96 -25
- package/dist/esm/query-builder/function-module.js +17 -3
- package/dist/esm/query-builder/having-interface.d.ts +3 -5
- package/dist/esm/query-builder/insert-query-builder.d.ts +27 -9
- package/dist/esm/query-builder/insert-query-builder.js +4 -4
- package/dist/esm/query-builder/insert-result.d.ts +8 -1
- package/dist/esm/query-builder/insert-result.js +8 -1
- package/dist/esm/query-builder/json-path-builder.d.ts +3 -2
- package/dist/esm/query-builder/json-path-builder.js +6 -3
- package/dist/esm/query-builder/on-conflict-builder.d.ts +58 -16
- package/dist/esm/query-builder/on-conflict-builder.js +2 -7
- package/dist/esm/query-builder/over-builder.d.ts +2 -2
- package/dist/esm/query-builder/select-query-builder.d.ts +38 -22
- package/dist/esm/query-builder/update-query-builder.d.ts +20 -4
- package/dist/esm/query-builder/update-query-builder.js +3 -3
- package/dist/esm/query-builder/where-interface.d.ts +3 -3
- package/dist/esm/query-compiler/default-query-compiler.d.ts +9 -1
- package/dist/esm/query-compiler/default-query-compiler.js +65 -12
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +104 -0
- package/dist/esm/schema/alter-table-add-index-builder.js +143 -0
- package/dist/esm/schema/alter-table-builder.d.ts +41 -1
- package/dist/esm/schema/alter-table-builder.js +59 -2
- package/dist/esm/schema/column-definition-builder.d.ts +25 -0
- package/dist/esm/schema/column-definition-builder.js +27 -0
- package/dist/esm/schema/create-index-builder.d.ts +23 -0
- package/dist/esm/schema/create-index-builder.js +30 -0
- package/dist/esm/schema/create-table-builder.d.ts +28 -2
- package/dist/esm/schema/create-table-builder.js +38 -3
- package/dist/esm/schema/unique-constraint-builder.d.ts +14 -0
- package/dist/esm/schema/unique-constraint-builder.js +21 -0
- package/dist/esm/util/log.js +5 -1
- package/dist/esm/util/object-utils.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +27 -19
- package/helpers/mssql.d.ts +1 -0
- package/helpers/mssql.js +1 -0
- 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 {
|
|
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:
|
|
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
|
|
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
|
|
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:
|
|
329
|
-
where
|
|
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
|
|
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:
|
|
387
|
-
having
|
|
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
|
|
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
|
|
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
|
-
* '
|
|
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
|
-
* "
|
|
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
|
|
1039
|
-
orderBy
|
|
1040
|
-
orderBy
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
330
|
-
where
|
|
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
|
|
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 {
|
|
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(
|
|
66
|
+
set(...args) {
|
|
67
67
|
return new UpdateQueryBuilder({
|
|
68
68
|
...this.#props,
|
|
69
|
-
queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode,
|
|
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:
|
|
306
|
-
where
|
|
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
|
|
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
|
-
|
|
350
|
-
|
|
351
|
-
|
|
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
|
-
|
|
357
|
-
this.append(' ');
|
|
358
|
-
this.compileList(node.
|
|
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.
|
|
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.
|
|
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
|
+
}
|