kysely 0.26.1 → 0.26.3
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 +6 -6
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +3 -3
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +3 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +3 -2
- package/dist/cjs/dialect/postgres/postgres-adapter.js +2 -2
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +2 -2
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +4 -2
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +2 -2
- package/dist/cjs/driver/runtime-driver.js +17 -2
- package/dist/cjs/expression/expression-builder.d.ts +300 -27
- package/dist/cjs/expression/expression-builder.js +36 -26
- package/dist/cjs/expression/expression-wrapper.d.ts +177 -8
- package/dist/cjs/expression/expression-wrapper.js +4 -4
- package/dist/cjs/expression/expression.d.ts +64 -1
- package/dist/cjs/helpers/mysql.d.ts +14 -11
- package/dist/cjs/helpers/mysql.js +21 -32
- package/dist/cjs/helpers/postgres.d.ts +8 -5
- package/dist/cjs/helpers/postgres.js +8 -5
- package/dist/cjs/helpers/sqlite.d.ts +164 -0
- package/dist/cjs/helpers/sqlite.js +180 -0
- package/dist/cjs/index.d.ts +5 -3
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/kysely.d.ts +4 -3
- package/dist/cjs/kysely.js +1 -1
- package/dist/cjs/operation-node/common-table-expression-node.d.ts +4 -0
- package/dist/cjs/operation-node/common-table-expression-node.js +6 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/delete-query-node.js +3 -3
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +8 -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 +3 -0
- package/dist/cjs/operation-node/order-by-node.d.ts +2 -2
- package/dist/cjs/operation-node/order-by-node.js +4 -4
- package/dist/cjs/operation-node/over-node.d.ts +1 -1
- package/dist/cjs/operation-node/over-node.js +3 -3
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -4
- package/dist/cjs/operation-node/select-query-node.js +13 -7
- package/dist/cjs/operation-node/tuple-node.d.ts +12 -0
- package/dist/cjs/operation-node/tuple-node.js +18 -0
- package/dist/cjs/parser/binary-operation-parser.d.ts +11 -7
- package/dist/cjs/parser/binary-operation-parser.js +35 -46
- package/dist/cjs/parser/expression-parser.d.ts +10 -5
- package/dist/cjs/parser/join-parser.d.ts +2 -2
- package/dist/cjs/parser/join-parser.js +2 -3
- package/dist/cjs/parser/order-by-parser.d.ts +6 -2
- package/dist/cjs/parser/order-by-parser.js +41 -7
- package/dist/cjs/parser/parse-utils.js +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.js +1 -1
- package/dist/cjs/parser/returning-parser.d.ts +2 -1
- package/dist/cjs/parser/select-parser.d.ts +20 -9
- package/dist/cjs/parser/set-operation-parser.d.ts +3 -1
- package/dist/cjs/parser/set-operation-parser.js +13 -4
- package/dist/cjs/parser/tuple-parser.d.ts +47 -0
- package/dist/cjs/parser/tuple-parser.js +2 -0
- package/dist/cjs/parser/value-parser.d.ts +5 -3
- package/dist/cjs/parser/value-parser.js +12 -1
- package/dist/cjs/parser/with-parser.d.ts +3 -2
- package/dist/cjs/parser/with-parser.js +16 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +3 -3
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +4 -8
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +13 -0
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +50 -14
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -5
- package/dist/cjs/query-builder/aggregate-function-builder.js +2 -2
- package/dist/cjs/query-builder/case-builder.js +8 -4
- package/dist/cjs/query-builder/cte-builder.d.ts +20 -0
- package/dist/cjs/query-builder/cte-builder.js +39 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +39 -10
- package/dist/cjs/query-builder/delete-query-builder.js +3 -3
- package/dist/cjs/query-builder/function-module.d.ts +41 -6
- package/dist/cjs/query-builder/function-module.js +3 -0
- package/dist/cjs/query-builder/having-interface.d.ts +2 -5
- package/dist/cjs/query-builder/insert-query-builder.d.ts +5 -3
- package/dist/cjs/query-builder/join-builder.d.ts +2 -6
- package/dist/cjs/query-builder/join-builder.js +2 -2
- package/dist/cjs/query-builder/json-path-builder.d.ts +59 -3
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +65 -12
- package/dist/cjs/query-builder/on-conflict-builder.js +4 -4
- package/dist/cjs/query-builder/over-builder.js +1 -1
- 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 +206 -67
- package/dist/cjs/query-builder/select-query-builder.js +75 -924
- package/dist/cjs/query-builder/update-query-builder.d.ts +39 -10
- package/dist/cjs/query-builder/update-query-builder.js +2 -2
- package/dist/cjs/query-builder/where-interface.d.ts +32 -8
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +39 -7
- package/dist/cjs/query-creator.d.ts +76 -2
- package/dist/cjs/query-creator.js +36 -6
- package/dist/cjs/raw-builder/raw-builder.d.ts +87 -51
- package/dist/cjs/raw-builder/raw-builder.js +18 -45
- package/dist/cjs/raw-builder/sql.js +8 -8
- package/dist/cjs/schema/alter-table-builder.d.ts +4 -0
- package/dist/cjs/schema/alter-table-builder.js +12 -0
- package/dist/cjs/schema/create-index-builder.d.ts +1 -1
- package/dist/cjs/schema/create-index-builder.js +1 -1
- package/dist/cjs/schema/create-view-builder.d.ts +2 -2
- package/dist/cjs/util/column-type.d.ts +7 -6
- package/dist/cjs/util/infer-result.d.ts +2 -1
- package/dist/cjs/util/json-object-args.d.ts +3 -0
- package/dist/cjs/util/json-object-args.js +35 -0
- package/dist/cjs/util/object-utils.d.ts +1 -0
- package/dist/cjs/util/object-utils.js +9 -1
- package/dist/cjs/util/type-utils.d.ts +16 -17
- package/dist/esm/dialect/dialect-adapter-base.d.ts +3 -3
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +3 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +3 -2
- package/dist/esm/dialect/postgres/postgres-adapter.js +2 -2
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +2 -2
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +4 -2
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +2 -2
- package/dist/esm/driver/runtime-driver.js +17 -2
- package/dist/esm/expression/expression-builder.d.ts +300 -27
- package/dist/esm/expression/expression-builder.js +40 -30
- package/dist/esm/expression/expression-wrapper.d.ts +177 -8
- package/dist/esm/expression/expression-wrapper.js +5 -5
- package/dist/esm/expression/expression.d.ts +64 -1
- package/dist/esm/helpers/mysql.d.ts +14 -11
- package/dist/esm/helpers/mysql.js +21 -32
- package/dist/esm/helpers/postgres.d.ts +8 -5
- package/dist/esm/helpers/postgres.js +8 -5
- package/dist/esm/helpers/sqlite.d.ts +164 -0
- package/dist/esm/helpers/sqlite.js +175 -0
- package/dist/esm/index.d.ts +5 -3
- package/dist/esm/index.js +1 -0
- package/dist/esm/kysely.d.ts +4 -3
- package/dist/esm/kysely.js +1 -1
- package/dist/esm/operation-node/common-table-expression-node.d.ts +4 -0
- package/dist/esm/operation-node/common-table-expression-node.js +6 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -1
- package/dist/esm/operation-node/delete-query-node.js +3 -3
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +8 -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 +3 -0
- package/dist/esm/operation-node/order-by-node.d.ts +2 -2
- package/dist/esm/operation-node/order-by-node.js +4 -4
- package/dist/esm/operation-node/over-node.d.ts +1 -1
- package/dist/esm/operation-node/over-node.js +3 -3
- package/dist/esm/operation-node/select-query-node.d.ts +5 -4
- package/dist/esm/operation-node/select-query-node.js +13 -7
- package/dist/esm/operation-node/tuple-node.d.ts +12 -0
- package/dist/esm/operation-node/tuple-node.js +16 -0
- package/dist/esm/parser/binary-operation-parser.d.ts +11 -7
- package/dist/esm/parser/binary-operation-parser.js +36 -47
- package/dist/esm/parser/expression-parser.d.ts +10 -5
- package/dist/esm/parser/join-parser.d.ts +2 -2
- package/dist/esm/parser/join-parser.js +3 -4
- package/dist/esm/parser/order-by-parser.d.ts +6 -2
- package/dist/esm/parser/order-by-parser.js +40 -7
- package/dist/esm/parser/parse-utils.js +3 -3
- package/dist/esm/parser/reference-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.js +1 -1
- package/dist/esm/parser/returning-parser.d.ts +2 -1
- package/dist/esm/parser/select-parser.d.ts +20 -9
- package/dist/esm/parser/set-operation-parser.d.ts +3 -1
- package/dist/esm/parser/set-operation-parser.js +11 -2
- package/dist/esm/parser/tuple-parser.d.ts +47 -0
- package/dist/esm/parser/tuple-parser.js +2 -0
- package/dist/esm/parser/value-parser.d.ts +5 -3
- package/dist/esm/parser/value-parser.js +10 -1
- package/dist/esm/parser/with-parser.d.ts +3 -2
- package/dist/esm/parser/with-parser.js +16 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +3 -3
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +5 -9
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +13 -0
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +51 -15
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -5
- package/dist/esm/query-builder/aggregate-function-builder.js +3 -3
- package/dist/esm/query-builder/case-builder.js +10 -6
- package/dist/esm/query-builder/cte-builder.d.ts +20 -0
- package/dist/esm/query-builder/cte-builder.js +36 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +39 -10
- package/dist/esm/query-builder/delete-query-builder.js +4 -4
- package/dist/esm/query-builder/function-module.d.ts +41 -6
- package/dist/esm/query-builder/function-module.js +3 -0
- package/dist/esm/query-builder/having-interface.d.ts +2 -5
- package/dist/esm/query-builder/insert-query-builder.d.ts +5 -3
- package/dist/esm/query-builder/join-builder.d.ts +2 -6
- package/dist/esm/query-builder/join-builder.js +3 -3
- package/dist/esm/query-builder/json-path-builder.d.ts +59 -3
- package/dist/esm/query-builder/on-conflict-builder.d.ts +65 -12
- package/dist/esm/query-builder/on-conflict-builder.js +5 -5
- package/dist/esm/query-builder/over-builder.js +1 -1
- 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 +206 -67
- package/dist/esm/query-builder/select-query-builder.js +75 -923
- package/dist/esm/query-builder/update-query-builder.d.ts +39 -10
- package/dist/esm/query-builder/update-query-builder.js +3 -3
- package/dist/esm/query-builder/where-interface.d.ts +32 -8
- package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/esm/query-compiler/default-query-compiler.js +39 -7
- package/dist/esm/query-creator.d.ts +76 -2
- package/dist/esm/query-creator.js +37 -7
- package/dist/esm/raw-builder/raw-builder.d.ts +87 -51
- package/dist/esm/raw-builder/raw-builder.js +17 -42
- package/dist/esm/raw-builder/sql.js +9 -9
- package/dist/esm/schema/alter-table-builder.d.ts +4 -0
- package/dist/esm/schema/alter-table-builder.js +12 -0
- package/dist/esm/schema/create-index-builder.d.ts +1 -1
- package/dist/esm/schema/create-index-builder.js +2 -2
- package/dist/esm/schema/create-view-builder.d.ts +2 -2
- package/dist/esm/util/column-type.d.ts +7 -6
- package/dist/esm/util/infer-result.d.ts +2 -1
- package/dist/esm/util/json-object-args.d.ts +3 -0
- package/dist/esm/util/json-object-args.js +32 -0
- package/dist/esm/util/object-utils.d.ts +1 -0
- package/dist/esm/util/object-utils.js +7 -0
- package/dist/esm/util/type-utils.d.ts +16 -17
- package/helpers/sqlite.d.ts +1 -0
- package/helpers/sqlite.js +1 -0
- package/package.json +7 -4
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
2
2
|
import { ExpressionWrapper } from '../expression/expression-wrapper.js';
|
|
3
|
+
import { Expression } from '../expression/expression.js';
|
|
3
4
|
import { CoalesceReferenceExpressionList } from '../parser/coalesce-parser.js';
|
|
4
|
-
import { ExtractTypeFromReferenceExpression, ReferenceExpression, StringReference } from '../parser/reference-parser.js';
|
|
5
|
+
import { ExtractTypeFromReferenceExpression, ReferenceExpression, StringReference, ExtractTypeFromStringReference } from '../parser/reference-parser.js';
|
|
6
|
+
import { KyselyTypeError } from '../util/type-error.js';
|
|
5
7
|
import { Equals, IsAny } from '../util/type-utils.js';
|
|
6
8
|
import { AggregateFunctionBuilder } from './aggregate-function-builder.js';
|
|
9
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
7
10
|
/**
|
|
8
11
|
* Helpers for type safe SQL function calls.
|
|
9
12
|
*
|
|
@@ -109,7 +112,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
109
112
|
*/
|
|
110
113
|
agg<O>(name: string, args?: ReadonlyArray<ReferenceExpression<DB, TB>>): AggregateFunctionBuilder<DB, TB, O>;
|
|
111
114
|
/**
|
|
112
|
-
* Calls the `avg` function for the column given as the argument.
|
|
115
|
+
* Calls the `avg` function for the column or expression given as the argument.
|
|
113
116
|
*
|
|
114
117
|
* This sql function calculates the average value for a given column.
|
|
115
118
|
*
|
|
@@ -229,7 +232,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
229
232
|
*/
|
|
230
233
|
coalesce<V extends ReferenceExpression<DB, TB>, OV extends ReferenceExpression<DB, TB>[]>(value: V, ...otherValues: OV): ExpressionWrapper<DB, TB, CoalesceReferenceExpressionList<DB, TB, [V, ...OV]>>;
|
|
231
234
|
/**
|
|
232
|
-
* Calls the `count` function for the column given as the argument.
|
|
235
|
+
* Calls the `count` function for the column or expression given as the argument.
|
|
233
236
|
*
|
|
234
237
|
* When called with a column as argument, this sql function counts the number of rows where there
|
|
235
238
|
* is a non-null value in that column.
|
|
@@ -351,7 +354,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
351
354
|
countAll<O extends number | string | bigint, T extends TB = TB>(table: T): AggregateFunctionBuilder<DB, TB, O>;
|
|
352
355
|
countAll<O extends number | string | bigint>(): AggregateFunctionBuilder<DB, TB, O>;
|
|
353
356
|
/**
|
|
354
|
-
* Calls the `max` function for the column given as the argument.
|
|
357
|
+
* Calls the `max` function for the column or expression given as the argument.
|
|
355
358
|
*
|
|
356
359
|
* This sql function calculates the maximum value for a given column.
|
|
357
360
|
*
|
|
@@ -399,7 +402,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
399
402
|
max<O extends number | string | bigint | null = any, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: OutputBoundStringReference<DB, TB, C, O>): StringReferenceBoundAggregateFunctionBuilder<DB, TB, C, O>;
|
|
400
403
|
max<O extends number | string | bigint | null = number | string | bigint>(column: DynamicReferenceBuilder): AggregateFunctionBuilder<DB, TB, O>;
|
|
401
404
|
/**
|
|
402
|
-
* Calls the `min` function for the column given as the argument.
|
|
405
|
+
* Calls the `min` function for the column or expression given as the argument.
|
|
403
406
|
*
|
|
404
407
|
* This sql function calculates the minimum value for a given column.
|
|
405
408
|
*
|
|
@@ -447,7 +450,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
447
450
|
min<O extends number | string | bigint | null = any, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: OutputBoundStringReference<DB, TB, C, O>): StringReferenceBoundAggregateFunctionBuilder<DB, TB, C, O>;
|
|
448
451
|
min<O extends number | string | bigint | null = number | string | bigint>(column: DynamicReferenceBuilder): AggregateFunctionBuilder<DB, TB, O>;
|
|
449
452
|
/**
|
|
450
|
-
* Calls the `sum` function for the column given as the argument.
|
|
453
|
+
* Calls the `sum` function for the column or expression given as the argument.
|
|
451
454
|
*
|
|
452
455
|
* This sql function sums the values of a given column.
|
|
453
456
|
*
|
|
@@ -505,6 +508,38 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
505
508
|
* ```
|
|
506
509
|
*/
|
|
507
510
|
sum<O extends number | string | bigint | null = number | string | bigint, C extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(column: C): AggregateFunctionBuilder<DB, TB, O>;
|
|
511
|
+
/**
|
|
512
|
+
* Calls the `any` function for the column or expression given as the argument.
|
|
513
|
+
*
|
|
514
|
+
* The argument must be a subquery or evaluate to an array.
|
|
515
|
+
*
|
|
516
|
+
* ### Examples
|
|
517
|
+
*
|
|
518
|
+
* In the following example, `nicknames` is assumed to be a column of type `string[]`:
|
|
519
|
+
*
|
|
520
|
+
* ```ts
|
|
521
|
+
* db.selectFrom('person')
|
|
522
|
+
* .selectAll('person')
|
|
523
|
+
* .where((eb) => eb(
|
|
524
|
+
* eb.val('Jen'), '=', eb.fn.any('person.nicknames')
|
|
525
|
+
* ))
|
|
526
|
+
* ```
|
|
527
|
+
*
|
|
528
|
+
*
|
|
529
|
+
* The generated SQL (PostgreSQL):
|
|
530
|
+
*
|
|
531
|
+
* ```sql
|
|
532
|
+
* select
|
|
533
|
+
* "person".*
|
|
534
|
+
* from
|
|
535
|
+
* "person"
|
|
536
|
+
* where
|
|
537
|
+
* $1 = any("person"."nicknames")
|
|
538
|
+
* ```
|
|
539
|
+
*/
|
|
540
|
+
any<RE extends StringReference<DB, TB>>(expr: RE): Exclude<ExtractTypeFromStringReference<DB, TB, RE>, null> extends ReadonlyArray<infer I> ? ExpressionWrapper<DB, TB, I> : KyselyTypeError<'any(expr) call failed: expr must be an array'>;
|
|
541
|
+
any<T>(subquery: SelectQueryBuilderExpression<Record<string, T>>): ExpressionWrapper<DB, TB, T>;
|
|
542
|
+
any<T>(expr: Expression<ReadonlyArray<T>>): ExpressionWrapper<DB, TB, T>;
|
|
508
543
|
}
|
|
509
544
|
export declare function createFunctionModule<DB, TB extends keyof DB>(): FunctionModule<DB, TB>;
|
|
510
545
|
type OutputBoundStringReference<DB, TB extends keyof DB, C extends StringReference<DB, TB>, O> = IsAny<O> extends true ? C : Equals<ExtractTypeFromReferenceExpression<DB, TB, C> | null, O | null> extends true ? C : never;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
2
|
-
import { Expression } from '../expression/expression.js';
|
|
3
1
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
2
|
+
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
4
3
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
5
4
|
import { SqlBool } from '../util/type-utils.js';
|
|
6
5
|
export interface HavingInterface<DB, TB extends keyof DB> {
|
|
@@ -9,12 +8,10 @@ export interface HavingInterface<DB, TB extends keyof DB> {
|
|
|
9
8
|
* instead of a `where` statement.
|
|
10
9
|
*/
|
|
11
10
|
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): HavingInterface<DB, TB>;
|
|
12
|
-
having(
|
|
13
|
-
having(expression: Expression<any>): HavingInterface<DB, TB>;
|
|
11
|
+
having(expression: ExpressionOrFactory<DB, TB, SqlBool>): HavingInterface<DB, TB>;
|
|
14
12
|
/**
|
|
15
13
|
* Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
|
|
16
14
|
* instead of a `where` statement.
|
|
17
15
|
*/
|
|
18
16
|
havingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
19
17
|
}
|
|
20
|
-
export type HavingExpressionFactory<DB, TB extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => Expression<SqlBool>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
2
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
|
-
import { SelectExpression,
|
|
3
|
+
import { SelectExpression, SelectCallback } from '../parser/select-parser.js';
|
|
4
4
|
import { InsertObjectOrList, InsertObjectOrListFactory } from '../parser/insert-values-parser.js';
|
|
5
5
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|
6
6
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
@@ -11,7 +11,7 @@ import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
|
11
11
|
import { QueryId } from '../util/query-id.js';
|
|
12
12
|
import { InsertResult } from './insert-result.js';
|
|
13
13
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
14
|
-
import { ReturningRow } from '../parser/returning-parser.js';
|
|
14
|
+
import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
15
15
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
16
16
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
17
17
|
import { ReturningInterface } from './returning-interface.js';
|
|
@@ -474,7 +474,9 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
474
474
|
* .executeTakeFirst()
|
|
475
475
|
* ```
|
|
476
476
|
*/
|
|
477
|
-
returning<SE extends SelectExpression<DB, TB>>(
|
|
477
|
+
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
478
|
+
returning<CB extends SelectCallback<DB, TB>>(callback: CB): InsertQueryBuilder<DB, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
479
|
+
returning<SE extends SelectExpression<DB, TB>>(selection: SE): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
478
480
|
/**
|
|
479
481
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
480
482
|
* that support `returning` such as PostgreSQL.
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
2
|
-
import { Expression } from '../expression/expression.js';
|
|
3
1
|
import { JoinNode } from '../operation-node/join-node.js';
|
|
4
2
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
5
3
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
4
|
+
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
6
5
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
7
6
|
import { SqlBool } from '../util/type-utils.js';
|
|
8
7
|
export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
|
|
@@ -15,8 +14,7 @@ export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNo
|
|
|
15
14
|
* See {@link WhereInterface.where} for documentation and examples.
|
|
16
15
|
*/
|
|
17
16
|
on<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): JoinBuilder<DB, TB>;
|
|
18
|
-
on(
|
|
19
|
-
on(expression: Expression<any>): JoinBuilder<DB, TB>;
|
|
17
|
+
on(expression: ExpressionOrFactory<DB, TB, SqlBool>): JoinBuilder<DB, TB>;
|
|
20
18
|
/**
|
|
21
19
|
* Just like {@link WhereInterface.whereRef} but adds an item to the join's
|
|
22
20
|
* `on` clause instead.
|
|
@@ -38,5 +36,3 @@ export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNo
|
|
|
38
36
|
export interface JoinBuilderProps {
|
|
39
37
|
readonly joinNode: JoinNode;
|
|
40
38
|
}
|
|
41
|
-
type OnExpressionFactory<DB, TB extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => Expression<SqlBool>;
|
|
42
|
-
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="./join-builder.d.ts" />
|
|
2
2
|
import { JoinNode } from '../operation-node/join-node.js';
|
|
3
3
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
4
|
-
import {
|
|
4
|
+
import { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';
|
|
5
5
|
import { freeze } from '../util/object-utils.js';
|
|
6
6
|
import { preventAwait } from '../util/prevent-await.js';
|
|
7
7
|
export class JoinBuilder {
|
|
@@ -12,7 +12,7 @@ export class JoinBuilder {
|
|
|
12
12
|
on(...args) {
|
|
13
13
|
return new JoinBuilder({
|
|
14
14
|
...this.#props,
|
|
15
|
-
joinNode: JoinNode.cloneWithOn(this.#props.joinNode,
|
|
15
|
+
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseValueBinaryOperationOrExpression(args)),
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
@@ -24,7 +24,7 @@ export class JoinBuilder {
|
|
|
24
24
|
onRef(lhs, op, rhs) {
|
|
25
25
|
return new JoinBuilder({
|
|
26
26
|
...this.#props,
|
|
27
|
-
joinNode: JoinNode.cloneWithOn(this.#props.joinNode,
|
|
27
|
+
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseReferentialBinaryOperation(lhs, op, rhs)),
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
1
|
+
import { AliasableExpression, AliasedExpression, Expression } from '../expression/expression.js';
|
|
2
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
3
|
import { JSONReferenceNode } from '../operation-node/json-reference-node.js';
|
|
4
4
|
import { OperationNode } from '../operation-node/operation-node.js';
|
|
@@ -119,9 +119,9 @@ export declare class JSONPathBuilder<S, O = S> {
|
|
|
119
119
|
* select "profile"->'addresses'->0->'city' as "city" from "person"
|
|
120
120
|
* ```
|
|
121
121
|
*/
|
|
122
|
-
key<K extends any[] extends O ? never : O extends object ? keyof NonNullable<O> & string : never, O2 = undefined extends O ? null | NonNullable<NonNullable<O>[K]> : null extends O ? null | NonNullable<NonNullable<O>[K]> : NonNullable<O>[K]>(key: K): TraversedJSONPathBuilder<S, O2>;
|
|
122
|
+
key<K extends any[] extends O ? never : O extends object ? keyof NonNullable<O> & string : never, O2 = undefined extends O ? null | NonNullable<NonNullable<O>[K]> : null extends O ? null | NonNullable<NonNullable<O>[K]> : string extends keyof NonNullable<O> ? null | NonNullable<NonNullable<O>[K]> : NonNullable<O>[K]>(key: K): TraversedJSONPathBuilder<S, O2>;
|
|
123
123
|
}
|
|
124
|
-
export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O> implements
|
|
124
|
+
export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O> implements AliasableExpression<O> {
|
|
125
125
|
#private;
|
|
126
126
|
constructor(node: JSONReferenceNode);
|
|
127
127
|
/** @private */
|
|
@@ -168,6 +168,62 @@ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O
|
|
|
168
168
|
* ```
|
|
169
169
|
*/
|
|
170
170
|
as<A extends string>(alias: A): AliasedExpression<O, A>;
|
|
171
|
+
/**
|
|
172
|
+
* Returns an aliased version of the expression.
|
|
173
|
+
*
|
|
174
|
+
* In addition to slapping `as "the_alias"` at the end of the expression,
|
|
175
|
+
* this method also provides strict typing:
|
|
176
|
+
*
|
|
177
|
+
* ```ts
|
|
178
|
+
* const result = await db
|
|
179
|
+
* .selectFrom('person')
|
|
180
|
+
* .select((eb) =>
|
|
181
|
+
* // `eb.fn<string>` returns an AliasableExpression<string>
|
|
182
|
+
* eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
|
|
183
|
+
* )
|
|
184
|
+
* .executeTakeFirstOrThrow()
|
|
185
|
+
*
|
|
186
|
+
* // `full_name: string` field exists in the result type.
|
|
187
|
+
* console.log(result.full_name)
|
|
188
|
+
* ```
|
|
189
|
+
*
|
|
190
|
+
* The generated SQL (PostgreSQL):
|
|
191
|
+
*
|
|
192
|
+
* ```ts
|
|
193
|
+
* select
|
|
194
|
+
* concat("first_name", $1, "last_name") as "full_name"
|
|
195
|
+
* from
|
|
196
|
+
* "person"
|
|
197
|
+
* ```
|
|
198
|
+
*
|
|
199
|
+
* You can also pass in a raw SQL snippet (or any expression) but in that case you must
|
|
200
|
+
* provide the alias as the only type argument:
|
|
201
|
+
*
|
|
202
|
+
* ```ts
|
|
203
|
+
* const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
|
|
204
|
+
*
|
|
205
|
+
* // The alias is `t(a, b)` which specifies the column names
|
|
206
|
+
* // in addition to the table name. We must tell kysely that
|
|
207
|
+
* // columns of the table can be referenced through `t`
|
|
208
|
+
* // by providing an explicit type argument.
|
|
209
|
+
* const aliasedValues = values.as<'t'>(sql`t(a, b)`)
|
|
210
|
+
*
|
|
211
|
+
* await db
|
|
212
|
+
* .insertInto('person')
|
|
213
|
+
* .columns(['first_name', 'last_name'])
|
|
214
|
+
* .expression(
|
|
215
|
+
* db.selectFrom(aliasedValues).select(['t.a', 't.b'])
|
|
216
|
+
* )
|
|
217
|
+
* ```
|
|
218
|
+
*
|
|
219
|
+
* The generated SQL (PostgreSQL):
|
|
220
|
+
*
|
|
221
|
+
* ```ts
|
|
222
|
+
* insert into "person" ("first_name", "last_name")
|
|
223
|
+
* from (values (1, 'foo')) as t(a, b)
|
|
224
|
+
* select "t"."a", "t"."b"
|
|
225
|
+
* ```
|
|
226
|
+
*/
|
|
171
227
|
as<A extends string>(alias: Expression<unknown>): AliasedExpression<O, A>;
|
|
172
228
|
/**
|
|
173
229
|
* Change the output type of the json path.
|
|
@@ -2,10 +2,11 @@ import { Expression } from '../expression/expression.js';
|
|
|
2
2
|
import { OnConflictNode } from '../operation-node/on-conflict-node.js';
|
|
3
3
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
4
4
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
5
|
+
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
5
6
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
6
7
|
import { UpdateExpression } from '../parser/update-set-parser.js';
|
|
7
|
-
import { AnyColumn } from '../util/type-utils.js';
|
|
8
|
-
import {
|
|
8
|
+
import { AnyColumn, SqlBool } from '../util/type-utils.js';
|
|
9
|
+
import { WhereInterface } from './where-interface.js';
|
|
9
10
|
export declare class OnConflictBuilder<DB, TB extends keyof DB> implements WhereInterface<DB, TB> {
|
|
10
11
|
#private;
|
|
11
12
|
constructor(props: OnConflictBuilderProps);
|
|
@@ -98,7 +99,34 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
98
99
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
99
100
|
* ```
|
|
100
101
|
*
|
|
101
|
-
* <!-- siteExample("where", "
|
|
102
|
+
* <!-- siteExample("where", "Object filter", 30) -->
|
|
103
|
+
*
|
|
104
|
+
* You can use the `and` function to create a simple equality
|
|
105
|
+
* filter using an object
|
|
106
|
+
*
|
|
107
|
+
* ```ts
|
|
108
|
+
* const persons = await db
|
|
109
|
+
* .selectFrom('person')
|
|
110
|
+
* .selectAll()
|
|
111
|
+
* .where((eb) => eb.and({
|
|
112
|
+
* first_name: 'Jennifer',
|
|
113
|
+
* last_name: eb.ref('first_name')
|
|
114
|
+
* }))
|
|
115
|
+
* .execute()
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* The generated SQL (PostgreSQL):
|
|
119
|
+
*
|
|
120
|
+
* ```sql
|
|
121
|
+
* select *
|
|
122
|
+
* from "person"
|
|
123
|
+
* where (
|
|
124
|
+
* "first_name" = $1
|
|
125
|
+
* and "last_name" = "first_name"
|
|
126
|
+
* )
|
|
127
|
+
* ```
|
|
128
|
+
*
|
|
129
|
+
* <!-- siteExample("where", "OR where", 40) -->
|
|
102
130
|
*
|
|
103
131
|
* To combine conditions using `OR`, you can use the expression builder.
|
|
104
132
|
* There are two ways to create `OR` expressions. Both are shown in this
|
|
@@ -133,7 +161,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
133
161
|
* )
|
|
134
162
|
* ```
|
|
135
163
|
*
|
|
136
|
-
* <!-- siteExample("where", "Conditional where calls",
|
|
164
|
+
* <!-- siteExample("where", "Conditional where calls", 50) -->
|
|
137
165
|
*
|
|
138
166
|
* You can add expressions conditionally like this:
|
|
139
167
|
*
|
|
@@ -228,7 +256,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
228
256
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
229
257
|
* ```
|
|
230
258
|
*
|
|
231
|
-
* <!-- siteExample("where", "Complex where clause",
|
|
259
|
+
* <!-- siteExample("where", "Complex where clause", 60) -->
|
|
232
260
|
*
|
|
233
261
|
* For complex `where` expressions you can pass in a single callback and
|
|
234
262
|
* use the `ExpressionBuilder` to build your expression:
|
|
@@ -317,8 +345,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
317
345
|
* .execute()
|
|
318
346
|
* ```
|
|
319
347
|
*/
|
|
320
|
-
where(
|
|
321
|
-
where(expression: Expression<any>): OnConflictBuilder<DB, TB>;
|
|
348
|
+
where(expression: ExpressionOrFactory<DB, TB, SqlBool>): OnConflictBuilder<DB, TB>;
|
|
322
349
|
/**
|
|
323
350
|
* Specify an index predicate for the index target.
|
|
324
351
|
*
|
|
@@ -489,7 +516,34 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
489
516
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
490
517
|
* ```
|
|
491
518
|
*
|
|
492
|
-
* <!-- siteExample("where", "
|
|
519
|
+
* <!-- siteExample("where", "Object filter", 30) -->
|
|
520
|
+
*
|
|
521
|
+
* You can use the `and` function to create a simple equality
|
|
522
|
+
* filter using an object
|
|
523
|
+
*
|
|
524
|
+
* ```ts
|
|
525
|
+
* const persons = await db
|
|
526
|
+
* .selectFrom('person')
|
|
527
|
+
* .selectAll()
|
|
528
|
+
* .where((eb) => eb.and({
|
|
529
|
+
* first_name: 'Jennifer',
|
|
530
|
+
* last_name: eb.ref('first_name')
|
|
531
|
+
* }))
|
|
532
|
+
* .execute()
|
|
533
|
+
* ```
|
|
534
|
+
*
|
|
535
|
+
* The generated SQL (PostgreSQL):
|
|
536
|
+
*
|
|
537
|
+
* ```sql
|
|
538
|
+
* select *
|
|
539
|
+
* from "person"
|
|
540
|
+
* where (
|
|
541
|
+
* "first_name" = $1
|
|
542
|
+
* and "last_name" = "first_name"
|
|
543
|
+
* )
|
|
544
|
+
* ```
|
|
545
|
+
*
|
|
546
|
+
* <!-- siteExample("where", "OR where", 40) -->
|
|
493
547
|
*
|
|
494
548
|
* To combine conditions using `OR`, you can use the expression builder.
|
|
495
549
|
* There are two ways to create `OR` expressions. Both are shown in this
|
|
@@ -524,7 +578,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
524
578
|
* )
|
|
525
579
|
* ```
|
|
526
580
|
*
|
|
527
|
-
* <!-- siteExample("where", "Conditional where calls",
|
|
581
|
+
* <!-- siteExample("where", "Conditional where calls", 50) -->
|
|
528
582
|
*
|
|
529
583
|
* You can add expressions conditionally like this:
|
|
530
584
|
*
|
|
@@ -619,7 +673,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
619
673
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
620
674
|
* ```
|
|
621
675
|
*
|
|
622
|
-
* <!-- siteExample("where", "Complex where clause",
|
|
676
|
+
* <!-- siteExample("where", "Complex where clause", 60) -->
|
|
623
677
|
*
|
|
624
678
|
* For complex `where` expressions you can pass in a single callback and
|
|
625
679
|
* use the `ExpressionBuilder` to build your expression:
|
|
@@ -708,8 +762,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
708
762
|
* .execute()
|
|
709
763
|
* ```
|
|
710
764
|
*/
|
|
711
|
-
where(
|
|
712
|
-
where(expression: Expression<any>): OnConflictUpdateBuilder<DB, TB>;
|
|
765
|
+
where(expression: ExpressionOrFactory<DB, TB, SqlBool>): OnConflictUpdateBuilder<DB, TB>;
|
|
713
766
|
/**
|
|
714
767
|
* Specify a where condition for the update operation.
|
|
715
768
|
*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
3
3
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
4
4
|
import { OnConflictNode } from '../operation-node/on-conflict-node.js';
|
|
5
|
-
import {
|
|
5
|
+
import { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';
|
|
6
6
|
import { parseUpdateExpression, } from '../parser/update-set-parser.js';
|
|
7
7
|
import { freeze } from '../util/object-utils.js';
|
|
8
8
|
import { preventAwait } from '../util/prevent-await.js';
|
|
@@ -78,7 +78,7 @@ export class OnConflictBuilder {
|
|
|
78
78
|
where(...args) {
|
|
79
79
|
return new OnConflictBuilder({
|
|
80
80
|
...this.#props,
|
|
81
|
-
onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode,
|
|
81
|
+
onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseValueBinaryOperationOrExpression(args)),
|
|
82
82
|
});
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
@@ -89,7 +89,7 @@ export class OnConflictBuilder {
|
|
|
89
89
|
whereRef(lhs, op, rhs) {
|
|
90
90
|
return new OnConflictBuilder({
|
|
91
91
|
...this.#props,
|
|
92
|
-
onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode,
|
|
92
|
+
onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseReferentialBinaryOperation(lhs, op, rhs)),
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
95
|
clearWhere() {
|
|
@@ -204,7 +204,7 @@ export class OnConflictUpdateBuilder {
|
|
|
204
204
|
where(...args) {
|
|
205
205
|
return new OnConflictUpdateBuilder({
|
|
206
206
|
...this.#props,
|
|
207
|
-
onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode,
|
|
207
|
+
onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseValueBinaryOperationOrExpression(args)),
|
|
208
208
|
});
|
|
209
209
|
}
|
|
210
210
|
/**
|
|
@@ -215,7 +215,7 @@ export class OnConflictUpdateBuilder {
|
|
|
215
215
|
whereRef(lhs, op, rhs) {
|
|
216
216
|
return new OnConflictUpdateBuilder({
|
|
217
217
|
...this.#props,
|
|
218
|
-
onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode,
|
|
218
|
+
onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseReferentialBinaryOperation(lhs, op, rhs)),
|
|
219
219
|
});
|
|
220
220
|
}
|
|
221
221
|
clearWhere() {
|
|
@@ -32,7 +32,7 @@ export class OverBuilder {
|
|
|
32
32
|
*/
|
|
33
33
|
orderBy(orderBy, direction) {
|
|
34
34
|
return new OverBuilder({
|
|
35
|
-
overNode: OverNode.
|
|
35
|
+
overNode: OverNode.cloneWithOrderByItems(this.#props.overNode, parseOrderBy([orderBy, direction])),
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
38
|
partitionBy(partitionBy) {
|
|
@@ -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
|
+
}
|