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 {};
|
|
@@ -4,6 +4,7 @@ exports.createSelectQueryBuilder = void 0;
|
|
|
4
4
|
const alias_node_js_1 = require("../operation-node/alias-node.js");
|
|
5
5
|
const select_modifier_node_js_1 = require("../operation-node/select-modifier-node.js");
|
|
6
6
|
const join_parser_js_1 = require("../parser/join-parser.js");
|
|
7
|
+
const table_parser_js_1 = require("../parser/table-parser.js");
|
|
7
8
|
const select_parser_js_1 = require("../parser/select-parser.js");
|
|
8
9
|
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
9
10
|
const select_query_node_js_1 = require("../operation-node/select-query-node.js");
|
|
@@ -19,6 +20,7 @@ const identifier_node_js_1 = require("../operation-node/identifier-node.js");
|
|
|
19
20
|
const set_operation_parser_js_1 = require("../parser/set-operation-parser.js");
|
|
20
21
|
const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
|
|
21
22
|
const expression_wrapper_js_1 = require("../expression/expression-wrapper.js");
|
|
23
|
+
const value_parser_js_1 = require("../parser/value-parser.js");
|
|
22
24
|
class SelectQueryBuilderImpl {
|
|
23
25
|
#props;
|
|
24
26
|
constructor(props) {
|
|
@@ -84,28 +86,28 @@ class SelectQueryBuilderImpl {
|
|
|
84
86
|
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('Distinct')),
|
|
85
87
|
});
|
|
86
88
|
}
|
|
87
|
-
forUpdate() {
|
|
89
|
+
forUpdate(of) {
|
|
88
90
|
return new SelectQueryBuilderImpl({
|
|
89
91
|
...this.#props,
|
|
90
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForUpdate')),
|
|
92
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForUpdate', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
|
|
91
93
|
});
|
|
92
94
|
}
|
|
93
|
-
forShare() {
|
|
95
|
+
forShare(of) {
|
|
94
96
|
return new SelectQueryBuilderImpl({
|
|
95
97
|
...this.#props,
|
|
96
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForShare')),
|
|
98
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForShare', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
|
|
97
99
|
});
|
|
98
100
|
}
|
|
99
|
-
forKeyShare() {
|
|
101
|
+
forKeyShare(of) {
|
|
100
102
|
return new SelectQueryBuilderImpl({
|
|
101
103
|
...this.#props,
|
|
102
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForKeyShare')),
|
|
104
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForKeyShare', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
|
|
103
105
|
});
|
|
104
106
|
}
|
|
105
|
-
forNoKeyUpdate() {
|
|
107
|
+
forNoKeyUpdate(of) {
|
|
106
108
|
return new SelectQueryBuilderImpl({
|
|
107
109
|
...this.#props,
|
|
108
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForNoKeyUpdate')),
|
|
110
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForNoKeyUpdate', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
|
|
109
111
|
});
|
|
110
112
|
}
|
|
111
113
|
skipLocked() {
|
|
@@ -177,13 +179,13 @@ class SelectQueryBuilderImpl {
|
|
|
177
179
|
limit(limit) {
|
|
178
180
|
return new SelectQueryBuilderImpl({
|
|
179
181
|
...this.#props,
|
|
180
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithLimit(this.#props.queryNode, limit_node_js_1.LimitNode.create(limit)),
|
|
182
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithLimit(this.#props.queryNode, limit_node_js_1.LimitNode.create((0, value_parser_js_1.parseValueExpression)(limit))),
|
|
181
183
|
});
|
|
182
184
|
}
|
|
183
185
|
offset(offset) {
|
|
184
186
|
return new SelectQueryBuilderImpl({
|
|
185
187
|
...this.#props,
|
|
186
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOffset(this.#props.queryNode, offset_node_js_1.OffsetNode.create(offset)),
|
|
188
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOffset(this.#props.queryNode, offset_node_js_1.OffsetNode.create((0, value_parser_js_1.parseValueExpression)(offset))),
|
|
187
189
|
});
|
|
188
190
|
}
|
|
189
191
|
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
|
*
|
|
@@ -65,10 +65,10 @@ class UpdateQueryBuilder {
|
|
|
65
65
|
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('FullJoin', args)),
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
-
set(
|
|
68
|
+
set(...args) {
|
|
69
69
|
return new UpdateQueryBuilder({
|
|
70
70
|
...this.#props,
|
|
71
|
-
queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, (0, update_set_parser_js_1.
|
|
71
|
+
queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, (0, update_set_parser_js_1.parseUpdate)(...args)),
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
returning(selection) {
|
|
@@ -156,8 +156,8 @@ class UpdateQueryBuilder {
|
|
|
156
156
|
/**
|
|
157
157
|
* Change the output type of the query.
|
|
158
158
|
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
159
|
+
* This method call doesn't change the SQL in any way. This methods simply
|
|
160
|
+
* returns a copy of this `UpdateQueryBuilder` with a new output type.
|
|
161
161
|
*/
|
|
162
162
|
$castTo() {
|
|
163
163
|
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,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DefaultQueryCompiler = void 0;
|
|
4
|
+
const create_table_node_js_1 = require("../operation-node/create-table-node.js");
|
|
4
5
|
const insert_query_node_js_1 = require("../operation-node/insert-query-node.js");
|
|
5
6
|
const operation_node_visitor_js_1 = require("../operation-node/operation-node-visitor.js");
|
|
6
7
|
const operator_node_js_1 = require("../operation-node/operator-node.js");
|
|
@@ -32,6 +33,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
32
33
|
const wrapInParens = this.parentNode !== undefined &&
|
|
33
34
|
!parens_node_js_1.ParensNode.is(this.parentNode) &&
|
|
34
35
|
!insert_query_node_js_1.InsertQueryNode.is(this.parentNode) &&
|
|
36
|
+
!create_table_node_js_1.CreateTableNode.is(this.parentNode) &&
|
|
35
37
|
!create_view_node_js_1.CreateViewNode.is(this.parentNode) &&
|
|
36
38
|
!set_operation_node_js_1.SetOperationNode.is(this.parentNode);
|
|
37
39
|
if (this.parentNode === undefined && node.explain) {
|
|
@@ -162,6 +164,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
162
164
|
this.append(' ');
|
|
163
165
|
this.visitNode(node.values);
|
|
164
166
|
}
|
|
167
|
+
if (node.defaultValues) {
|
|
168
|
+
this.append(' ');
|
|
169
|
+
this.append('default values');
|
|
170
|
+
}
|
|
165
171
|
if (node.onConflict) {
|
|
166
172
|
this.append(' ');
|
|
167
173
|
this.visitNode(node.onConflict);
|
|
@@ -348,16 +354,22 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
348
354
|
this.append('if not exists ');
|
|
349
355
|
}
|
|
350
356
|
this.visitNode(node.table);
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
if (node.onCommit) {
|
|
355
|
-
this.append(' on commit ');
|
|
356
|
-
this.append(node.onCommit);
|
|
357
|
+
if (node.selectQuery) {
|
|
358
|
+
this.append(' as ');
|
|
359
|
+
this.visitNode(node.selectQuery);
|
|
357
360
|
}
|
|
358
|
-
|
|
359
|
-
this.append(' ');
|
|
360
|
-
this.compileList(node.
|
|
361
|
+
else {
|
|
362
|
+
this.append(' (');
|
|
363
|
+
this.compileList([...node.columns, ...(node.constraints ?? [])]);
|
|
364
|
+
this.append(')');
|
|
365
|
+
if (node.onCommit) {
|
|
366
|
+
this.append(' on commit ');
|
|
367
|
+
this.append(node.onCommit);
|
|
368
|
+
}
|
|
369
|
+
if (node.endModifiers && node.endModifiers.length > 0) {
|
|
370
|
+
this.append(' ');
|
|
371
|
+
this.compileList(node.endModifiers, ' ');
|
|
372
|
+
}
|
|
361
373
|
}
|
|
362
374
|
}
|
|
363
375
|
visitColumnDefinition(node) {
|
|
@@ -385,6 +397,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
385
397
|
if (node.unique) {
|
|
386
398
|
this.append(' unique');
|
|
387
399
|
}
|
|
400
|
+
if (node.nullsNotDistinct) {
|
|
401
|
+
this.append(' nulls not distinct');
|
|
402
|
+
}
|
|
388
403
|
if (node.primaryKey) {
|
|
389
404
|
this.append(' primary key');
|
|
390
405
|
}
|
|
@@ -565,6 +580,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
565
580
|
this.compileList(node.columns);
|
|
566
581
|
this.append(')');
|
|
567
582
|
}
|
|
583
|
+
if (node.nullsNotDistinct) {
|
|
584
|
+
this.append(' nulls not distinct');
|
|
585
|
+
}
|
|
568
586
|
if (node.where) {
|
|
569
587
|
this.append(' ');
|
|
570
588
|
this.visitNode(node.where);
|
|
@@ -617,7 +635,11 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
617
635
|
this.visitNode(node.name);
|
|
618
636
|
this.append(' ');
|
|
619
637
|
}
|
|
620
|
-
this.append('unique
|
|
638
|
+
this.append('unique');
|
|
639
|
+
if (node.nullsNotDistinct) {
|
|
640
|
+
this.append(' nulls not distinct');
|
|
641
|
+
}
|
|
642
|
+
this.append(' (');
|
|
621
643
|
this.compileList(node.columns);
|
|
622
644
|
this.append(')');
|
|
623
645
|
}
|
|
@@ -698,7 +720,13 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
698
720
|
this.visitNode(node.dropConstraint);
|
|
699
721
|
}
|
|
700
722
|
if (node.columnAlterations) {
|
|
701
|
-
this.
|
|
723
|
+
this.compileColumnAlterations(node.columnAlterations);
|
|
724
|
+
}
|
|
725
|
+
if (node.addIndex) {
|
|
726
|
+
this.visitNode(node.addIndex);
|
|
727
|
+
}
|
|
728
|
+
if (node.dropIndex) {
|
|
729
|
+
this.visitNode(node.dropIndex);
|
|
702
730
|
}
|
|
703
731
|
}
|
|
704
732
|
visitAddColumn(node) {
|
|
@@ -720,7 +748,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
720
748
|
this.visitNode(node.column);
|
|
721
749
|
this.append(' ');
|
|
722
750
|
if (node.dataType) {
|
|
723
|
-
this.
|
|
751
|
+
if (this.announcesNewColumnDataType()) {
|
|
752
|
+
this.append('type ');
|
|
753
|
+
}
|
|
724
754
|
this.visitNode(node.dataType);
|
|
725
755
|
if (node.dataTypeExpression) {
|
|
726
756
|
this.append('using ');
|
|
@@ -843,6 +873,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
843
873
|
else {
|
|
844
874
|
this.append(SELECT_MODIFIER_SQL[node.modifier]);
|
|
845
875
|
}
|
|
876
|
+
if (node.of) {
|
|
877
|
+
this.append(' of ');
|
|
878
|
+
this.compileList(node.of, ', ');
|
|
879
|
+
}
|
|
846
880
|
}
|
|
847
881
|
visitCreateType(node) {
|
|
848
882
|
this.append('create type ');
|
|
@@ -1006,6 +1040,23 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
1006
1040
|
this.visitNode(node.values[i]);
|
|
1007
1041
|
}
|
|
1008
1042
|
}
|
|
1043
|
+
visitAddIndex(node) {
|
|
1044
|
+
this.append('add ');
|
|
1045
|
+
if (node.unique) {
|
|
1046
|
+
this.append('unique ');
|
|
1047
|
+
}
|
|
1048
|
+
this.append('index ');
|
|
1049
|
+
this.visitNode(node.name);
|
|
1050
|
+
if (node.columns) {
|
|
1051
|
+
this.append(' (');
|
|
1052
|
+
this.compileList(node.columns);
|
|
1053
|
+
this.append(')');
|
|
1054
|
+
}
|
|
1055
|
+
if (node.using) {
|
|
1056
|
+
this.append(' using ');
|
|
1057
|
+
this.visitNode(node.using);
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1009
1060
|
append(str) {
|
|
1010
1061
|
this.#sql += str;
|
|
1011
1062
|
}
|
|
@@ -1079,6 +1130,16 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
1079
1130
|
: 1);
|
|
1080
1131
|
return (0, object_utils_js_1.freeze)(arr);
|
|
1081
1132
|
}
|
|
1133
|
+
compileColumnAlterations(columnAlterations) {
|
|
1134
|
+
this.compileList(columnAlterations);
|
|
1135
|
+
}
|
|
1136
|
+
/**
|
|
1137
|
+
* controls whether the dialect adds a "type" keyword before a column's new data
|
|
1138
|
+
* type in an ALTER TABLE statement.
|
|
1139
|
+
*/
|
|
1140
|
+
announcesNewColumnDataType() {
|
|
1141
|
+
return true;
|
|
1142
|
+
}
|
|
1082
1143
|
}
|
|
1083
1144
|
exports.DefaultQueryCompiler = DefaultQueryCompiler;
|
|
1084
1145
|
const SELECT_MODIFIER_SQL = (0, object_utils_js_1.freeze)({
|
|
@@ -130,7 +130,17 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
130
130
|
* This method call doesn't change the SQL in any way. This methods simply
|
|
131
131
|
* returns a copy of this `RawBuilder` with a new output type.
|
|
132
132
|
*/
|
|
133
|
-
$castTo<
|
|
133
|
+
$castTo<C>(): RawBuilder<C>;
|
|
134
|
+
/**
|
|
135
|
+
* Omit null from the expression's type.
|
|
136
|
+
*
|
|
137
|
+
* This function can be useful in cases where you know an expression can't be
|
|
138
|
+
* null, but Kysely is unable to infer it.
|
|
139
|
+
*
|
|
140
|
+
* This method call doesn't change the SQL in any way. This methods simply
|
|
141
|
+
* returns a copy of `this` with a new output type.
|
|
142
|
+
*/
|
|
143
|
+
$notNull(): RawBuilder<Exclude<O, null>>;
|
|
134
144
|
/**
|
|
135
145
|
* Adds a plugin for this SQL snippet.
|
|
136
146
|
*/
|