kysely 0.26.2 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +8 -0
- package/dist/cjs/dialect/dialect-adapter-base.js +3 -0
- package/dist/cjs/dialect/dialect-adapter.d.ts +8 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +78 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.js +30 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +143 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.js +2 -0
- package/dist/cjs/dialect/mssql/mssql-dialect.d.ts +70 -0
- package/dist/cjs/dialect/mssql/mssql-dialect.js +65 -0
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +54 -0
- package/dist/cjs/dialect/mssql/mssql-driver.js +268 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.d.ts +20 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.js +97 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +11 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +64 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.js +28 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +2 -1
- package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +15 -2
- package/dist/cjs/driver/driver.d.ts +1 -1
- package/dist/cjs/driver/driver.js +1 -0
- package/dist/cjs/driver/runtime-driver.js +5 -1
- package/dist/cjs/driver/single-connection-provider.js +7 -8
- package/dist/cjs/expression/expression-builder.d.ts +66 -73
- package/dist/cjs/expression/expression-builder.js +8 -17
- package/dist/cjs/expression/expression-wrapper.d.ts +8 -8
- package/dist/cjs/helpers/mssql.d.ts +152 -0
- package/dist/cjs/helpers/mssql.js +160 -0
- package/dist/cjs/helpers/mysql.d.ts +3 -3
- package/dist/cjs/helpers/sqlite.d.ts +3 -3
- package/dist/cjs/index.d.ts +8 -2
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/migration/migrator.js +12 -16
- package/dist/cjs/operation-node/add-index-node.d.ts +21 -0
- package/dist/cjs/operation-node/add-index-node.js +31 -0
- package/dist/cjs/operation-node/alter-table-node.d.ts +5 -1
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
- package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
- package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
- package/dist/cjs/operation-node/create-table-node.d.ts +1 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +17 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +3 -3
- package/dist/cjs/operation-node/operator-node.js +2 -0
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +4 -1
- package/dist/cjs/operation-node/unique-constraint-node.js +8 -1
- package/dist/cjs/parser/binary-operation-parser.js +1 -1
- package/dist/cjs/parser/coalesce-parser.d.ts +12 -2
- package/dist/cjs/parser/expression-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +3 -2
- package/dist/cjs/parser/returning-parser.d.ts +2 -1
- package/dist/cjs/parser/select-parser.d.ts +20 -9
- package/dist/cjs/parser/update-set-parser.d.ts +5 -2
- package/dist/cjs/parser/update-set-parser.js +13 -3
- package/dist/cjs/parser/value-parser.d.ts +2 -2
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +4 -4
- package/dist/cjs/query-builder/case-builder.d.ts +5 -4
- package/dist/cjs/query-builder/delete-query-builder.d.ts +8 -6
- package/dist/cjs/query-builder/function-module.d.ts +98 -27
- package/dist/cjs/query-builder/function-module.js +17 -3
- package/dist/cjs/query-builder/having-interface.d.ts +3 -5
- package/dist/cjs/query-builder/insert-query-builder.d.ts +32 -12
- package/dist/cjs/query-builder/insert-query-builder.js +3 -3
- package/dist/cjs/query-builder/insert-result.d.ts +8 -1
- package/dist/cjs/query-builder/insert-result.js +8 -1
- package/dist/cjs/query-builder/json-path-builder.d.ts +3 -2
- package/dist/cjs/query-builder/json-path-builder.js +6 -3
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +58 -16
- package/dist/cjs/query-builder/on-conflict-builder.js +1 -6
- package/dist/cjs/query-builder/over-builder.d.ts +2 -2
- package/dist/cjs/query-builder/returning-interface.d.ts +3 -2
- package/dist/cjs/query-builder/select-query-builder-expression.d.ts +20 -0
- package/dist/cjs/query-builder/select-query-builder-expression.js +2 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +48 -29
- package/dist/cjs/query-builder/select-query-builder.js +5 -2
- package/dist/cjs/query-builder/update-query-builder.d.ts +25 -7
- package/dist/cjs/query-builder/update-query-builder.js +2 -2
- package/dist/cjs/query-builder/where-interface.d.ts +3 -3
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +9 -1
- package/dist/cjs/query-compiler/default-query-compiler.js +65 -12
- package/dist/cjs/query-creator.d.ts +5 -3
- package/dist/cjs/query-creator.js +0 -47
- package/dist/cjs/raw-builder/raw-builder.d.ts +0 -3
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +104 -0
- package/dist/cjs/schema/alter-table-add-index-builder.js +146 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +41 -1
- package/dist/cjs/schema/alter-table-builder.js +59 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +25 -0
- package/dist/cjs/schema/column-definition-builder.js +27 -0
- package/dist/cjs/schema/create-index-builder.d.ts +23 -0
- package/dist/cjs/schema/create-index-builder.js +30 -0
- package/dist/cjs/schema/create-table-builder.d.ts +28 -2
- package/dist/cjs/schema/create-table-builder.js +38 -3
- package/dist/cjs/schema/create-view-builder.d.ts +2 -2
- package/dist/cjs/schema/unique-constraint-builder.d.ts +14 -0
- package/dist/cjs/schema/unique-constraint-builder.js +24 -0
- package/dist/cjs/util/infer-result.d.ts +2 -1
- package/dist/cjs/util/log.js +5 -1
- package/dist/cjs/util/object-utils.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +27 -20
- package/dist/esm/dialect/dialect-adapter-base.d.ts +8 -0
- package/dist/esm/dialect/dialect-adapter-base.js +3 -0
- package/dist/esm/dialect/dialect-adapter.d.ts +8 -0
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +78 -0
- package/dist/esm/dialect/mssql/mssql-adapter.js +27 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +143 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.js +2 -0
- package/dist/esm/dialect/mssql/mssql-dialect.d.ts +70 -0
- package/dist/esm/dialect/mssql/mssql-dialect.js +62 -0
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +54 -0
- package/dist/esm/dialect/mssql/mssql-driver.js +265 -0
- package/dist/esm/dialect/mssql/mssql-introspector.d.ts +20 -0
- package/dist/esm/dialect/mssql/mssql-introspector.js +94 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +11 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +61 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +28 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +2 -1
- package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +15 -2
- package/dist/esm/driver/driver.d.ts +1 -1
- package/dist/esm/driver/driver.js +1 -0
- package/dist/esm/driver/runtime-driver.js +5 -1
- package/dist/esm/driver/single-connection-provider.js +7 -8
- package/dist/esm/expression/expression-builder.d.ts +66 -73
- package/dist/esm/expression/expression-builder.js +10 -19
- package/dist/esm/expression/expression-wrapper.d.ts +8 -8
- package/dist/esm/helpers/mssql.d.ts +152 -0
- package/dist/esm/helpers/mssql.js +155 -0
- package/dist/esm/helpers/mysql.d.ts +3 -3
- package/dist/esm/helpers/sqlite.d.ts +3 -3
- package/dist/esm/index.d.ts +8 -2
- package/dist/esm/index.js +6 -0
- package/dist/esm/migration/migrator.js +12 -16
- package/dist/esm/operation-node/add-index-node.d.ts +21 -0
- package/dist/esm/operation-node/add-index-node.js +29 -0
- package/dist/esm/operation-node/alter-table-node.d.ts +5 -1
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
- package/dist/esm/operation-node/column-update-node.d.ts +2 -3
- package/dist/esm/operation-node/create-index-node.d.ts +1 -0
- package/dist/esm/operation-node/create-table-node.d.ts +1 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +17 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +3 -3
- package/dist/esm/operation-node/operator-node.js +2 -0
- package/dist/esm/operation-node/unique-constraint-node.d.ts +4 -1
- package/dist/esm/operation-node/unique-constraint-node.js +8 -1
- package/dist/esm/parser/binary-operation-parser.js +1 -1
- package/dist/esm/parser/coalesce-parser.d.ts +12 -2
- package/dist/esm/parser/expression-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +3 -2
- package/dist/esm/parser/returning-parser.d.ts +2 -1
- package/dist/esm/parser/select-parser.d.ts +20 -9
- package/dist/esm/parser/update-set-parser.d.ts +5 -2
- package/dist/esm/parser/update-set-parser.js +10 -1
- package/dist/esm/parser/value-parser.d.ts +2 -2
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +4 -4
- package/dist/esm/query-builder/case-builder.d.ts +5 -4
- package/dist/esm/query-builder/delete-query-builder.d.ts +8 -6
- package/dist/esm/query-builder/function-module.d.ts +98 -27
- package/dist/esm/query-builder/function-module.js +17 -3
- package/dist/esm/query-builder/having-interface.d.ts +3 -5
- package/dist/esm/query-builder/insert-query-builder.d.ts +32 -12
- package/dist/esm/query-builder/insert-query-builder.js +4 -4
- package/dist/esm/query-builder/insert-result.d.ts +8 -1
- package/dist/esm/query-builder/insert-result.js +8 -1
- package/dist/esm/query-builder/json-path-builder.d.ts +3 -2
- package/dist/esm/query-builder/json-path-builder.js +6 -3
- package/dist/esm/query-builder/on-conflict-builder.d.ts +58 -16
- package/dist/esm/query-builder/on-conflict-builder.js +2 -7
- package/dist/esm/query-builder/over-builder.d.ts +2 -2
- package/dist/esm/query-builder/returning-interface.d.ts +3 -2
- package/dist/esm/query-builder/select-query-builder-expression.d.ts +20 -0
- package/dist/esm/query-builder/select-query-builder-expression.js +2 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +48 -29
- package/dist/esm/query-builder/select-query-builder.js +5 -2
- package/dist/esm/query-builder/update-query-builder.d.ts +25 -7
- package/dist/esm/query-builder/update-query-builder.js +3 -3
- package/dist/esm/query-builder/where-interface.d.ts +3 -3
- package/dist/esm/query-compiler/default-query-compiler.d.ts +9 -1
- package/dist/esm/query-compiler/default-query-compiler.js +65 -12
- package/dist/esm/query-creator.d.ts +5 -3
- package/dist/esm/query-creator.js +0 -47
- package/dist/esm/raw-builder/raw-builder.d.ts +0 -3
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +104 -0
- package/dist/esm/schema/alter-table-add-index-builder.js +143 -0
- package/dist/esm/schema/alter-table-builder.d.ts +41 -1
- package/dist/esm/schema/alter-table-builder.js +59 -2
- package/dist/esm/schema/column-definition-builder.d.ts +25 -0
- package/dist/esm/schema/column-definition-builder.js +27 -0
- package/dist/esm/schema/create-index-builder.d.ts +23 -0
- package/dist/esm/schema/create-index-builder.js +30 -0
- package/dist/esm/schema/create-table-builder.d.ts +28 -2
- package/dist/esm/schema/create-table-builder.js +38 -3
- package/dist/esm/schema/create-view-builder.d.ts +2 -2
- package/dist/esm/schema/unique-constraint-builder.d.ts +14 -0
- package/dist/esm/schema/unique-constraint-builder.js +21 -0
- package/dist/esm/util/infer-result.d.ts +2 -1
- package/dist/esm/util/log.js +5 -1
- package/dist/esm/util/object-utils.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +27 -20
- package/helpers/mssql.d.ts +1 -0
- package/helpers/mssql.js +1 -0
- package/package.json +17 -6
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { AliasableExpression, AliasedExpression, Expression } from '../expression/expression.js';
|
|
2
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
|
+
import { JSONPathNode } from '../operation-node/json-path-node.js';
|
|
3
4
|
import { JSONReferenceNode } from '../operation-node/json-reference-node.js';
|
|
4
5
|
import { OperationNode } from '../operation-node/operation-node.js';
|
|
5
6
|
export declare class JSONPathBuilder<S, O = S> {
|
|
6
7
|
#private;
|
|
7
|
-
constructor(node: JSONReferenceNode);
|
|
8
|
+
constructor(node: JSONReferenceNode | JSONPathNode);
|
|
8
9
|
/**
|
|
9
10
|
* Access an element of a JSON array in a specific location.
|
|
10
11
|
*
|
|
@@ -123,7 +124,7 @@ export declare class JSONPathBuilder<S, O = S> {
|
|
|
123
124
|
}
|
|
124
125
|
export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O> implements AliasableExpression<O> {
|
|
125
126
|
#private;
|
|
126
|
-
constructor(node: JSONReferenceNode);
|
|
127
|
+
constructor(node: JSONReferenceNode | JSONPathNode);
|
|
127
128
|
/** @private */
|
|
128
129
|
/**
|
|
129
130
|
* All expressions need to have this getter for complicated type-related reasons.
|
|
@@ -134,9 +134,12 @@ class JSONPathBuilder {
|
|
|
134
134
|
return this.#createBuilderWithPathLeg('Member', key);
|
|
135
135
|
}
|
|
136
136
|
#createBuilderWithPathLeg(legType, value) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
137
|
+
if (json_reference_node_js_1.JSONReferenceNode.is(this.#node)) {
|
|
138
|
+
return new TraversedJSONPathBuilder(json_reference_node_js_1.JSONReferenceNode.cloneWithTraversal(this.#node, json_path_node_js_1.JSONPathNode.is(this.#node.traversal)
|
|
139
|
+
? json_path_node_js_1.JSONPathNode.cloneWithLeg(this.#node.traversal, json_path_leg_node_js_1.JSONPathLegNode.create(legType, value))
|
|
140
|
+
: json_operator_chain_node_js_1.JSONOperatorChainNode.cloneWithValue(this.#node.traversal, value_node_js_1.ValueNode.createImmediate(value))));
|
|
141
|
+
}
|
|
142
|
+
return new TraversedJSONPathBuilder(json_path_node_js_1.JSONPathNode.cloneWithLeg(this.#node, json_path_leg_node_js_1.JSONPathLegNode.create(legType, value)));
|
|
140
143
|
}
|
|
141
144
|
}
|
|
142
145
|
exports.JSONPathBuilder = JSONPathBuilder;
|
|
@@ -4,7 +4,8 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
|
|
|
4
4
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
5
5
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
6
6
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
7
|
-
import {
|
|
7
|
+
import { UpdateObjectExpression } from '../parser/update-set-parser.js';
|
|
8
|
+
import { Updateable } from '../util/column-type.js';
|
|
8
9
|
import { AnyColumn, SqlBool } from '../util/type-utils.js';
|
|
9
10
|
import { WhereInterface } from './where-interface.js';
|
|
10
11
|
export declare class OnConflictBuilder<DB, TB extends keyof DB> implements WhereInterface<DB, TB> {
|
|
@@ -40,12 +41,6 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
40
41
|
* methods for alternative ways to specify the conflict target.
|
|
41
42
|
*/
|
|
42
43
|
expression(expression: Expression<any>): OnConflictBuilder<DB, TB>;
|
|
43
|
-
/**
|
|
44
|
-
* Specify an index predicate for the index target.
|
|
45
|
-
*
|
|
46
|
-
* See {@link WhereInterface.where} for more info.
|
|
47
|
-
*/
|
|
48
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): OnConflictBuilder<DB, TB>;
|
|
49
44
|
/**
|
|
50
45
|
* Adds a `where` expression to the query.
|
|
51
46
|
*
|
|
@@ -345,13 +340,60 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
345
340
|
* .execute()
|
|
346
341
|
* ```
|
|
347
342
|
*/
|
|
348
|
-
where
|
|
343
|
+
where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): OnConflictBuilder<DB, TB>;
|
|
344
|
+
where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): OnConflictBuilder<DB, TB>;
|
|
349
345
|
/**
|
|
350
|
-
*
|
|
346
|
+
* Adds a `where` clause where both sides of the operator are references
|
|
347
|
+
* to columns.
|
|
351
348
|
*
|
|
352
|
-
*
|
|
349
|
+
* The normal `where` method treats the right hand side argument as a
|
|
350
|
+
* value by default. `whereRef` treats it as a column reference. This method is
|
|
351
|
+
* expecially useful with joins and correlated subqueries.
|
|
352
|
+
*
|
|
353
|
+
* ### Examples
|
|
354
|
+
*
|
|
355
|
+
* Usage with a join:
|
|
356
|
+
*
|
|
357
|
+
* ```ts
|
|
358
|
+
* db.selectFrom(['person', 'pet'])
|
|
359
|
+
* .selectAll()
|
|
360
|
+
* .whereRef('person.first_name', '=', 'pet.name')
|
|
361
|
+
* ```
|
|
362
|
+
*
|
|
363
|
+
* The generated SQL (PostgreSQL):
|
|
364
|
+
*
|
|
365
|
+
* ```sql
|
|
366
|
+
* select * from "person", "pet" where "person"."first_name" = "pet"."name"
|
|
367
|
+
* ```
|
|
368
|
+
*
|
|
369
|
+
* Usage in a subquery:
|
|
370
|
+
*
|
|
371
|
+
* ```ts
|
|
372
|
+
* const persons = await db
|
|
373
|
+
* .selectFrom('person')
|
|
374
|
+
* .selectAll('person')
|
|
375
|
+
* .select((eb) => eb
|
|
376
|
+
* .selectFrom('pet')
|
|
377
|
+
* .select('name')
|
|
378
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
379
|
+
* .limit(1)
|
|
380
|
+
* .as('pet_name')
|
|
381
|
+
* )
|
|
382
|
+
* .execute()
|
|
383
|
+
* ```
|
|
384
|
+
*
|
|
385
|
+
* The generated SQL (PostgreSQL):
|
|
386
|
+
*
|
|
387
|
+
* ```sql
|
|
388
|
+
* select "person".*, (
|
|
389
|
+
* select "name"
|
|
390
|
+
* from "pet"
|
|
391
|
+
* where "pet"."owner_id" = "person"."id"
|
|
392
|
+
* limit $1
|
|
393
|
+
* ) as "pet_name"
|
|
394
|
+
* from "person"
|
|
353
395
|
*/
|
|
354
|
-
whereRef
|
|
396
|
+
whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): OnConflictBuilder<DB, TB>;
|
|
355
397
|
/**
|
|
356
398
|
* Clears all where expressions from the query.
|
|
357
399
|
*
|
|
@@ -435,7 +477,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
435
477
|
* )
|
|
436
478
|
* ```
|
|
437
479
|
*/
|
|
438
|
-
doUpdateSet(update:
|
|
480
|
+
doUpdateSet(update: UpdateObjectExpression<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
|
|
439
481
|
/**
|
|
440
482
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
441
483
|
* what the provided function returns.
|
|
@@ -446,7 +488,7 @@ export interface OnConflictBuilderProps {
|
|
|
446
488
|
readonly onConflictNode: OnConflictNode;
|
|
447
489
|
}
|
|
448
490
|
export type OnConflictDatabase<DB, TB extends keyof DB> = {
|
|
449
|
-
[K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB]
|
|
491
|
+
[K in keyof DB | 'excluded']: Updateable<K extends keyof DB ? DB[K] : DB[TB]>;
|
|
450
492
|
};
|
|
451
493
|
export type OnConflictTables<TB> = TB | 'excluded';
|
|
452
494
|
export declare class OnConflictDoNothingBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
|
|
@@ -462,7 +504,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
462
504
|
*
|
|
463
505
|
* See {@link WhereInterface.where} for more info.
|
|
464
506
|
*/
|
|
465
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
507
|
+
where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): OnConflictUpdateBuilder<DB, TB>;
|
|
466
508
|
/**
|
|
467
509
|
* Adds a `where` expression to the query.
|
|
468
510
|
*
|
|
@@ -762,13 +804,13 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
762
804
|
* .execute()
|
|
763
805
|
* ```
|
|
764
806
|
*/
|
|
765
|
-
where
|
|
807
|
+
where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): OnConflictUpdateBuilder<DB, TB>;
|
|
766
808
|
/**
|
|
767
809
|
* Specify a where condition for the update operation.
|
|
768
810
|
*
|
|
769
811
|
* See {@link WhereInterface.whereRef} for more info.
|
|
770
812
|
*/
|
|
771
|
-
whereRef
|
|
813
|
+
whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): OnConflictUpdateBuilder<DB, TB>;
|
|
772
814
|
/**
|
|
773
815
|
* Clears all where expressions from the query.
|
|
774
816
|
*
|
|
@@ -83,11 +83,6 @@ class OnConflictBuilder {
|
|
|
83
83
|
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, binary_operation_parser_js_1.parseValueBinaryOperationOrExpression)(args)),
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
|
-
/**
|
|
87
|
-
* Specify an index predicate for the index target.
|
|
88
|
-
*
|
|
89
|
-
* See {@link WhereInterface.whereRef} for more info.
|
|
90
|
-
*/
|
|
91
86
|
whereRef(lhs, op, rhs) {
|
|
92
87
|
return new OnConflictBuilder({
|
|
93
88
|
...this.#props,
|
|
@@ -175,7 +170,7 @@ class OnConflictBuilder {
|
|
|
175
170
|
return new OnConflictUpdateBuilder({
|
|
176
171
|
...this.#props,
|
|
177
172
|
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWith(this.#props.onConflictNode, {
|
|
178
|
-
updates: (0, update_set_parser_js_1.
|
|
173
|
+
updates: (0, update_set_parser_js_1.parseUpdateObjectExpression)(update),
|
|
179
174
|
}),
|
|
180
175
|
});
|
|
181
176
|
}
|
|
@@ -28,7 +28,7 @@ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNo
|
|
|
28
28
|
* from "person"
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
-
orderBy
|
|
31
|
+
orderBy<OE extends StringReference<DB, TB> | DynamicReferenceBuilder<any>>(orderBy: OE, direction?: OrderByDirectionExpression): OverBuilder<DB, TB>;
|
|
32
32
|
/**
|
|
33
33
|
* Adds partition by clause item/s inside the over function.
|
|
34
34
|
*
|
|
@@ -51,7 +51,7 @@ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNo
|
|
|
51
51
|
* ```
|
|
52
52
|
*/
|
|
53
53
|
partitionBy(partitionBy: ReadonlyArray<PartitionByExpression<DB, TB>>): OverBuilder<DB, TB>;
|
|
54
|
-
partitionBy
|
|
54
|
+
partitionBy<PE extends PartitionByExpression<DB, TB>>(partitionBy: PE): OverBuilder<DB, TB>;
|
|
55
55
|
/**
|
|
56
56
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
57
57
|
* what the provided function returns.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReturningRow } from '../parser/returning-parser.js';
|
|
2
|
-
import { SelectExpression } from '../parser/select-parser.js';
|
|
1
|
+
import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
2
|
+
import { SelectCallback, SelectExpression } from '../parser/select-parser.js';
|
|
3
3
|
import { Selectable } from '../util/column-type.js';
|
|
4
4
|
export interface ReturningInterface<DB, TB extends keyof DB, O> {
|
|
5
5
|
/**
|
|
@@ -62,6 +62,7 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
|
|
|
62
62
|
* ```
|
|
63
63
|
*/
|
|
64
64
|
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
65
|
+
returning<CB extends SelectCallback<DB, TB>>(callback: CB): ReturningInterface<DB, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
65
66
|
returning<SE extends SelectExpression<DB, TB>>(selection: SE): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
66
67
|
/**
|
|
67
68
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AliasableExpression } from '../expression/expression.js';
|
|
2
|
+
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
3
|
+
export interface SelectQueryBuilderExpression<O> extends AliasableExpression<O> {
|
|
4
|
+
get isSelectQueryBuilder(): true;
|
|
5
|
+
/**
|
|
6
|
+
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
7
|
+
*
|
|
8
|
+
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
9
|
+
* template tag to build the node:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* class SomeExpression<T> implements Expression<T> {
|
|
13
|
+
* toOperationNode(): OperationNode {
|
|
14
|
+
* return sql`some sql here`.toOperationNode()
|
|
15
|
+
* }
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
toOperationNode(): SelectQueryNode;
|
|
20
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
2
2
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
3
3
|
import { TableExpression } from '../parser/table-parser.js';
|
|
4
|
-
import { SelectExpression, Selection,
|
|
4
|
+
import { SelectExpression, Selection, AllSelection, SelectCallback, CallbackSelection } from '../parser/select-parser.js';
|
|
5
5
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
6
6
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
7
7
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
@@ -17,14 +17,15 @@ import { NoResultErrorConstructor } from './no-result-error.js';
|
|
|
17
17
|
import { HavingInterface } from './having-interface.js';
|
|
18
18
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
19
19
|
import { SetOperandExpression } from '../parser/set-operation-parser.js';
|
|
20
|
-
import {
|
|
20
|
+
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
21
21
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
22
22
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
23
23
|
import { Selectable } from '../util/column-type.js';
|
|
24
24
|
import { Streamable } from '../util/streamable.js';
|
|
25
25
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
26
26
|
import { ExpressionWrapper } from '../expression/expression-wrapper.js';
|
|
27
|
-
|
|
27
|
+
import { SelectQueryBuilderExpression } from './select-query-builder-expression.js';
|
|
28
|
+
export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInterface<DB, TB>, HavingInterface<DB, TB>, SelectQueryBuilderExpression<O>, Compilable<O>, Explainable, Streamable<O> {
|
|
28
29
|
/**
|
|
29
30
|
* Adds a `where` expression to the query.
|
|
30
31
|
*
|
|
@@ -324,8 +325,8 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
324
325
|
* .execute()
|
|
325
326
|
* ```
|
|
326
327
|
*/
|
|
327
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
328
|
-
where
|
|
328
|
+
where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): SelectQueryBuilder<DB, TB, O>;
|
|
329
|
+
where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
329
330
|
/**
|
|
330
331
|
* Adds a `where` clause where both sides of the operator are references
|
|
331
332
|
* to columns.
|
|
@@ -377,18 +378,18 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
377
378
|
* ) as "pet_name"
|
|
378
379
|
* from "person"
|
|
379
380
|
*/
|
|
380
|
-
whereRef
|
|
381
|
+
whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): SelectQueryBuilder<DB, TB, O>;
|
|
381
382
|
/**
|
|
382
383
|
* Just like {@link WhereInterface.where | where} but adds a `having` statement
|
|
383
384
|
* instead of a `where` statement.
|
|
384
385
|
*/
|
|
385
|
-
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
386
|
-
having
|
|
386
|
+
having<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): SelectQueryBuilder<DB, TB, O>;
|
|
387
|
+
having<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
387
388
|
/**
|
|
388
389
|
* Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
|
|
389
390
|
* instead of a `where` statement.
|
|
390
391
|
*/
|
|
391
|
-
havingRef
|
|
392
|
+
havingRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): SelectQueryBuilder<DB, TB, O>;
|
|
392
393
|
/**
|
|
393
394
|
* Adds a select statement to the query.
|
|
394
395
|
*
|
|
@@ -467,14 +468,14 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
467
468
|
*
|
|
468
469
|
* <!-- siteExample("select", "Aliases", 40) -->
|
|
469
470
|
*
|
|
470
|
-
* You can
|
|
471
|
+
* You can give an alias for selections and tables by appending `as the_alias` to the name:
|
|
471
472
|
*
|
|
472
473
|
* ```ts
|
|
473
474
|
* const persons = await db
|
|
474
|
-
* .selectFrom('person')
|
|
475
|
+
* .selectFrom('person as p')
|
|
475
476
|
* .select([
|
|
476
477
|
* 'first_name as fn',
|
|
477
|
-
* '
|
|
478
|
+
* 'p.last_name as ln'
|
|
478
479
|
* ])
|
|
479
480
|
* .execute()
|
|
480
481
|
* ```
|
|
@@ -484,8 +485,8 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
484
485
|
* ```sql
|
|
485
486
|
* select
|
|
486
487
|
* "first_name" as "fn",
|
|
487
|
-
* "
|
|
488
|
-
* from "person"
|
|
488
|
+
* "p"."last_name" as "ln"
|
|
489
|
+
* from "person" as "p"
|
|
489
490
|
* ```
|
|
490
491
|
*
|
|
491
492
|
* <!-- siteExample("select", "Complex selections", 50) -->
|
|
@@ -575,7 +576,9 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
575
576
|
* persons[0].id
|
|
576
577
|
* ```
|
|
577
578
|
*/
|
|
578
|
-
select<SE extends SelectExpression<DB, TB>>(
|
|
579
|
+
select<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): SelectQueryBuilder<DB, TB, O & Selection<DB, TB, SE>>;
|
|
580
|
+
select<CB extends SelectCallback<DB, TB>>(callback: CB): SelectQueryBuilder<DB, TB, O & CallbackSelection<DB, TB, CB>>;
|
|
581
|
+
select<SE extends SelectExpression<DB, TB>>(selection: SE): SelectQueryBuilder<DB, TB, O & Selection<DB, TB, SE>>;
|
|
579
582
|
/**
|
|
580
583
|
* Adds `distinct on` expressions to the select clause.
|
|
581
584
|
*
|
|
@@ -1032,9 +1035,9 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1032
1035
|
* order by "fn" asc
|
|
1033
1036
|
* ```
|
|
1034
1037
|
*/
|
|
1035
|
-
orderBy
|
|
1036
|
-
orderBy
|
|
1037
|
-
orderBy
|
|
1038
|
+
orderBy<OE extends UndirectedOrderByExpression<DB, TB, O>>(orderBy: OE, direction?: OrderByDirectionExpression): SelectQueryBuilder<DB, TB, O>;
|
|
1039
|
+
orderBy<OE extends DirectedOrderByStringReference<DB, TB, O>>(ref: OE): SelectQueryBuilder<DB, TB, O>;
|
|
1040
|
+
orderBy<OE extends OrderByExpression<DB, TB, O>>(refs: ReadonlyArray<OE>): SelectQueryBuilder<DB, TB, O>;
|
|
1038
1041
|
/**
|
|
1039
1042
|
* Adds a `group by` clause to the query.
|
|
1040
1043
|
*
|
|
@@ -1133,7 +1136,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1133
1136
|
* group by "first_name"
|
|
1134
1137
|
* ```
|
|
1135
1138
|
*/
|
|
1136
|
-
groupBy
|
|
1139
|
+
groupBy<GE extends GroupByArg<DB, TB, O>>(groupBy: GE): SelectQueryBuilder<DB, TB, O>;
|
|
1137
1140
|
/**
|
|
1138
1141
|
* Adds a limit clause to the query.
|
|
1139
1142
|
*
|
|
@@ -1201,7 +1204,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1201
1204
|
* .orderBy('name')
|
|
1202
1205
|
* ```
|
|
1203
1206
|
*/
|
|
1204
|
-
union
|
|
1207
|
+
union<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1205
1208
|
/**
|
|
1206
1209
|
* Combines another select query or raw expression to this query using `union all`.
|
|
1207
1210
|
*
|
|
@@ -1228,7 +1231,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1228
1231
|
* .orderBy('name')
|
|
1229
1232
|
* ```
|
|
1230
1233
|
*/
|
|
1231
|
-
unionAll
|
|
1234
|
+
unionAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1232
1235
|
/**
|
|
1233
1236
|
* Combines another select query or raw expression to this query using `intersect`.
|
|
1234
1237
|
*
|
|
@@ -1255,7 +1258,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1255
1258
|
* .orderBy('name')
|
|
1256
1259
|
* ```
|
|
1257
1260
|
*/
|
|
1258
|
-
intersect
|
|
1261
|
+
intersect<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1259
1262
|
/**
|
|
1260
1263
|
* Combines another select query or raw expression to this query using `intersect all`.
|
|
1261
1264
|
*
|
|
@@ -1282,7 +1285,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1282
1285
|
* .orderBy('name')
|
|
1283
1286
|
* ```
|
|
1284
1287
|
*/
|
|
1285
|
-
intersectAll
|
|
1288
|
+
intersectAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1286
1289
|
/**
|
|
1287
1290
|
* Combines another select query or raw expression to this query using `except`.
|
|
1288
1291
|
*
|
|
@@ -1309,7 +1312,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1309
1312
|
* .orderBy('name')
|
|
1310
1313
|
* ```
|
|
1311
1314
|
*/
|
|
1312
|
-
except
|
|
1315
|
+
except<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1313
1316
|
/**
|
|
1314
1317
|
* Combines another select query or raw expression to this query using `except all`.
|
|
1315
1318
|
*
|
|
@@ -1336,7 +1339,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1336
1339
|
* .orderBy('name')
|
|
1337
1340
|
* ```
|
|
1338
1341
|
*/
|
|
1339
|
-
exceptAll
|
|
1342
|
+
exceptAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
|
|
1340
1343
|
/**
|
|
1341
1344
|
* Gives an alias for the query. This method is only useful for sub queries.
|
|
1342
1345
|
*
|
|
@@ -1356,7 +1359,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1356
1359
|
* pets[0].owner_first_name
|
|
1357
1360
|
* ```
|
|
1358
1361
|
*/
|
|
1359
|
-
as<A extends string>(alias: A): AliasedSelectQueryBuilder<
|
|
1362
|
+
as<A extends string>(alias: A): AliasedSelectQueryBuilder<O, A>;
|
|
1360
1363
|
/**
|
|
1361
1364
|
* Clears all select clauses from the query.
|
|
1362
1365
|
*
|
|
@@ -1542,7 +1545,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1542
1545
|
* )
|
|
1543
1546
|
* ```
|
|
1544
1547
|
*/
|
|
1545
|
-
$if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<any, any, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<O2
|
|
1548
|
+
$if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<any, any, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<Omit<O2, keyof O>>>;
|
|
1546
1549
|
/**
|
|
1547
1550
|
* Change the output type of the query.
|
|
1548
1551
|
*
|
|
@@ -1637,6 +1640,22 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1637
1640
|
*
|
|
1638
1641
|
* functionThatExpectsPersonWithNonNullValue(person)
|
|
1639
1642
|
* ```
|
|
1643
|
+
*
|
|
1644
|
+
* Giving the explicit narrowed type (`string` in the example above) works fine for
|
|
1645
|
+
* simple types. If the type is complex, for example a JSON column or a subquery,
|
|
1646
|
+
* you can use the special `NotNull` type to make the column not null.
|
|
1647
|
+
*
|
|
1648
|
+
* ```ts
|
|
1649
|
+
* import { NotNull } from 'kysely'
|
|
1650
|
+
*
|
|
1651
|
+
* const person = await db.selectFrom('person')
|
|
1652
|
+
* .where('nullable_column', 'is not', null)
|
|
1653
|
+
* .selectAll()
|
|
1654
|
+
* .$narrowType<{ nullable_column: NotNull }>()
|
|
1655
|
+
* .executeTakeFirstOrThrow()
|
|
1656
|
+
*
|
|
1657
|
+
* functionThatExpectsPersonWithNonNullValue(person)
|
|
1658
|
+
* ```
|
|
1640
1659
|
*/
|
|
1641
1660
|
$narrowType<T>(): SelectQueryBuilder<DB, TB, NarrowPartial<O, T>>;
|
|
1642
1661
|
/**
|
|
@@ -1789,8 +1808,8 @@ export interface SelectQueryBuilderProps {
|
|
|
1789
1808
|
readonly queryNode: SelectQueryNode;
|
|
1790
1809
|
readonly executor: QueryExecutor;
|
|
1791
1810
|
}
|
|
1792
|
-
export interface AliasedSelectQueryBuilder<
|
|
1793
|
-
get
|
|
1811
|
+
export interface AliasedSelectQueryBuilder<O = undefined, A extends string = never> extends AliasedExpression<O, A> {
|
|
1812
|
+
get isAliasedSelectQueryBuilder(): true;
|
|
1794
1813
|
}
|
|
1795
1814
|
export type SelectQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? SelectQueryBuilder<DB, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : never;
|
|
1796
1815
|
type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? SelectQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & ShallowRecord<A, R>, TB | A, O>;
|
|
@@ -27,6 +27,9 @@ class SelectQueryBuilderImpl {
|
|
|
27
27
|
get expressionType() {
|
|
28
28
|
return undefined;
|
|
29
29
|
}
|
|
30
|
+
get isSelectQueryBuilder() {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
30
33
|
where(...args) {
|
|
31
34
|
return new SelectQueryBuilderImpl({
|
|
32
35
|
...this.#props,
|
|
@@ -342,8 +345,8 @@ class AliasedSelectQueryBuilderImpl {
|
|
|
342
345
|
get alias() {
|
|
343
346
|
return this.#alias;
|
|
344
347
|
}
|
|
345
|
-
get
|
|
346
|
-
return
|
|
348
|
+
get isAliasedSelectQueryBuilder() {
|
|
349
|
+
return true;
|
|
347
350
|
}
|
|
348
351
|
toOperationNode() {
|
|
349
352
|
return alias_node_js_1.AliasNode.create(this.#queryBuilder.toOperationNode(), identifier_node_js_1.IdentifierNode.create(this.#alias));
|
|
@@ -2,13 +2,13 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
|
|
|
2
2
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
3
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
4
4
|
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
5
|
-
import { SelectExpression,
|
|
6
|
-
import { ReturningRow } from '../parser/returning-parser.js';
|
|
5
|
+
import { SelectExpression, SelectCallback } from '../parser/select-parser.js';
|
|
6
|
+
import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
7
7
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
8
8
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
9
9
|
import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '../util/type-utils.js';
|
|
10
10
|
import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|
11
|
-
import { UpdateObject, UpdateObjectFactory } from '../parser/update-set-parser.js';
|
|
11
|
+
import { UpdateObject, UpdateObjectFactory, ExtractUpdateTypeFromReferenceExpression } from '../parser/update-set-parser.js';
|
|
12
12
|
import { Compilable } from '../util/compilable.js';
|
|
13
13
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
14
14
|
import { QueryId } from '../util/query-id.js';
|
|
@@ -24,6 +24,7 @@ import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../p
|
|
|
24
24
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
25
25
|
import { Streamable } from '../util/streamable.js';
|
|
26
26
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
27
|
+
import { ValueExpression } from '../parser/value-parser.js';
|
|
27
28
|
export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
|
|
28
29
|
#private;
|
|
29
30
|
constructor(props: UpdateQueryBuilderProps);
|
|
@@ -326,8 +327,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
326
327
|
* .execute()
|
|
327
328
|
* ```
|
|
328
329
|
*/
|
|
329
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
330
|
-
where
|
|
330
|
+
where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
331
|
+
where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
331
332
|
/**
|
|
332
333
|
* Adds a `where` clause where both sides of the operator are references
|
|
333
334
|
* to columns.
|
|
@@ -379,7 +380,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
379
380
|
* ) as "pet_name"
|
|
380
381
|
* from "person"
|
|
381
382
|
*/
|
|
382
|
-
whereRef
|
|
383
|
+
whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
383
384
|
/**
|
|
384
385
|
* Clears all where expressions from the query.
|
|
385
386
|
*
|
|
@@ -625,6 +626,20 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
625
626
|
* "id" = $4
|
|
626
627
|
* ```
|
|
627
628
|
*
|
|
629
|
+
* If you provide two arguments the first one is interpreted as the column
|
|
630
|
+
* (or other target) and the second as the value:
|
|
631
|
+
*
|
|
632
|
+
* ```ts
|
|
633
|
+
* const result = await db
|
|
634
|
+
* .updateTable('person')
|
|
635
|
+
* .set('first_name', 'Foo')
|
|
636
|
+
* // As always, both arguments can be arbitrary expressions or
|
|
637
|
+
* // callbacks that give you access to an expression builder:
|
|
638
|
+
* .set(sql`address['postalCode']`, (eb) => eb.val('61710))
|
|
639
|
+
* .where('id', '=', '1')
|
|
640
|
+
* .executeTakeFirst()
|
|
641
|
+
* ```
|
|
642
|
+
*
|
|
628
643
|
* On PostgreSQL you can chain `returning` to the query to get
|
|
629
644
|
* the updated rows' columns (or any other expression) as the
|
|
630
645
|
* return value:
|
|
@@ -682,6 +697,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
682
697
|
*/
|
|
683
698
|
set(update: UpdateObject<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
684
699
|
set(update: UpdateObjectFactory<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
700
|
+
set<RE extends ReferenceExpression<DB, UT>>(key: RE, value: ValueExpression<DB, TB, ExtractUpdateTypeFromReferenceExpression<DB, UT, RE>>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
685
701
|
/**
|
|
686
702
|
* Allows you to return data from modified rows.
|
|
687
703
|
*
|
|
@@ -741,7 +757,9 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
741
757
|
* .executeTakeFirst()
|
|
742
758
|
* ```
|
|
743
759
|
*/
|
|
744
|
-
returning<SE extends SelectExpression<DB, TB>>(
|
|
760
|
+
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
|
|
761
|
+
returning<CB extends SelectCallback<DB, TB>>(callback: CB): UpdateQueryBuilder<DB, UT, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
762
|
+
returning<SE extends SelectExpression<DB, TB>>(selection: SE): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
|
|
745
763
|
/**
|
|
746
764
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
747
765
|
* that support `returning` such as PostgreSQL.
|
|
@@ -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) {
|
|
@@ -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
|
*
|