kysely 0.26.3 → 0.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- 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 +99 -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 +21 -11
- package/dist/cjs/expression/expression-wrapper.js +12 -0
- 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/insert-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/limit-node.d.ts +2 -3
- package/dist/cjs/operation-node/limit-node.js +1 -2
- package/dist/cjs/operation-node/offset-node.d.ts +2 -3
- package/dist/cjs/operation-node/offset-node.js +1 -2
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +19 -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/select-modifier-node.d.ts +2 -1
- package/dist/cjs/operation-node/select-modifier-node.js +2 -1
- 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 +21 -4
- package/dist/cjs/query-builder/aggregate-function-builder.js +21 -0
- package/dist/cjs/query-builder/case-builder.d.ts +6 -5
- package/dist/cjs/query-builder/delete-query-builder.d.ts +8 -7
- package/dist/cjs/query-builder/delete-query-builder.js +4 -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 +34 -12
- package/dist/cjs/query-builder/insert-query-builder.js +16 -5
- 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 +5 -3
- package/dist/cjs/query-builder/json-path-builder.js +9 -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 +49 -31
- package/dist/cjs/query-builder/select-query-builder.js +12 -10
- package/dist/cjs/query-builder/update-query-builder.d.ts +23 -7
- package/dist/cjs/query-builder/update-query-builder.js +4 -4
- 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 +73 -12
- package/dist/cjs/raw-builder/raw-builder.d.ts +11 -1
- package/dist/cjs/raw-builder/raw-builder.js +3 -0
- package/dist/cjs/raw-builder/sql.js +9 -2
- 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 +2 -2
- package/dist/cjs/util/object-utils.js +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 +96 -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 +21 -11
- package/dist/esm/expression/expression-wrapper.js +12 -0
- 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/insert-query-node.d.ts +1 -0
- package/dist/esm/operation-node/limit-node.d.ts +2 -3
- package/dist/esm/operation-node/limit-node.js +1 -2
- package/dist/esm/operation-node/offset-node.d.ts +2 -3
- package/dist/esm/operation-node/offset-node.js +1 -2
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +19 -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/select-modifier-node.d.ts +2 -1
- package/dist/esm/operation-node/select-modifier-node.js +2 -1
- 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 +21 -4
- package/dist/esm/query-builder/aggregate-function-builder.js +21 -0
- package/dist/esm/query-builder/case-builder.d.ts +6 -5
- package/dist/esm/query-builder/delete-query-builder.d.ts +8 -7
- package/dist/esm/query-builder/delete-query-builder.js +4 -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 +34 -12
- package/dist/esm/query-builder/insert-query-builder.js +17 -6
- 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 +5 -3
- package/dist/esm/query-builder/json-path-builder.js +9 -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 +49 -31
- package/dist/esm/query-builder/select-query-builder.js +13 -11
- package/dist/esm/query-builder/update-query-builder.d.ts +23 -7
- package/dist/esm/query-builder/update-query-builder.js +5 -5
- 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 +73 -12
- package/dist/esm/raw-builder/raw-builder.d.ts +11 -1
- package/dist/esm/raw-builder/raw-builder.js +3 -0
- package/dist/esm/raw-builder/sql.js +9 -2
- 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 +2 -2
- package/dist/esm/util/object-utils.js +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 +15 -10
|
@@ -25,6 +25,7 @@ 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
|
+
import { ValueExpression } from '../parser/value-parser.js';
|
|
28
29
|
export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInterface<DB, TB>, HavingInterface<DB, TB>, SelectQueryBuilderExpression<O>, Compilable<O>, Explainable, Streamable<O> {
|
|
29
30
|
/**
|
|
30
31
|
* Adds a `where` expression to the query.
|
|
@@ -325,8 +326,8 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
325
326
|
* .execute()
|
|
326
327
|
* ```
|
|
327
328
|
*/
|
|
328
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
329
|
-
where
|
|
329
|
+
where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): SelectQueryBuilder<DB, TB, O>;
|
|
330
|
+
where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
330
331
|
/**
|
|
331
332
|
* Adds a `where` clause where both sides of the operator are references
|
|
332
333
|
* to columns.
|
|
@@ -378,18 +379,18 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
378
379
|
* ) as "pet_name"
|
|
379
380
|
* from "person"
|
|
380
381
|
*/
|
|
381
|
-
whereRef
|
|
382
|
+
whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): SelectQueryBuilder<DB, TB, O>;
|
|
382
383
|
/**
|
|
383
384
|
* Just like {@link WhereInterface.where | where} but adds a `having` statement
|
|
384
385
|
* instead of a `where` statement.
|
|
385
386
|
*/
|
|
386
|
-
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
387
|
-
having
|
|
387
|
+
having<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): SelectQueryBuilder<DB, TB, O>;
|
|
388
|
+
having<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
388
389
|
/**
|
|
389
390
|
* Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
|
|
390
391
|
* instead of a `where` statement.
|
|
391
392
|
*/
|
|
392
|
-
havingRef
|
|
393
|
+
havingRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): SelectQueryBuilder<DB, TB, O>;
|
|
393
394
|
/**
|
|
394
395
|
* Adds a select statement to the query.
|
|
395
396
|
*
|
|
@@ -468,14 +469,14 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
468
469
|
*
|
|
469
470
|
* <!-- siteExample("select", "Aliases", 40) -->
|
|
470
471
|
*
|
|
471
|
-
* You can
|
|
472
|
+
* You can give an alias for selections and tables by appending `as the_alias` to the name:
|
|
472
473
|
*
|
|
473
474
|
* ```ts
|
|
474
475
|
* const persons = await db
|
|
475
|
-
* .selectFrom('person')
|
|
476
|
+
* .selectFrom('person as p')
|
|
476
477
|
* .select([
|
|
477
478
|
* 'first_name as fn',
|
|
478
|
-
* '
|
|
479
|
+
* 'p.last_name as ln'
|
|
479
480
|
* ])
|
|
480
481
|
* .execute()
|
|
481
482
|
* ```
|
|
@@ -485,8 +486,8 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
485
486
|
* ```sql
|
|
486
487
|
* select
|
|
487
488
|
* "first_name" as "fn",
|
|
488
|
-
* "
|
|
489
|
-
* from "person"
|
|
489
|
+
* "p"."last_name" as "ln"
|
|
490
|
+
* from "person" as "p"
|
|
490
491
|
* ```
|
|
491
492
|
*
|
|
492
493
|
* <!-- siteExample("select", "Complex selections", 50) -->
|
|
@@ -674,19 +675,19 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
674
675
|
/**
|
|
675
676
|
* Adds the `for update` modifier to a select query on supported databases.
|
|
676
677
|
*/
|
|
677
|
-
forUpdate(): SelectQueryBuilder<DB, TB, O>;
|
|
678
|
+
forUpdate(of?: TableOrList<TB>): SelectQueryBuilder<DB, TB, O>;
|
|
678
679
|
/**
|
|
679
680
|
* Adds the `for share` modifier to a select query on supported databases.
|
|
680
681
|
*/
|
|
681
|
-
forShare(): SelectQueryBuilder<DB, TB, O>;
|
|
682
|
+
forShare(of?: TableOrList<TB>): SelectQueryBuilder<DB, TB, O>;
|
|
682
683
|
/**
|
|
683
684
|
* Adds the `for key share` modifier to a select query on supported databases.
|
|
684
685
|
*/
|
|
685
|
-
forKeyShare(): SelectQueryBuilder<DB, TB, O>;
|
|
686
|
+
forKeyShare(of?: TableOrList<TB>): SelectQueryBuilder<DB, TB, O>;
|
|
686
687
|
/**
|
|
687
688
|
* Adds the `for no key update` modifier to a select query on supported databases.
|
|
688
689
|
*/
|
|
689
|
-
forNoKeyUpdate(): SelectQueryBuilder<DB, TB, O>;
|
|
690
|
+
forNoKeyUpdate(of?: TableOrList<TB>): SelectQueryBuilder<DB, TB, O>;
|
|
690
691
|
/**
|
|
691
692
|
* Adds the `skip locked` modifier to a select query on supported databases.
|
|
692
693
|
*/
|
|
@@ -1035,9 +1036,9 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1035
1036
|
* order by "fn" asc
|
|
1036
1037
|
* ```
|
|
1037
1038
|
*/
|
|
1038
|
-
orderBy
|
|
1039
|
-
orderBy
|
|
1040
|
-
orderBy
|
|
1039
|
+
orderBy<OE extends UndirectedOrderByExpression<DB, TB, O>>(orderBy: OE, direction?: OrderByDirectionExpression): SelectQueryBuilder<DB, TB, O>;
|
|
1040
|
+
orderBy<OE extends DirectedOrderByStringReference<DB, TB, O>>(ref: OE): SelectQueryBuilder<DB, TB, O>;
|
|
1041
|
+
orderBy<OE extends OrderByExpression<DB, TB, O>>(refs: ReadonlyArray<OE>): SelectQueryBuilder<DB, TB, O>;
|
|
1041
1042
|
/**
|
|
1042
1043
|
* Adds a `group by` clause to the query.
|
|
1043
1044
|
*
|
|
@@ -1136,7 +1137,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1136
1137
|
* group by "first_name"
|
|
1137
1138
|
* ```
|
|
1138
1139
|
*/
|
|
1139
|
-
groupBy
|
|
1140
|
+
groupBy<GE extends GroupByArg<DB, TB, O>>(groupBy: GE): SelectQueryBuilder<DB, TB, O>;
|
|
1140
1141
|
/**
|
|
1141
1142
|
* Adds a limit clause to the query.
|
|
1142
1143
|
*
|
|
@@ -1161,7 +1162,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1161
1162
|
* .limit(10)
|
|
1162
1163
|
* ```
|
|
1163
1164
|
*/
|
|
1164
|
-
limit(limit: number): SelectQueryBuilder<DB, TB, O>;
|
|
1165
|
+
limit(limit: ValueExpression<DB, TB, number>): SelectQueryBuilder<DB, TB, O>;
|
|
1165
1166
|
/**
|
|
1166
1167
|
* Adds an offset clause to the query.
|
|
1167
1168
|
*
|
|
@@ -1177,7 +1178,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1177
1178
|
* .limit(10)
|
|
1178
1179
|
* ```
|
|
1179
1180
|
*/
|
|
1180
|
-
offset(offset: number): SelectQueryBuilder<DB, TB, O>;
|
|
1181
|
+
offset(offset: ValueExpression<DB, TB, number>): SelectQueryBuilder<DB, TB, O>;
|
|
1181
1182
|
/**
|
|
1182
1183
|
* Combines another select query or raw expression to this query using `union`.
|
|
1183
1184
|
*
|
|
@@ -1204,7 +1205,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1204
1205
|
* .orderBy('name')
|
|
1205
1206
|
* ```
|
|
1206
1207
|
*/
|
|
1207
|
-
union
|
|
1208
|
+
union<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1208
1209
|
/**
|
|
1209
1210
|
* Combines another select query or raw expression to this query using `union all`.
|
|
1210
1211
|
*
|
|
@@ -1231,7 +1232,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1231
1232
|
* .orderBy('name')
|
|
1232
1233
|
* ```
|
|
1233
1234
|
*/
|
|
1234
|
-
unionAll
|
|
1235
|
+
unionAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1235
1236
|
/**
|
|
1236
1237
|
* Combines another select query or raw expression to this query using `intersect`.
|
|
1237
1238
|
*
|
|
@@ -1258,7 +1259,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1258
1259
|
* .orderBy('name')
|
|
1259
1260
|
* ```
|
|
1260
1261
|
*/
|
|
1261
|
-
intersect
|
|
1262
|
+
intersect<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1262
1263
|
/**
|
|
1263
1264
|
* Combines another select query or raw expression to this query using `intersect all`.
|
|
1264
1265
|
*
|
|
@@ -1285,7 +1286,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1285
1286
|
* .orderBy('name')
|
|
1286
1287
|
* ```
|
|
1287
1288
|
*/
|
|
1288
|
-
intersectAll
|
|
1289
|
+
intersectAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1289
1290
|
/**
|
|
1290
1291
|
* Combines another select query or raw expression to this query using `except`.
|
|
1291
1292
|
*
|
|
@@ -1312,7 +1313,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1312
1313
|
* .orderBy('name')
|
|
1313
1314
|
* ```
|
|
1314
1315
|
*/
|
|
1315
|
-
except
|
|
1316
|
+
except<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1316
1317
|
/**
|
|
1317
1318
|
* Combines another select query or raw expression to this query using `except all`.
|
|
1318
1319
|
*
|
|
@@ -1339,7 +1340,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1339
1340
|
* .orderBy('name')
|
|
1340
1341
|
* ```
|
|
1341
1342
|
*/
|
|
1342
|
-
exceptAll
|
|
1343
|
+
exceptAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1343
1344
|
/**
|
|
1344
1345
|
* Gives an alias for the query. This method is only useful for sub queries.
|
|
1345
1346
|
*
|
|
@@ -1545,14 +1546,14 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1545
1546
|
* )
|
|
1546
1547
|
* ```
|
|
1547
1548
|
*/
|
|
1548
|
-
$if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<any, any, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<O2
|
|
1549
|
+
$if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<any, any, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<Omit<O2, keyof O>>>;
|
|
1549
1550
|
/**
|
|
1550
1551
|
* Change the output type of the query.
|
|
1551
1552
|
*
|
|
1552
|
-
*
|
|
1553
|
-
*
|
|
1553
|
+
* This method call doesn't change the SQL in any way. This methods simply
|
|
1554
|
+
* returns a copy of this `SelectQueryBuilder` with a new output type.
|
|
1554
1555
|
*/
|
|
1555
|
-
$castTo<
|
|
1556
|
+
$castTo<C>(): SelectQueryBuilder<DB, TB, C>;
|
|
1556
1557
|
/**
|
|
1557
1558
|
* Changes the output type from an object to a tuple.
|
|
1558
1559
|
*
|
|
@@ -1640,6 +1641,22 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1640
1641
|
*
|
|
1641
1642
|
* functionThatExpectsPersonWithNonNullValue(person)
|
|
1642
1643
|
* ```
|
|
1644
|
+
*
|
|
1645
|
+
* Giving the explicit narrowed type (`string` in the example above) works fine for
|
|
1646
|
+
* simple types. If the type is complex, for example a JSON column or a subquery,
|
|
1647
|
+
* you can use the special `NotNull` type to make the column not null.
|
|
1648
|
+
*
|
|
1649
|
+
* ```ts
|
|
1650
|
+
* import { NotNull } from 'kysely'
|
|
1651
|
+
*
|
|
1652
|
+
* const person = await db.selectFrom('person')
|
|
1653
|
+
* .where('nullable_column', 'is not', null)
|
|
1654
|
+
* .selectAll()
|
|
1655
|
+
* .$narrowType<{ nullable_column: NotNull }>()
|
|
1656
|
+
* .executeTakeFirstOrThrow()
|
|
1657
|
+
*
|
|
1658
|
+
* functionThatExpectsPersonWithNonNullValue(person)
|
|
1659
|
+
* ```
|
|
1643
1660
|
*/
|
|
1644
1661
|
$narrowType<T>(): SelectQueryBuilder<DB, TB, NarrowPartial<O, T>>;
|
|
1645
1662
|
/**
|
|
@@ -1815,4 +1832,5 @@ type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = Se
|
|
|
1815
1832
|
type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
|
|
1816
1833
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
1817
1834
|
}>;
|
|
1835
|
+
type TableOrList<TB extends keyof any> = (TB & string) | ReadonlyArray<TB & string>;
|
|
1818
1836
|
export {};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
3
|
import { SelectModifierNode } from '../operation-node/select-modifier-node.js';
|
|
4
4
|
import { parseJoin, } from '../parser/join-parser.js';
|
|
5
|
+
import { parseTable } from '../parser/table-parser.js';
|
|
5
6
|
import { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';
|
|
6
7
|
import { parseReferenceExpressionOrList, } from '../parser/reference-parser.js';
|
|
7
8
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
@@ -10,13 +11,14 @@ import { parseOrderBy, } from '../parser/order-by-parser.js';
|
|
|
10
11
|
import { preventAwait } from '../util/prevent-await.js';
|
|
11
12
|
import { LimitNode } from '../operation-node/limit-node.js';
|
|
12
13
|
import { OffsetNode } from '../operation-node/offset-node.js';
|
|
13
|
-
import { freeze } from '../util/object-utils.js';
|
|
14
|
+
import { asArray, freeze } from '../util/object-utils.js';
|
|
14
15
|
import { parseGroupBy } from '../parser/group-by-parser.js';
|
|
15
16
|
import { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';
|
|
16
17
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
17
18
|
import { parseSetOperations, } from '../parser/set-operation-parser.js';
|
|
18
19
|
import { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';
|
|
19
20
|
import { ExpressionWrapper } from '../expression/expression-wrapper.js';
|
|
21
|
+
import { parseValueExpression, } from '../parser/value-parser.js';
|
|
20
22
|
class SelectQueryBuilderImpl {
|
|
21
23
|
#props;
|
|
22
24
|
constructor(props) {
|
|
@@ -82,28 +84,28 @@ class SelectQueryBuilderImpl {
|
|
|
82
84
|
queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.create('Distinct')),
|
|
83
85
|
});
|
|
84
86
|
}
|
|
85
|
-
forUpdate() {
|
|
87
|
+
forUpdate(of) {
|
|
86
88
|
return new SelectQueryBuilderImpl({
|
|
87
89
|
...this.#props,
|
|
88
|
-
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForUpdate')),
|
|
90
|
+
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForUpdate', of ? asArray(of).map(parseTable) : undefined)),
|
|
89
91
|
});
|
|
90
92
|
}
|
|
91
|
-
forShare() {
|
|
93
|
+
forShare(of) {
|
|
92
94
|
return new SelectQueryBuilderImpl({
|
|
93
95
|
...this.#props,
|
|
94
|
-
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForShare')),
|
|
96
|
+
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForShare', of ? asArray(of).map(parseTable) : undefined)),
|
|
95
97
|
});
|
|
96
98
|
}
|
|
97
|
-
forKeyShare() {
|
|
99
|
+
forKeyShare(of) {
|
|
98
100
|
return new SelectQueryBuilderImpl({
|
|
99
101
|
...this.#props,
|
|
100
|
-
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForKeyShare')),
|
|
102
|
+
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForKeyShare', of ? asArray(of).map(parseTable) : undefined)),
|
|
101
103
|
});
|
|
102
104
|
}
|
|
103
|
-
forNoKeyUpdate() {
|
|
105
|
+
forNoKeyUpdate(of) {
|
|
104
106
|
return new SelectQueryBuilderImpl({
|
|
105
107
|
...this.#props,
|
|
106
|
-
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForNoKeyUpdate')),
|
|
108
|
+
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForNoKeyUpdate', of ? asArray(of).map(parseTable) : undefined)),
|
|
107
109
|
});
|
|
108
110
|
}
|
|
109
111
|
skipLocked() {
|
|
@@ -175,13 +177,13 @@ class SelectQueryBuilderImpl {
|
|
|
175
177
|
limit(limit) {
|
|
176
178
|
return new SelectQueryBuilderImpl({
|
|
177
179
|
...this.#props,
|
|
178
|
-
queryNode: SelectQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(limit)),
|
|
180
|
+
queryNode: SelectQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit))),
|
|
179
181
|
});
|
|
180
182
|
}
|
|
181
183
|
offset(offset) {
|
|
182
184
|
return new SelectQueryBuilderImpl({
|
|
183
185
|
...this.#props,
|
|
184
|
-
queryNode: SelectQueryNode.cloneWithOffset(this.#props.queryNode, OffsetNode.create(offset)),
|
|
186
|
+
queryNode: SelectQueryNode.cloneWithOffset(this.#props.queryNode, OffsetNode.create(parseValueExpression(offset))),
|
|
185
187
|
});
|
|
186
188
|
}
|
|
187
189
|
union(expression) {
|
|
@@ -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
|
*
|
|
@@ -813,10 +829,10 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
813
829
|
/**
|
|
814
830
|
* Change the output type of the query.
|
|
815
831
|
*
|
|
816
|
-
*
|
|
817
|
-
*
|
|
832
|
+
* This method call doesn't change the SQL in any way. This methods simply
|
|
833
|
+
* returns a copy of this `UpdateQueryBuilder` with a new output type.
|
|
818
834
|
*/
|
|
819
|
-
$castTo<
|
|
835
|
+
$castTo<C>(): UpdateQueryBuilder<DB, UT, TB, C>;
|
|
820
836
|
/**
|
|
821
837
|
* Narrows (parts of) the output type of the query.
|
|
822
838
|
*
|
|
@@ -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) {
|
|
@@ -154,8 +154,8 @@ export class UpdateQueryBuilder {
|
|
|
154
154
|
/**
|
|
155
155
|
* Change the output type of the query.
|
|
156
156
|
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
157
|
+
* This method call doesn't change the SQL in any way. This methods simply
|
|
158
|
+
* returns a copy of this `UpdateQueryBuilder` with a new output type.
|
|
159
159
|
*/
|
|
160
160
|
$castTo() {
|
|
161
161
|
return new UpdateQueryBuilder(this.#props);
|
|
@@ -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) {
|
|
@@ -160,6 +162,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
160
162
|
this.append(' ');
|
|
161
163
|
this.visitNode(node.values);
|
|
162
164
|
}
|
|
165
|
+
if (node.defaultValues) {
|
|
166
|
+
this.append(' ');
|
|
167
|
+
this.append('default values');
|
|
168
|
+
}
|
|
163
169
|
if (node.onConflict) {
|
|
164
170
|
this.append(' ');
|
|
165
171
|
this.visitNode(node.onConflict);
|
|
@@ -346,16 +352,22 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
346
352
|
this.append('if not exists ');
|
|
347
353
|
}
|
|
348
354
|
this.visitNode(node.table);
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
if (node.onCommit) {
|
|
353
|
-
this.append(' on commit ');
|
|
354
|
-
this.append(node.onCommit);
|
|
355
|
+
if (node.selectQuery) {
|
|
356
|
+
this.append(' as ');
|
|
357
|
+
this.visitNode(node.selectQuery);
|
|
355
358
|
}
|
|
356
|
-
|
|
357
|
-
this.append(' ');
|
|
358
|
-
this.compileList(node.
|
|
359
|
+
else {
|
|
360
|
+
this.append(' (');
|
|
361
|
+
this.compileList([...node.columns, ...(node.constraints ?? [])]);
|
|
362
|
+
this.append(')');
|
|
363
|
+
if (node.onCommit) {
|
|
364
|
+
this.append(' on commit ');
|
|
365
|
+
this.append(node.onCommit);
|
|
366
|
+
}
|
|
367
|
+
if (node.endModifiers && node.endModifiers.length > 0) {
|
|
368
|
+
this.append(' ');
|
|
369
|
+
this.compileList(node.endModifiers, ' ');
|
|
370
|
+
}
|
|
359
371
|
}
|
|
360
372
|
}
|
|
361
373
|
visitColumnDefinition(node) {
|
|
@@ -383,6 +395,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
383
395
|
if (node.unique) {
|
|
384
396
|
this.append(' unique');
|
|
385
397
|
}
|
|
398
|
+
if (node.nullsNotDistinct) {
|
|
399
|
+
this.append(' nulls not distinct');
|
|
400
|
+
}
|
|
386
401
|
if (node.primaryKey) {
|
|
387
402
|
this.append(' primary key');
|
|
388
403
|
}
|
|
@@ -563,6 +578,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
563
578
|
this.compileList(node.columns);
|
|
564
579
|
this.append(')');
|
|
565
580
|
}
|
|
581
|
+
if (node.nullsNotDistinct) {
|
|
582
|
+
this.append(' nulls not distinct');
|
|
583
|
+
}
|
|
566
584
|
if (node.where) {
|
|
567
585
|
this.append(' ');
|
|
568
586
|
this.visitNode(node.where);
|
|
@@ -615,7 +633,11 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
615
633
|
this.visitNode(node.name);
|
|
616
634
|
this.append(' ');
|
|
617
635
|
}
|
|
618
|
-
this.append('unique
|
|
636
|
+
this.append('unique');
|
|
637
|
+
if (node.nullsNotDistinct) {
|
|
638
|
+
this.append(' nulls not distinct');
|
|
639
|
+
}
|
|
640
|
+
this.append(' (');
|
|
619
641
|
this.compileList(node.columns);
|
|
620
642
|
this.append(')');
|
|
621
643
|
}
|
|
@@ -696,7 +718,13 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
696
718
|
this.visitNode(node.dropConstraint);
|
|
697
719
|
}
|
|
698
720
|
if (node.columnAlterations) {
|
|
699
|
-
this.
|
|
721
|
+
this.compileColumnAlterations(node.columnAlterations);
|
|
722
|
+
}
|
|
723
|
+
if (node.addIndex) {
|
|
724
|
+
this.visitNode(node.addIndex);
|
|
725
|
+
}
|
|
726
|
+
if (node.dropIndex) {
|
|
727
|
+
this.visitNode(node.dropIndex);
|
|
700
728
|
}
|
|
701
729
|
}
|
|
702
730
|
visitAddColumn(node) {
|
|
@@ -718,7 +746,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
718
746
|
this.visitNode(node.column);
|
|
719
747
|
this.append(' ');
|
|
720
748
|
if (node.dataType) {
|
|
721
|
-
this.
|
|
749
|
+
if (this.announcesNewColumnDataType()) {
|
|
750
|
+
this.append('type ');
|
|
751
|
+
}
|
|
722
752
|
this.visitNode(node.dataType);
|
|
723
753
|
if (node.dataTypeExpression) {
|
|
724
754
|
this.append('using ');
|
|
@@ -841,6 +871,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
841
871
|
else {
|
|
842
872
|
this.append(SELECT_MODIFIER_SQL[node.modifier]);
|
|
843
873
|
}
|
|
874
|
+
if (node.of) {
|
|
875
|
+
this.append(' of ');
|
|
876
|
+
this.compileList(node.of, ', ');
|
|
877
|
+
}
|
|
844
878
|
}
|
|
845
879
|
visitCreateType(node) {
|
|
846
880
|
this.append('create type ');
|
|
@@ -1004,6 +1038,23 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
1004
1038
|
this.visitNode(node.values[i]);
|
|
1005
1039
|
}
|
|
1006
1040
|
}
|
|
1041
|
+
visitAddIndex(node) {
|
|
1042
|
+
this.append('add ');
|
|
1043
|
+
if (node.unique) {
|
|
1044
|
+
this.append('unique ');
|
|
1045
|
+
}
|
|
1046
|
+
this.append('index ');
|
|
1047
|
+
this.visitNode(node.name);
|
|
1048
|
+
if (node.columns) {
|
|
1049
|
+
this.append(' (');
|
|
1050
|
+
this.compileList(node.columns);
|
|
1051
|
+
this.append(')');
|
|
1052
|
+
}
|
|
1053
|
+
if (node.using) {
|
|
1054
|
+
this.append(' using ');
|
|
1055
|
+
this.visitNode(node.using);
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1007
1058
|
append(str) {
|
|
1008
1059
|
this.#sql += str;
|
|
1009
1060
|
}
|
|
@@ -1077,6 +1128,16 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
1077
1128
|
: 1);
|
|
1078
1129
|
return freeze(arr);
|
|
1079
1130
|
}
|
|
1131
|
+
compileColumnAlterations(columnAlterations) {
|
|
1132
|
+
this.compileList(columnAlterations);
|
|
1133
|
+
}
|
|
1134
|
+
/**
|
|
1135
|
+
* controls whether the dialect adds a "type" keyword before a column's new data
|
|
1136
|
+
* type in an ALTER TABLE statement.
|
|
1137
|
+
*/
|
|
1138
|
+
announcesNewColumnDataType() {
|
|
1139
|
+
return true;
|
|
1140
|
+
}
|
|
1080
1141
|
}
|
|
1081
1142
|
const SELECT_MODIFIER_SQL = freeze({
|
|
1082
1143
|
ForKeyShare: 'for key share',
|