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,3 +1,5 @@
|
|
|
1
|
+
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
1
2
|
import { Expression } from '../expression/expression.js';
|
|
2
3
|
import { SetOperator, SetOperationNode } from '../operation-node/set-operation-node.js';
|
|
3
|
-
export
|
|
4
|
+
export type SetOperandExpression<DB, O> = Expression<O> | ReadonlyArray<Expression<O>> | ((eb: ExpressionBuilder<DB, never>) => Expression<O> | ReadonlyArray<Expression<O>>);
|
|
5
|
+
export declare function parseSetOperations(operator: SetOperator, expression: SetOperandExpression<any, any>, all: boolean): SetOperationNode[];
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseSetOperations = void 0;
|
|
4
|
+
const expression_builder_js_1 = require("../expression/expression-builder.js");
|
|
4
5
|
const set_operation_node_js_1 = require("../operation-node/set-operation-node.js");
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
7
|
+
const expression_parser_js_1 = require("./expression-parser.js");
|
|
8
|
+
function parseSetOperations(operator, expression, all) {
|
|
9
|
+
if ((0, object_utils_js_1.isFunction)(expression)) {
|
|
10
|
+
expression = expression((0, expression_builder_js_1.createExpressionBuilder)());
|
|
11
|
+
}
|
|
12
|
+
if (!(0, object_utils_js_1.isReadonlyArray)(expression)) {
|
|
13
|
+
expression = [expression];
|
|
14
|
+
}
|
|
15
|
+
return expression.map((expr) => set_operation_node_js_1.SetOperationNode.create(operator, (0, expression_parser_js_1.parseExpression)(expr), all));
|
|
7
16
|
}
|
|
8
|
-
exports.
|
|
17
|
+
exports.parseSetOperations = parseSetOperations;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { DrainOuterGeneric } from '../util/type-utils.js';
|
|
2
|
+
import { ExtractTypeFromReferenceExpression } from './reference-parser.js';
|
|
3
|
+
import { ExtractTypeFromValueExpression } from './value-parser.js';
|
|
4
|
+
export type RefTuple2<DB, TB extends keyof DB, R1, R2> = DrainOuterGeneric<[
|
|
5
|
+
ExtractTypeFromReferenceExpression<DB, TB, R1>,
|
|
6
|
+
ExtractTypeFromReferenceExpression<DB, TB, R2>
|
|
7
|
+
]>;
|
|
8
|
+
export type RefTuple3<DB, TB extends keyof DB, R1, R2, R3> = DrainOuterGeneric<[
|
|
9
|
+
ExtractTypeFromReferenceExpression<DB, TB, R1>,
|
|
10
|
+
ExtractTypeFromReferenceExpression<DB, TB, R2>,
|
|
11
|
+
ExtractTypeFromReferenceExpression<DB, TB, R3>
|
|
12
|
+
]>;
|
|
13
|
+
export type RefTuple4<DB, TB extends keyof DB, R1, R2, R3, R4> = DrainOuterGeneric<[
|
|
14
|
+
ExtractTypeFromReferenceExpression<DB, TB, R1>,
|
|
15
|
+
ExtractTypeFromReferenceExpression<DB, TB, R2>,
|
|
16
|
+
ExtractTypeFromReferenceExpression<DB, TB, R3>,
|
|
17
|
+
ExtractTypeFromReferenceExpression<DB, TB, R4>
|
|
18
|
+
]>;
|
|
19
|
+
export type RefTuple5<DB, TB extends keyof DB, R1, R2, R3, R4, R5> = DrainOuterGeneric<[
|
|
20
|
+
ExtractTypeFromReferenceExpression<DB, TB, R1>,
|
|
21
|
+
ExtractTypeFromReferenceExpression<DB, TB, R2>,
|
|
22
|
+
ExtractTypeFromReferenceExpression<DB, TB, R3>,
|
|
23
|
+
ExtractTypeFromReferenceExpression<DB, TB, R4>,
|
|
24
|
+
ExtractTypeFromReferenceExpression<DB, TB, R5>
|
|
25
|
+
]>;
|
|
26
|
+
export type ValTuple2<V1, V2> = DrainOuterGeneric<[
|
|
27
|
+
ExtractTypeFromValueExpression<V1>,
|
|
28
|
+
ExtractTypeFromValueExpression<V2>
|
|
29
|
+
]>;
|
|
30
|
+
export type ValTuple3<V1, V2, V3> = DrainOuterGeneric<[
|
|
31
|
+
ExtractTypeFromValueExpression<V1>,
|
|
32
|
+
ExtractTypeFromValueExpression<V2>,
|
|
33
|
+
ExtractTypeFromValueExpression<V3>
|
|
34
|
+
]>;
|
|
35
|
+
export type ValTuple4<V1, V2, V3, V4> = DrainOuterGeneric<[
|
|
36
|
+
ExtractTypeFromValueExpression<V1>,
|
|
37
|
+
ExtractTypeFromValueExpression<V2>,
|
|
38
|
+
ExtractTypeFromValueExpression<V3>,
|
|
39
|
+
ExtractTypeFromValueExpression<V4>
|
|
40
|
+
]>;
|
|
41
|
+
export type ValTuple5<V1, V2, V3, V4, V5> = DrainOuterGeneric<[
|
|
42
|
+
ExtractTypeFromValueExpression<V1>,
|
|
43
|
+
ExtractTypeFromValueExpression<V2>,
|
|
44
|
+
ExtractTypeFromValueExpression<V3>,
|
|
45
|
+
ExtractTypeFromValueExpression<V4>,
|
|
46
|
+
ExtractTypeFromValueExpression<V5>
|
|
47
|
+
]>;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
import { ValueNode } from '../operation-node/value-node.js';
|
|
1
2
|
import { ExpressionOrFactory } from './expression-parser.js';
|
|
2
3
|
import { OperationNode } from '../operation-node/operation-node.js';
|
|
3
4
|
import { Expression } from '../expression/expression.js';
|
|
4
|
-
import {
|
|
5
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
5
6
|
export type ValueExpression<DB, TB extends keyof DB, V> = V | ExpressionOrFactory<DB, TB, V>;
|
|
6
7
|
export type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
|
|
7
8
|
export type ExtractTypeFromValueExpressionOrList<VE> = VE extends ReadonlyArray<infer AV> ? ExtractTypeFromValueExpression<AV> : ExtractTypeFromValueExpression<VE>;
|
|
8
|
-
type ExtractTypeFromValueExpression<VE> = VE extends
|
|
9
|
+
export type ExtractTypeFromValueExpression<VE> = VE extends SelectQueryBuilderExpression<Record<string, infer SV>> ? SV : VE extends Expression<infer V> ? V : VE;
|
|
9
10
|
export declare function parseValueExpressionOrList(arg: ValueExpressionOrList<any, any, unknown>): OperationNode;
|
|
10
11
|
export declare function parseValueExpression(exp: ValueExpression<any, any, unknown>): OperationNode;
|
|
11
|
-
export
|
|
12
|
+
export declare function isSafeImmediateValue(value: unknown): value is number | boolean | null;
|
|
13
|
+
export declare function parseSafeImmediateValue(value: number | boolean | null): ValueNode;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseValueExpression = exports.parseValueExpressionOrList = void 0;
|
|
3
|
+
exports.parseSafeImmediateValue = exports.isSafeImmediateValue = exports.parseValueExpression = exports.parseValueExpressionOrList = void 0;
|
|
4
4
|
const primitive_value_list_node_js_1 = require("../operation-node/primitive-value-list-node.js");
|
|
5
5
|
const value_list_node_js_1 = require("../operation-node/value-list-node.js");
|
|
6
6
|
const value_node_js_1 = require("../operation-node/value-node.js");
|
|
@@ -20,6 +20,17 @@ function parseValueExpression(exp) {
|
|
|
20
20
|
return value_node_js_1.ValueNode.create(exp);
|
|
21
21
|
}
|
|
22
22
|
exports.parseValueExpression = parseValueExpression;
|
|
23
|
+
function isSafeImmediateValue(value) {
|
|
24
|
+
return (0, object_utils_js_1.isNumber)(value) || (0, object_utils_js_1.isBoolean)(value) || (0, object_utils_js_1.isNull)(value);
|
|
25
|
+
}
|
|
26
|
+
exports.isSafeImmediateValue = isSafeImmediateValue;
|
|
27
|
+
function parseSafeImmediateValue(value) {
|
|
28
|
+
if (!isSafeImmediateValue(value)) {
|
|
29
|
+
throw new Error(`unsafe immediate value ${JSON.stringify(value)}`);
|
|
30
|
+
}
|
|
31
|
+
return value_node_js_1.ValueNode.createImmediate(value);
|
|
32
|
+
}
|
|
33
|
+
exports.parseSafeImmediateValue = parseSafeImmediateValue;
|
|
23
34
|
function parseValueExpressionList(arg) {
|
|
24
35
|
if (arg.some(expression_parser_js_1.isExpressionOrFactory)) {
|
|
25
36
|
return value_list_node_js_1.ValueListNode.create(arg.map((it) => parseValueExpression(it)));
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { UpdateQueryBuilder } from '../query-builder/update-query-builder.js';
|
|
2
2
|
import { DeleteQueryBuilder } from '../query-builder/delete-query-builder.js';
|
|
3
3
|
import { InsertQueryBuilder } from '../query-builder/insert-query-builder.js';
|
|
4
|
-
import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
|
|
5
4
|
import { QueryCreator } from '../query-creator.js';
|
|
6
5
|
import { Expression } from '../expression/expression.js';
|
|
7
6
|
import { ShallowRecord } from '../util/type-utils.js';
|
|
7
|
+
import { CTEBuilderCallback } from '../query-builder/cte-builder.js';
|
|
8
|
+
import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
|
|
8
9
|
export type CommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB>) => CommonTableExpressionOutput<DB, CN>;
|
|
9
10
|
export type RecursiveCommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB & {
|
|
10
11
|
[K in ExtractTableFromCommonTableExpressionName<CN>]: ExtractRowFromCommonTableExpressionName<CN>;
|
|
@@ -40,5 +41,5 @@ type ExtractRowFromCommonTableExpressionName<CN extends string> = CN extends `${
|
|
|
40
41
|
* Parses a string like 'id, first_name' into a type 'id' | 'first_name'
|
|
41
42
|
*/
|
|
42
43
|
type ExtractColumnNamesFromColumnList<R extends string> = R extends `${infer C}, ${infer RS}` ? C | ExtractColumnNamesFromColumnList<RS> : R;
|
|
43
|
-
export declare function parseCommonTableExpression(
|
|
44
|
+
export declare function parseCommonTableExpression(nameOrBuilderCallback: string | CTEBuilderCallback<string>, expression: CommonTableExpression<any, string>): CommonTableExpressionNode;
|
|
44
45
|
export {};
|
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseCommonTableExpression = void 0;
|
|
4
|
-
const common_table_expression_node_js_1 = require("../operation-node/common-table-expression-node.js");
|
|
5
4
|
const common_table_expression_name_node_js_1 = require("../operation-node/common-table-expression-name-node.js");
|
|
6
5
|
const parse_utils_js_1 = require("./parse-utils.js");
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
7
|
+
const cte_builder_js_1 = require("../query-builder/cte-builder.js");
|
|
8
|
+
const common_table_expression_node_js_1 = require("../operation-node/common-table-expression-node.js");
|
|
9
|
+
function parseCommonTableExpression(nameOrBuilderCallback, expression) {
|
|
10
|
+
const expressionNode = expression((0, parse_utils_js_1.createQueryCreator)()).toOperationNode();
|
|
11
|
+
if ((0, object_utils_js_1.isFunction)(nameOrBuilderCallback)) {
|
|
12
|
+
return nameOrBuilderCallback(cteBuilderFactory(expressionNode)).toOperationNode();
|
|
13
|
+
}
|
|
14
|
+
return common_table_expression_node_js_1.CommonTableExpressionNode.create(parseCommonTableExpressionName(nameOrBuilderCallback), expressionNode);
|
|
10
15
|
}
|
|
11
16
|
exports.parseCommonTableExpression = parseCommonTableExpression;
|
|
17
|
+
function cteBuilderFactory(expressionNode) {
|
|
18
|
+
return (name) => {
|
|
19
|
+
return new cte_builder_js_1.CTEBuilder({
|
|
20
|
+
node: common_table_expression_node_js_1.CommonTableExpressionNode.create(parseCommonTableExpressionName(name), expressionNode),
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
}
|
|
12
24
|
function parseCommonTableExpressionName(name) {
|
|
13
25
|
if (name.includes('(')) {
|
|
14
26
|
const parts = name.split(/[\(\)]/);
|
|
@@ -75,9 +75,9 @@ export interface CamelCasePluginOptions {
|
|
|
75
75
|
* ```
|
|
76
76
|
*
|
|
77
77
|
* As you can see from the example, __everything__ needs to be defined
|
|
78
|
-
* in camelCase in the typescript code:
|
|
79
|
-
*
|
|
80
|
-
*
|
|
78
|
+
* in camelCase in the typescript code: table names, columns, schemas,
|
|
79
|
+
* __everything__. When using the `CamelCasePlugin` Kysely works as if
|
|
80
|
+
* the database was defined in camelCase.
|
|
81
81
|
*
|
|
82
82
|
* There are various options you can give to the plugin to modify
|
|
83
83
|
* the way identifiers are converted. See {@link CamelCasePluginOptions}.
|
|
@@ -46,9 +46,9 @@ const camel_case_js_1 = require("./camel-case.js");
|
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
48
|
* As you can see from the example, __everything__ needs to be defined
|
|
49
|
-
* in camelCase in the typescript code:
|
|
50
|
-
*
|
|
51
|
-
*
|
|
49
|
+
* in camelCase in the typescript code: table names, columns, schemas,
|
|
50
|
+
* __everything__. When using the `CamelCasePlugin` Kysely works as if
|
|
51
|
+
* the database was defined in camelCase.
|
|
52
52
|
*
|
|
53
53
|
* There are various options you can give to the plugin to modify
|
|
54
54
|
* the way identifiers are converted. See {@link CamelCasePluginOptions}.
|
|
@@ -113,9 +113,5 @@ class CamelCasePlugin {
|
|
|
113
113
|
}
|
|
114
114
|
exports.CamelCasePlugin = CamelCasePlugin;
|
|
115
115
|
function canMap(obj, opt) {
|
|
116
|
-
return (
|
|
117
|
-
!(0, object_utils_js_1.isDate)(obj) &&
|
|
118
|
-
!(0, object_utils_js_1.isBuffer)(obj) &&
|
|
119
|
-
!(0, object_utils_js_1.isArrayBufferOrView)(obj) &&
|
|
120
|
-
!opt?.maintainNestedObjectKeys);
|
|
116
|
+
return (0, object_utils_js_1.isPlainObject)(obj) && !opt?.maintainNestedObjectKeys;
|
|
121
117
|
}
|
|
@@ -2,6 +2,19 @@ import { QueryResult } from '../../driver/database-connection.js';
|
|
|
2
2
|
import { RootOperationNode } from '../../query-compiler/query-compiler.js';
|
|
3
3
|
import { UnknownRow } from '../../util/type-utils.js';
|
|
4
4
|
import { KyselyPlugin, PluginTransformQueryArgs, PluginTransformResultArgs } from '../kysely-plugin.js';
|
|
5
|
+
/**
|
|
6
|
+
* Parses JSON strings in query results into JSON objects.
|
|
7
|
+
*
|
|
8
|
+
* This plugin can be useful with dialects that don't automatically parse
|
|
9
|
+
* JSON into objects and arrays but return JSON strings instead.
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* const db = new Kysely<DB>({
|
|
13
|
+
* ...
|
|
14
|
+
* plugins: [new ParseJSONResultsPlugin()]
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
5
18
|
export declare class ParseJSONResultsPlugin implements KyselyPlugin {
|
|
6
19
|
/**
|
|
7
20
|
* This is called for each query before it is executed. You can modify the query by
|
|
@@ -2,31 +2,67 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ParseJSONResultsPlugin = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* Parses JSON strings in query results into JSON objects.
|
|
7
|
+
*
|
|
8
|
+
* This plugin can be useful with dialects that don't automatically parse
|
|
9
|
+
* JSON into objects and arrays but return JSON strings instead.
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* const db = new Kysely<DB>({
|
|
13
|
+
* ...
|
|
14
|
+
* plugins: [new ParseJSONResultsPlugin()]
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
5
18
|
class ParseJSONResultsPlugin {
|
|
6
19
|
// noop
|
|
7
20
|
transformQuery(args) {
|
|
8
21
|
return args.node;
|
|
9
22
|
}
|
|
10
23
|
async transformResult(args) {
|
|
11
|
-
const { result } = args;
|
|
12
24
|
return {
|
|
13
25
|
...args.result,
|
|
14
|
-
rows: result.rows
|
|
26
|
+
rows: parseArray(args.result.rows),
|
|
15
27
|
};
|
|
16
28
|
}
|
|
17
29
|
}
|
|
18
30
|
exports.ParseJSONResultsPlugin = ParseJSONResultsPlugin;
|
|
19
|
-
function
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
function parseArray(arr) {
|
|
32
|
+
for (let i = 0; i < arr.length; ++i) {
|
|
33
|
+
arr[i] = parse(arr[i]);
|
|
34
|
+
}
|
|
35
|
+
return arr;
|
|
36
|
+
}
|
|
37
|
+
function parse(obj) {
|
|
38
|
+
if ((0, object_utils_js_1.isString)(obj)) {
|
|
39
|
+
return parseString(obj);
|
|
40
|
+
}
|
|
41
|
+
if (Array.isArray(obj)) {
|
|
42
|
+
return parseArray(obj);
|
|
43
|
+
}
|
|
44
|
+
if ((0, object_utils_js_1.isPlainObject)(obj)) {
|
|
45
|
+
return parseObject(obj);
|
|
46
|
+
}
|
|
47
|
+
return obj;
|
|
48
|
+
}
|
|
49
|
+
function parseString(str) {
|
|
50
|
+
if (maybeJson(str)) {
|
|
51
|
+
try {
|
|
52
|
+
return parse(JSON.parse(str));
|
|
28
53
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
54
|
+
catch (err) {
|
|
55
|
+
// this catch block is intentionally empty.
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return str;
|
|
59
|
+
}
|
|
60
|
+
function maybeJson(value) {
|
|
61
|
+
return value.match(/^[\[\{]/) != null;
|
|
62
|
+
}
|
|
63
|
+
function parseObject(obj) {
|
|
64
|
+
for (const key in obj) {
|
|
65
|
+
obj[key] = parse(obj[key]);
|
|
66
|
+
}
|
|
67
|
+
return obj;
|
|
32
68
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { AggregateFunctionNode } from '../operation-node/aggregate-function-node.js';
|
|
2
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
3
|
import { OverBuilder } from './over-builder.js';
|
|
4
|
-
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
4
|
+
import { AliasableExpression, AliasedExpression, Expression } from '../expression/expression.js';
|
|
5
5
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
6
6
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
7
|
-
import {
|
|
8
|
-
|
|
7
|
+
import { SqlBool } from '../util/type-utils.js';
|
|
8
|
+
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
9
|
+
export declare class AggregateFunctionBuilder<DB, TB extends keyof DB, O = unknown> implements AliasableExpression<O> {
|
|
9
10
|
#private;
|
|
10
11
|
constructor(props: AggregateFunctionBuilderProps);
|
|
11
12
|
/** @private */
|
|
@@ -116,8 +117,7 @@ export declare class AggregateFunctionBuilder<DB, TB extends keyof DB, O = unkno
|
|
|
116
117
|
* ```
|
|
117
118
|
*/
|
|
118
119
|
filterWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): AggregateFunctionBuilder<DB, TB, O>;
|
|
119
|
-
filterWhere(
|
|
120
|
-
filterWhere(expression: Expression<any>): AggregateFunctionBuilder<DB, TB, O>;
|
|
120
|
+
filterWhere(expression: ExpressionOrFactory<DB, TB, SqlBool>): AggregateFunctionBuilder<DB, TB, O>;
|
|
121
121
|
/**
|
|
122
122
|
* Adds a `filter` clause with a nested `where` clause after the function, where
|
|
123
123
|
* both sides of the operator are references to columns.
|
|
@@ -75,7 +75,7 @@ class AggregateFunctionBuilder {
|
|
|
75
75
|
filterWhere(...args) {
|
|
76
76
|
return new AggregateFunctionBuilder({
|
|
77
77
|
...this.#props,
|
|
78
|
-
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, (0, binary_operation_parser_js_1.
|
|
78
|
+
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, (0, binary_operation_parser_js_1.parseValueBinaryOperationOrExpression)(args)),
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
@@ -113,7 +113,7 @@ class AggregateFunctionBuilder {
|
|
|
113
113
|
filterWhereRef(lhs, op, rhs) {
|
|
114
114
|
return new AggregateFunctionBuilder({
|
|
115
115
|
...this.#props,
|
|
116
|
-
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, (0, binary_operation_parser_js_1.
|
|
116
|
+
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, (0, binary_operation_parser_js_1.parseReferentialBinaryOperation)(lhs, op, rhs)),
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
119
|
/**
|
|
@@ -15,7 +15,7 @@ class CaseBuilder {
|
|
|
15
15
|
when(...args) {
|
|
16
16
|
return new CaseThenBuilder({
|
|
17
17
|
...this.#props,
|
|
18
|
-
node: case_node_js_1.CaseNode.cloneWithWhen(this.#props.node, when_node_js_1.WhenNode.create((0, binary_operation_parser_js_1.
|
|
18
|
+
node: case_node_js_1.CaseNode.cloneWithWhen(this.#props.node, when_node_js_1.WhenNode.create((0, binary_operation_parser_js_1.parseValueBinaryOperationOrExpression)(args))),
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -28,7 +28,9 @@ class CaseThenBuilder {
|
|
|
28
28
|
then(valueExpression) {
|
|
29
29
|
return new CaseWhenBuilder({
|
|
30
30
|
...this.#props,
|
|
31
|
-
node: case_node_js_1.CaseNode.cloneWithThen(this.#props.node, (0, value_parser_js_1.
|
|
31
|
+
node: case_node_js_1.CaseNode.cloneWithThen(this.#props.node, (0, value_parser_js_1.isSafeImmediateValue)(valueExpression)
|
|
32
|
+
? (0, value_parser_js_1.parseSafeImmediateValue)(valueExpression)
|
|
33
|
+
: (0, value_parser_js_1.parseValueExpression)(valueExpression)),
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
}
|
|
@@ -41,14 +43,16 @@ class CaseWhenBuilder {
|
|
|
41
43
|
when(...args) {
|
|
42
44
|
return new CaseThenBuilder({
|
|
43
45
|
...this.#props,
|
|
44
|
-
node: case_node_js_1.CaseNode.cloneWithWhen(this.#props.node, when_node_js_1.WhenNode.create((0, binary_operation_parser_js_1.
|
|
46
|
+
node: case_node_js_1.CaseNode.cloneWithWhen(this.#props.node, when_node_js_1.WhenNode.create((0, binary_operation_parser_js_1.parseValueBinaryOperationOrExpression)(args))),
|
|
45
47
|
});
|
|
46
48
|
}
|
|
47
49
|
else(valueExpression) {
|
|
48
50
|
return new CaseEndBuilder({
|
|
49
51
|
...this.#props,
|
|
50
52
|
node: case_node_js_1.CaseNode.cloneWith(this.#props.node, {
|
|
51
|
-
else: (0, value_parser_js_1.
|
|
53
|
+
else: (0, value_parser_js_1.isSafeImmediateValue)(valueExpression)
|
|
54
|
+
? (0, value_parser_js_1.parseSafeImmediateValue)(valueExpression)
|
|
55
|
+
: (0, value_parser_js_1.parseValueExpression)(valueExpression),
|
|
52
56
|
}),
|
|
53
57
|
});
|
|
54
58
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
|
+
import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
|
|
3
|
+
export declare class CTEBuilder<N extends string> implements OperationNodeSource {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(props: CTEBuilderProps);
|
|
6
|
+
/**
|
|
7
|
+
* Makes the common table expression materialized.
|
|
8
|
+
*/
|
|
9
|
+
materialized(): CTEBuilder<N>;
|
|
10
|
+
/**
|
|
11
|
+
* Makes the common table expression not materialized.
|
|
12
|
+
*/
|
|
13
|
+
notMaterialized(): CTEBuilder<N>;
|
|
14
|
+
toOperationNode(): CommonTableExpressionNode;
|
|
15
|
+
}
|
|
16
|
+
interface CTEBuilderProps {
|
|
17
|
+
readonly node: CommonTableExpressionNode;
|
|
18
|
+
}
|
|
19
|
+
export type CTEBuilderCallback<N extends string> = (cte: <N2 extends string>(name: N2) => CTEBuilder<N2>) => CTEBuilder<N>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CTEBuilder = void 0;
|
|
4
|
+
const common_table_expression_node_js_1 = require("../operation-node/common-table-expression-node.js");
|
|
5
|
+
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
6
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
7
|
+
class CTEBuilder {
|
|
8
|
+
#props;
|
|
9
|
+
constructor(props) {
|
|
10
|
+
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Makes the common table expression materialized.
|
|
14
|
+
*/
|
|
15
|
+
materialized() {
|
|
16
|
+
return new CTEBuilder({
|
|
17
|
+
...this.#props,
|
|
18
|
+
node: common_table_expression_node_js_1.CommonTableExpressionNode.cloneWith(this.#props.node, {
|
|
19
|
+
materialized: true,
|
|
20
|
+
}),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Makes the common table expression not materialized.
|
|
25
|
+
*/
|
|
26
|
+
notMaterialized() {
|
|
27
|
+
return new CTEBuilder({
|
|
28
|
+
...this.#props,
|
|
29
|
+
node: common_table_expression_node_js_1.CommonTableExpressionNode.cloneWith(this.#props.node, {
|
|
30
|
+
materialized: false,
|
|
31
|
+
}),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
toOperationNode() {
|
|
35
|
+
return this.#props.node;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.CTEBuilder = CTEBuilder;
|
|
39
|
+
(0, prevent_await_js_1.preventAwait)(CTEBuilder, "don't await CTEBuilder instances. They are never executed directly and are always just a part of a query.");
|
|
@@ -2,16 +2,16 @@ 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 { From, FromTables, TableExpression } from '../parser/table-parser.js';
|
|
5
|
-
import { SelectExpression,
|
|
6
|
-
import { ReturningAllRow, ReturningRow } from '../parser/returning-parser.js';
|
|
5
|
+
import { SelectExpression, SelectCallback } from '../parser/select-parser.js';
|
|
6
|
+
import { ReturningAllRow, 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
|
-
import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
|
|
9
|
+
import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '../util/type-utils.js';
|
|
10
10
|
import { Compilable } from '../util/compilable.js';
|
|
11
11
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
12
12
|
import { QueryId } from '../util/query-id.js';
|
|
13
13
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
14
|
-
import {
|
|
14
|
+
import { WhereInterface } from './where-interface.js';
|
|
15
15
|
import { ReturningInterface } from './returning-interface.js';
|
|
16
16
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
17
17
|
import { DeleteResult } from './delete-result.js';
|
|
@@ -22,6 +22,7 @@ import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
|
22
22
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
23
23
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
24
24
|
import { Streamable } from '../util/streamable.js';
|
|
25
|
+
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
25
26
|
export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
|
|
26
27
|
#private;
|
|
27
28
|
constructor(props: DeleteQueryBuilderProps);
|
|
@@ -78,7 +79,34 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
78
79
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
79
80
|
* ```
|
|
80
81
|
*
|
|
81
|
-
* <!-- siteExample("where", "
|
|
82
|
+
* <!-- siteExample("where", "Object filter", 30) -->
|
|
83
|
+
*
|
|
84
|
+
* You can use the `and` function to create a simple equality
|
|
85
|
+
* filter using an object
|
|
86
|
+
*
|
|
87
|
+
* ```ts
|
|
88
|
+
* const persons = await db
|
|
89
|
+
* .selectFrom('person')
|
|
90
|
+
* .selectAll()
|
|
91
|
+
* .where((eb) => eb.and({
|
|
92
|
+
* first_name: 'Jennifer',
|
|
93
|
+
* last_name: eb.ref('first_name')
|
|
94
|
+
* }))
|
|
95
|
+
* .execute()
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* The generated SQL (PostgreSQL):
|
|
99
|
+
*
|
|
100
|
+
* ```sql
|
|
101
|
+
* select *
|
|
102
|
+
* from "person"
|
|
103
|
+
* where (
|
|
104
|
+
* "first_name" = $1
|
|
105
|
+
* and "last_name" = "first_name"
|
|
106
|
+
* )
|
|
107
|
+
* ```
|
|
108
|
+
*
|
|
109
|
+
* <!-- siteExample("where", "OR where", 40) -->
|
|
82
110
|
*
|
|
83
111
|
* To combine conditions using `OR`, you can use the expression builder.
|
|
84
112
|
* There are two ways to create `OR` expressions. Both are shown in this
|
|
@@ -113,7 +141,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
113
141
|
* )
|
|
114
142
|
* ```
|
|
115
143
|
*
|
|
116
|
-
* <!-- siteExample("where", "Conditional where calls",
|
|
144
|
+
* <!-- siteExample("where", "Conditional where calls", 50) -->
|
|
117
145
|
*
|
|
118
146
|
* You can add expressions conditionally like this:
|
|
119
147
|
*
|
|
@@ -208,7 +236,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
208
236
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
209
237
|
* ```
|
|
210
238
|
*
|
|
211
|
-
* <!-- siteExample("where", "Complex where clause",
|
|
239
|
+
* <!-- siteExample("where", "Complex where clause", 60) -->
|
|
212
240
|
*
|
|
213
241
|
* For complex `where` expressions you can pass in a single callback and
|
|
214
242
|
* use the `ExpressionBuilder` to build your expression:
|
|
@@ -298,8 +326,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
298
326
|
* ```
|
|
299
327
|
*/
|
|
300
328
|
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): DeleteQueryBuilder<DB, TB, O>;
|
|
301
|
-
where(
|
|
302
|
-
where(expression: Expression<any>): DeleteQueryBuilder<DB, TB, O>;
|
|
329
|
+
where(expression: ExpressionOrFactory<DB, TB, SqlBool>): DeleteQueryBuilder<DB, TB, O>;
|
|
303
330
|
/**
|
|
304
331
|
* Adds a `where` clause where both sides of the operator are references
|
|
305
332
|
* to columns.
|
|
@@ -632,7 +659,9 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
632
659
|
* .executeTakeFirst()
|
|
633
660
|
* ```
|
|
634
661
|
*/
|
|
635
|
-
returning<SE extends SelectExpression<DB, TB>>(
|
|
662
|
+
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
663
|
+
returning<CB extends SelectCallback<DB, TB>>(callback: CB): DeleteQueryBuilder<DB, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
664
|
+
returning<SE extends SelectExpression<DB, TB>>(selection: SE): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
636
665
|
/**
|
|
637
666
|
* Adds `returning *` or `returning table.*` clause to the query.
|
|
638
667
|
*
|
|
@@ -21,13 +21,13 @@ class DeleteQueryBuilder {
|
|
|
21
21
|
where(...args) {
|
|
22
22
|
return new DeleteQueryBuilder({
|
|
23
23
|
...this.#props,
|
|
24
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.
|
|
24
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseValueBinaryOperationOrExpression)(args)),
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
whereRef(lhs, op, rhs) {
|
|
28
28
|
return new DeleteQueryBuilder({
|
|
29
29
|
...this.#props,
|
|
30
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.
|
|
30
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialBinaryOperation)(lhs, op, rhs)),
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
clearWhere() {
|
|
@@ -115,7 +115,7 @@ class DeleteQueryBuilder {
|
|
|
115
115
|
orderBy(orderBy, direction) {
|
|
116
116
|
return new DeleteQueryBuilder({
|
|
117
117
|
...this.#props,
|
|
118
|
-
queryNode: delete_query_node_js_1.DeleteQueryNode.
|
|
118
|
+
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithOrderByItems(this.#props.queryNode, (0, order_by_parser_js_1.parseOrderBy)([orderBy, direction])),
|
|
119
119
|
});
|
|
120
120
|
}
|
|
121
121
|
/**
|