kysely 0.26.2 → 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 -73
- 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/helpers/mysql.d.ts +3 -3
- package/dist/cjs/helpers/sqlite.d.ts +3 -3
- package/dist/cjs/index.d.ts +8 -2
- 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/expression-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +3 -2
- package/dist/cjs/parser/returning-parser.d.ts +2 -1
- package/dist/cjs/parser/select-parser.d.ts +20 -9
- package/dist/cjs/parser/update-set-parser.d.ts +5 -2
- package/dist/cjs/parser/update-set-parser.js +13 -3
- package/dist/cjs/parser/value-parser.d.ts +2 -2
- 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 +8 -6
- package/dist/cjs/query-builder/function-module.d.ts +98 -27
- 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 +32 -12
- 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/returning-interface.d.ts +3 -2
- package/dist/cjs/query-builder/select-query-builder-expression.d.ts +20 -0
- package/dist/cjs/query-builder/select-query-builder-expression.js +2 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +48 -29
- package/dist/cjs/query-builder/select-query-builder.js +5 -2
- package/dist/cjs/query-builder/update-query-builder.d.ts +25 -7
- 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/query-creator.d.ts +5 -3
- package/dist/cjs/query-creator.js +0 -47
- package/dist/cjs/raw-builder/raw-builder.d.ts +0 -3
- 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/create-view-builder.d.ts +2 -2
- 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/infer-result.d.ts +2 -1
- 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 -20
- 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 -73
- 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/helpers/mysql.d.ts +3 -3
- package/dist/esm/helpers/sqlite.d.ts +3 -3
- package/dist/esm/index.d.ts +8 -2
- 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/expression-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +3 -2
- package/dist/esm/parser/returning-parser.d.ts +2 -1
- package/dist/esm/parser/select-parser.d.ts +20 -9
- package/dist/esm/parser/update-set-parser.d.ts +5 -2
- package/dist/esm/parser/update-set-parser.js +10 -1
- package/dist/esm/parser/value-parser.d.ts +2 -2
- 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 +8 -6
- package/dist/esm/query-builder/function-module.d.ts +98 -27
- 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 +32 -12
- 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/returning-interface.d.ts +3 -2
- package/dist/esm/query-builder/select-query-builder-expression.d.ts +20 -0
- package/dist/esm/query-builder/select-query-builder-expression.js +2 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +48 -29
- package/dist/esm/query-builder/select-query-builder.js +5 -2
- package/dist/esm/query-builder/update-query-builder.d.ts +25 -7
- 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/query-creator.d.ts +5 -3
- package/dist/esm/query-creator.js +0 -47
- package/dist/esm/raw-builder/raw-builder.d.ts +0 -3
- 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/create-view-builder.d.ts +2 -2
- 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/infer-result.d.ts +2 -1
- 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 -20
- 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.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReturningRow } from '../parser/returning-parser.js';
|
|
2
|
-
import { SelectExpression } from '../parser/select-parser.js';
|
|
1
|
+
import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
2
|
+
import { SelectCallback, SelectExpression } from '../parser/select-parser.js';
|
|
3
3
|
import { Selectable } from '../util/column-type.js';
|
|
4
4
|
export interface ReturningInterface<DB, TB extends keyof DB, O> {
|
|
5
5
|
/**
|
|
@@ -62,6 +62,7 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
|
|
|
62
62
|
* ```
|
|
63
63
|
*/
|
|
64
64
|
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
65
|
+
returning<CB extends SelectCallback<DB, TB>>(callback: CB): ReturningInterface<DB, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
65
66
|
returning<SE extends SelectExpression<DB, TB>>(selection: SE): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
66
67
|
/**
|
|
67
68
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AliasableExpression } from '../expression/expression.js';
|
|
2
|
+
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
3
|
+
export interface SelectQueryBuilderExpression<O> extends AliasableExpression<O> {
|
|
4
|
+
get isSelectQueryBuilder(): true;
|
|
5
|
+
/**
|
|
6
|
+
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
7
|
+
*
|
|
8
|
+
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
9
|
+
* template tag to build the node:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* class SomeExpression<T> implements Expression<T> {
|
|
13
|
+
* toOperationNode(): OperationNode {
|
|
14
|
+
* return sql`some sql here`.toOperationNode()
|
|
15
|
+
* }
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
toOperationNode(): SelectQueryNode;
|
|
20
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
2
2
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
3
3
|
import { TableExpression } from '../parser/table-parser.js';
|
|
4
|
-
import { SelectExpression, Selection,
|
|
4
|
+
import { SelectExpression, Selection, AllSelection, SelectCallback, CallbackSelection } from '../parser/select-parser.js';
|
|
5
5
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
6
6
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
7
7
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
@@ -17,14 +17,15 @@ import { NoResultErrorConstructor } from './no-result-error.js';
|
|
|
17
17
|
import { HavingInterface } from './having-interface.js';
|
|
18
18
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
19
19
|
import { SetOperandExpression } from '../parser/set-operation-parser.js';
|
|
20
|
-
import {
|
|
20
|
+
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
21
21
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
22
22
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
23
23
|
import { Selectable } from '../util/column-type.js';
|
|
24
24
|
import { Streamable } from '../util/streamable.js';
|
|
25
25
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
26
26
|
import { ExpressionWrapper } from '../expression/expression-wrapper.js';
|
|
27
|
-
|
|
27
|
+
import { SelectQueryBuilderExpression } from './select-query-builder-expression.js';
|
|
28
|
+
export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInterface<DB, TB>, HavingInterface<DB, TB>, SelectQueryBuilderExpression<O>, Compilable<O>, Explainable, Streamable<O> {
|
|
28
29
|
/**
|
|
29
30
|
* Adds a `where` expression to the query.
|
|
30
31
|
*
|
|
@@ -324,8 +325,8 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
324
325
|
* .execute()
|
|
325
326
|
* ```
|
|
326
327
|
*/
|
|
327
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
328
|
-
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>;
|
|
329
330
|
/**
|
|
330
331
|
* Adds a `where` clause where both sides of the operator are references
|
|
331
332
|
* to columns.
|
|
@@ -377,18 +378,18 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
377
378
|
* ) as "pet_name"
|
|
378
379
|
* from "person"
|
|
379
380
|
*/
|
|
380
|
-
whereRef
|
|
381
|
+
whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): SelectQueryBuilder<DB, TB, O>;
|
|
381
382
|
/**
|
|
382
383
|
* Just like {@link WhereInterface.where | where} but adds a `having` statement
|
|
383
384
|
* instead of a `where` statement.
|
|
384
385
|
*/
|
|
385
|
-
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
386
|
-
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>;
|
|
387
388
|
/**
|
|
388
389
|
* Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
|
|
389
390
|
* instead of a `where` statement.
|
|
390
391
|
*/
|
|
391
|
-
havingRef
|
|
392
|
+
havingRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): SelectQueryBuilder<DB, TB, O>;
|
|
392
393
|
/**
|
|
393
394
|
* Adds a select statement to the query.
|
|
394
395
|
*
|
|
@@ -467,14 +468,14 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
467
468
|
*
|
|
468
469
|
* <!-- siteExample("select", "Aliases", 40) -->
|
|
469
470
|
*
|
|
470
|
-
* You can
|
|
471
|
+
* You can give an alias for selections and tables by appending `as the_alias` to the name:
|
|
471
472
|
*
|
|
472
473
|
* ```ts
|
|
473
474
|
* const persons = await db
|
|
474
|
-
* .selectFrom('person')
|
|
475
|
+
* .selectFrom('person as p')
|
|
475
476
|
* .select([
|
|
476
477
|
* 'first_name as fn',
|
|
477
|
-
* '
|
|
478
|
+
* 'p.last_name as ln'
|
|
478
479
|
* ])
|
|
479
480
|
* .execute()
|
|
480
481
|
* ```
|
|
@@ -484,8 +485,8 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
484
485
|
* ```sql
|
|
485
486
|
* select
|
|
486
487
|
* "first_name" as "fn",
|
|
487
|
-
* "
|
|
488
|
-
* from "person"
|
|
488
|
+
* "p"."last_name" as "ln"
|
|
489
|
+
* from "person" as "p"
|
|
489
490
|
* ```
|
|
490
491
|
*
|
|
491
492
|
* <!-- siteExample("select", "Complex selections", 50) -->
|
|
@@ -575,7 +576,9 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
575
576
|
* persons[0].id
|
|
576
577
|
* ```
|
|
577
578
|
*/
|
|
578
|
-
select<SE extends SelectExpression<DB, TB>>(
|
|
579
|
+
select<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): SelectQueryBuilder<DB, TB, O & Selection<DB, TB, SE>>;
|
|
580
|
+
select<CB extends SelectCallback<DB, TB>>(callback: CB): SelectQueryBuilder<DB, TB, O & CallbackSelection<DB, TB, CB>>;
|
|
581
|
+
select<SE extends SelectExpression<DB, TB>>(selection: SE): SelectQueryBuilder<DB, TB, O & Selection<DB, TB, SE>>;
|
|
579
582
|
/**
|
|
580
583
|
* Adds `distinct on` expressions to the select clause.
|
|
581
584
|
*
|
|
@@ -1032,9 +1035,9 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1032
1035
|
* order by "fn" asc
|
|
1033
1036
|
* ```
|
|
1034
1037
|
*/
|
|
1035
|
-
orderBy
|
|
1036
|
-
orderBy
|
|
1037
|
-
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>;
|
|
1038
1041
|
/**
|
|
1039
1042
|
* Adds a `group by` clause to the query.
|
|
1040
1043
|
*
|
|
@@ -1133,7 +1136,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1133
1136
|
* group by "first_name"
|
|
1134
1137
|
* ```
|
|
1135
1138
|
*/
|
|
1136
|
-
groupBy
|
|
1139
|
+
groupBy<GE extends GroupByArg<DB, TB, O>>(groupBy: GE): SelectQueryBuilder<DB, TB, O>;
|
|
1137
1140
|
/**
|
|
1138
1141
|
* Adds a limit clause to the query.
|
|
1139
1142
|
*
|
|
@@ -1201,7 +1204,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1201
1204
|
* .orderBy('name')
|
|
1202
1205
|
* ```
|
|
1203
1206
|
*/
|
|
1204
|
-
union
|
|
1207
|
+
union<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1205
1208
|
/**
|
|
1206
1209
|
* Combines another select query or raw expression to this query using `union all`.
|
|
1207
1210
|
*
|
|
@@ -1228,7 +1231,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1228
1231
|
* .orderBy('name')
|
|
1229
1232
|
* ```
|
|
1230
1233
|
*/
|
|
1231
|
-
unionAll
|
|
1234
|
+
unionAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1232
1235
|
/**
|
|
1233
1236
|
* Combines another select query or raw expression to this query using `intersect`.
|
|
1234
1237
|
*
|
|
@@ -1255,7 +1258,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1255
1258
|
* .orderBy('name')
|
|
1256
1259
|
* ```
|
|
1257
1260
|
*/
|
|
1258
|
-
intersect
|
|
1261
|
+
intersect<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1259
1262
|
/**
|
|
1260
1263
|
* Combines another select query or raw expression to this query using `intersect all`.
|
|
1261
1264
|
*
|
|
@@ -1282,7 +1285,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1282
1285
|
* .orderBy('name')
|
|
1283
1286
|
* ```
|
|
1284
1287
|
*/
|
|
1285
|
-
intersectAll
|
|
1288
|
+
intersectAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1286
1289
|
/**
|
|
1287
1290
|
* Combines another select query or raw expression to this query using `except`.
|
|
1288
1291
|
*
|
|
@@ -1309,7 +1312,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1309
1312
|
* .orderBy('name')
|
|
1310
1313
|
* ```
|
|
1311
1314
|
*/
|
|
1312
|
-
except
|
|
1315
|
+
except<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1313
1316
|
/**
|
|
1314
1317
|
* Combines another select query or raw expression to this query using `except all`.
|
|
1315
1318
|
*
|
|
@@ -1336,7 +1339,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1336
1339
|
* .orderBy('name')
|
|
1337
1340
|
* ```
|
|
1338
1341
|
*/
|
|
1339
|
-
exceptAll
|
|
1342
|
+
exceptAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1340
1343
|
/**
|
|
1341
1344
|
* Gives an alias for the query. This method is only useful for sub queries.
|
|
1342
1345
|
*
|
|
@@ -1356,7 +1359,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1356
1359
|
* pets[0].owner_first_name
|
|
1357
1360
|
* ```
|
|
1358
1361
|
*/
|
|
1359
|
-
as<A extends string>(alias: A): AliasedSelectQueryBuilder<
|
|
1362
|
+
as<A extends string>(alias: A): AliasedSelectQueryBuilder<O, A>;
|
|
1360
1363
|
/**
|
|
1361
1364
|
* Clears all select clauses from the query.
|
|
1362
1365
|
*
|
|
@@ -1542,7 +1545,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1542
1545
|
* )
|
|
1543
1546
|
* ```
|
|
1544
1547
|
*/
|
|
1545
|
-
$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>>>;
|
|
1546
1549
|
/**
|
|
1547
1550
|
* Change the output type of the query.
|
|
1548
1551
|
*
|
|
@@ -1637,6 +1640,22 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1637
1640
|
*
|
|
1638
1641
|
* functionThatExpectsPersonWithNonNullValue(person)
|
|
1639
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
|
+
* ```
|
|
1640
1659
|
*/
|
|
1641
1660
|
$narrowType<T>(): SelectQueryBuilder<DB, TB, NarrowPartial<O, T>>;
|
|
1642
1661
|
/**
|
|
@@ -1789,8 +1808,8 @@ export interface SelectQueryBuilderProps {
|
|
|
1789
1808
|
readonly queryNode: SelectQueryNode;
|
|
1790
1809
|
readonly executor: QueryExecutor;
|
|
1791
1810
|
}
|
|
1792
|
-
export interface AliasedSelectQueryBuilder<
|
|
1793
|
-
get
|
|
1811
|
+
export interface AliasedSelectQueryBuilder<O = undefined, A extends string = never> extends AliasedExpression<O, A> {
|
|
1812
|
+
get isAliasedSelectQueryBuilder(): true;
|
|
1794
1813
|
}
|
|
1795
1814
|
export type SelectQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? SelectQueryBuilder<DB, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : never;
|
|
1796
1815
|
type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? SelectQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & ShallowRecord<A, R>, TB | A, O>;
|
|
@@ -25,6 +25,9 @@ class SelectQueryBuilderImpl {
|
|
|
25
25
|
get expressionType() {
|
|
26
26
|
return undefined;
|
|
27
27
|
}
|
|
28
|
+
get isSelectQueryBuilder() {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
28
31
|
where(...args) {
|
|
29
32
|
return new SelectQueryBuilderImpl({
|
|
30
33
|
...this.#props,
|
|
@@ -339,8 +342,8 @@ class AliasedSelectQueryBuilderImpl {
|
|
|
339
342
|
get alias() {
|
|
340
343
|
return this.#alias;
|
|
341
344
|
}
|
|
342
|
-
get
|
|
343
|
-
return
|
|
345
|
+
get isAliasedSelectQueryBuilder() {
|
|
346
|
+
return true;
|
|
344
347
|
}
|
|
345
348
|
toOperationNode() {
|
|
346
349
|
return AliasNode.create(this.#queryBuilder.toOperationNode(), IdentifierNode.create(this.#alias));
|
|
@@ -2,13 +2,13 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
|
|
|
2
2
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
3
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
4
4
|
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
5
|
-
import { SelectExpression,
|
|
6
|
-
import { ReturningRow } from '../parser/returning-parser.js';
|
|
5
|
+
import { SelectExpression, SelectCallback } from '../parser/select-parser.js';
|
|
6
|
+
import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
7
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
|
*
|
|
@@ -741,7 +757,9 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
741
757
|
* .executeTakeFirst()
|
|
742
758
|
* ```
|
|
743
759
|
*/
|
|
744
|
-
returning<SE extends SelectExpression<DB, TB>>(
|
|
760
|
+
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
|
|
761
|
+
returning<CB extends SelectCallback<DB, TB>>(callback: CB): UpdateQueryBuilder<DB, UT, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
762
|
+
returning<SE extends SelectExpression<DB, TB>>(selection: SE): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
|
|
745
763
|
/**
|
|
746
764
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
747
765
|
* that support `returning` such as PostgreSQL.
|
|
@@ -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',
|