kysely 0.11.4 → 0.12.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/README.md +1 -1
- package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +1 -0
- package/dist/cjs/dynamic/dynamic-reference-builder.js +9 -1
- package/dist/cjs/dynamic/dynamic.d.ts +6 -7
- package/dist/cjs/dynamic/dynamic.js +6 -7
- package/dist/cjs/index.d.ts +13 -3
- package/dist/cjs/index.js +11 -1
- package/dist/cjs/kysely.d.ts +19 -11
- package/dist/cjs/kysely.js +32 -9
- package/dist/cjs/migration/migration.d.ts +2 -2
- package/dist/cjs/operation-node/create-table-node.d.ts +6 -2
- package/dist/cjs/operation-node/create-table-node.js +6 -6
- package/dist/cjs/operation-node/create-view-node.d.ts +1 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +4 -4
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +11 -1
- 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/query-node.d.ts +0 -2
- package/dist/cjs/operation-node/query-node.js +0 -10
- package/dist/cjs/operation-node/values-node.d.ts +15 -0
- package/dist/cjs/operation-node/values-node.js +18 -0
- package/dist/cjs/parser/complex-expression-parser.d.ts +9 -0
- package/dist/cjs/parser/complex-expression-parser.js +25 -0
- package/dist/cjs/parser/filter-parser.d.ts +13 -4
- package/dist/cjs/parser/filter-parser.js +21 -24
- package/dist/cjs/parser/insert-values-parser.d.ts +5 -9
- package/dist/cjs/parser/insert-values-parser.js +27 -41
- package/dist/cjs/parser/order-by-parser.d.ts +1 -1
- package/dist/cjs/parser/parse-context.d.ts +8 -8
- package/dist/cjs/parser/parse-context.js +10 -10
- package/dist/cjs/parser/reference-parser.d.ts +8 -7
- package/dist/cjs/parser/reference-parser.js +8 -17
- package/dist/cjs/parser/returning-parser.d.ts +1 -5
- package/dist/cjs/parser/select-parser.d.ts +12 -14
- package/dist/cjs/parser/select-parser.js +5 -9
- package/dist/cjs/parser/table-parser.d.ts +9 -11
- package/dist/cjs/parser/table-parser.js +2 -8
- package/dist/cjs/parser/union-parser.d.ts +2 -2
- package/dist/cjs/parser/union-parser.js +1 -6
- package/dist/cjs/parser/update-set-parser.d.ts +2 -8
- package/dist/cjs/parser/update-set-parser.js +6 -26
- package/dist/cjs/parser/value-parser.d.ts +9 -6
- package/dist/cjs/parser/value-parser.js +7 -30
- package/dist/cjs/parser/with-parser.d.ts +6 -3
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +102 -0
- package/dist/cjs/query-builder/delete-query-builder.js +185 -0
- package/dist/cjs/query-builder/expression-builder.d.ts +8 -6
- package/dist/cjs/query-builder/expression-builder.js +3 -3
- package/dist/cjs/query-builder/function-builder.d.ts +2 -1
- package/dist/cjs/query-builder/function-builder.js +2 -1
- package/dist/cjs/query-builder/having-interface.d.ts +49 -0
- package/dist/cjs/query-builder/having-interface.js +2 -0
- package/dist/cjs/query-builder/insert-query-builder.d.ts +439 -0
- package/dist/cjs/query-builder/insert-query-builder.js +256 -0
- package/dist/cjs/query-builder/insert-result.d.ts +3 -2
- package/dist/cjs/query-builder/insert-result.js +3 -2
- package/dist/cjs/query-builder/join-builder.d.ts +19 -20
- package/dist/cjs/query-builder/join-builder.js +12 -12
- package/dist/cjs/query-builder/join-interface.d.ts +133 -0
- package/dist/cjs/query-builder/join-interface.js +2 -0
- package/dist/cjs/query-builder/no-result-error.d.ts +9 -0
- package/dist/cjs/query-builder/no-result-error.js +14 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +73 -0
- package/dist/cjs/query-builder/returning-interface.js +2 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +711 -0
- package/dist/cjs/query-builder/select-query-builder.js +571 -0
- package/dist/cjs/query-builder/update-query-builder.d.ts +190 -0
- package/dist/cjs/query-builder/update-query-builder.js +279 -0
- package/dist/cjs/query-builder/where-interface.d.ts +381 -0
- package/dist/cjs/query-builder/where-interface.js +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +22 -5
- package/dist/cjs/query-creator.d.ts +42 -40
- package/dist/cjs/query-creator.js +33 -28
- package/dist/cjs/query-executor/query-executor.d.ts +1 -1
- package/dist/cjs/query-executor/query-executor.js +1 -1
- package/dist/cjs/raw-builder/raw-builder.d.ts +2 -0
- package/dist/cjs/raw-builder/raw-builder.js +6 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +2 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +27 -20
- package/dist/cjs/schema/create-index-builder.d.ts +2 -1
- package/dist/cjs/schema/create-index-builder.js +2 -1
- package/dist/cjs/schema/create-table-builder.d.ts +26 -9
- package/dist/cjs/schema/create-table-builder.js +42 -9
- package/dist/cjs/schema/create-view-builder.d.ts +17 -3
- package/dist/cjs/schema/create-view-builder.js +25 -16
- package/dist/cjs/schema/schema.d.ts +18 -11
- package/dist/cjs/schema/schema.js +18 -11
- package/dist/cjs/util/log.d.ts +3 -2
- package/dist/cjs/util/log.js +8 -15
- package/dist/cjs/util/type-utils.d.ts +7 -7
- package/dist/esm/dynamic/dynamic-reference-builder.d.ts +1 -0
- package/dist/esm/dynamic/dynamic-reference-builder.js +7 -0
- package/dist/esm/dynamic/dynamic.d.ts +6 -7
- package/dist/esm/dynamic/dynamic.js +6 -7
- package/dist/esm/index.d.ts +13 -3
- package/dist/esm/index.js +11 -1
- package/dist/esm/kysely.d.ts +19 -11
- package/dist/esm/kysely.js +32 -9
- package/dist/esm/migration/migration.d.ts +2 -2
- package/dist/esm/operation-node/create-table-node.d.ts +6 -2
- package/dist/esm/operation-node/create-table-node.js +6 -6
- package/dist/esm/operation-node/create-view-node.d.ts +1 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +4 -4
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +11 -1
- 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/query-node.d.ts +0 -2
- package/dist/esm/operation-node/query-node.js +0 -10
- package/dist/esm/operation-node/values-node.d.ts +15 -0
- package/dist/esm/operation-node/values-node.js +15 -0
- package/dist/esm/parser/complex-expression-parser.d.ts +9 -0
- package/dist/esm/parser/complex-expression-parser.js +20 -0
- package/dist/esm/parser/filter-parser.d.ts +13 -4
- package/dist/esm/parser/filter-parser.js +21 -24
- package/dist/esm/parser/insert-values-parser.d.ts +5 -9
- package/dist/esm/parser/insert-values-parser.js +27 -40
- package/dist/esm/parser/order-by-parser.d.ts +1 -1
- package/dist/esm/parser/parse-context.d.ts +8 -8
- package/dist/esm/parser/parse-context.js +10 -10
- package/dist/esm/parser/reference-parser.d.ts +8 -7
- package/dist/esm/parser/reference-parser.js +9 -18
- package/dist/esm/parser/returning-parser.d.ts +1 -5
- package/dist/esm/parser/select-parser.d.ts +12 -14
- package/dist/esm/parser/select-parser.js +6 -10
- package/dist/esm/parser/table-parser.d.ts +9 -11
- package/dist/esm/parser/table-parser.js +3 -9
- package/dist/esm/parser/union-parser.d.ts +2 -2
- package/dist/esm/parser/union-parser.js +1 -6
- package/dist/esm/parser/update-set-parser.d.ts +2 -8
- package/dist/esm/parser/update-set-parser.js +5 -24
- package/dist/esm/parser/value-parser.d.ts +9 -6
- package/dist/esm/parser/value-parser.js +8 -31
- package/dist/esm/parser/with-parser.d.ts +6 -3
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +102 -0
- package/dist/esm/query-builder/delete-query-builder.js +181 -0
- package/dist/esm/query-builder/expression-builder.d.ts +8 -6
- package/dist/esm/query-builder/expression-builder.js +3 -3
- package/dist/esm/query-builder/function-builder.d.ts +2 -1
- package/dist/esm/query-builder/function-builder.js +2 -1
- package/dist/esm/query-builder/having-interface.d.ts +49 -0
- package/dist/esm/query-builder/having-interface.js +1 -0
- package/dist/esm/query-builder/insert-query-builder.d.ts +439 -0
- package/dist/esm/query-builder/insert-query-builder.js +252 -0
- package/dist/esm/query-builder/insert-result.d.ts +3 -2
- package/dist/esm/query-builder/insert-result.js +3 -2
- package/dist/esm/query-builder/join-builder.d.ts +19 -20
- package/dist/esm/query-builder/join-builder.js +12 -12
- package/dist/esm/query-builder/join-interface.d.ts +133 -0
- package/dist/esm/query-builder/join-interface.js +1 -0
- package/dist/esm/query-builder/no-result-error.d.ts +9 -0
- package/dist/esm/query-builder/no-result-error.js +10 -0
- package/dist/esm/query-builder/returning-interface.d.ts +73 -0
- package/dist/esm/query-builder/returning-interface.js +1 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +711 -0
- package/dist/esm/query-builder/select-query-builder.js +566 -0
- package/dist/esm/query-builder/update-query-builder.d.ts +190 -0
- package/dist/esm/query-builder/update-query-builder.js +275 -0
- package/dist/esm/query-builder/where-interface.d.ts +381 -0
- package/dist/esm/query-builder/where-interface.js +1 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/esm/query-compiler/default-query-compiler.js +22 -5
- package/dist/esm/query-creator.d.ts +42 -40
- package/dist/esm/query-creator.js +33 -28
- package/dist/esm/query-executor/query-executor.d.ts +1 -1
- package/dist/esm/query-executor/query-executor.js +1 -1
- package/dist/esm/raw-builder/raw-builder.d.ts +2 -0
- package/dist/esm/raw-builder/raw-builder.js +6 -0
- package/dist/esm/schema/alter-table-builder.d.ts +2 -2
- package/dist/esm/schema/column-definition-builder.d.ts +27 -20
- package/dist/esm/schema/create-index-builder.d.ts +2 -1
- package/dist/esm/schema/create-index-builder.js +2 -1
- package/dist/esm/schema/create-table-builder.d.ts +26 -9
- package/dist/esm/schema/create-table-builder.js +43 -10
- package/dist/esm/schema/create-view-builder.d.ts +17 -3
- package/dist/esm/schema/create-view-builder.js +25 -16
- package/dist/esm/schema/schema.d.ts +18 -11
- package/dist/esm/schema/schema.js +18 -11
- package/dist/esm/util/log.d.ts +3 -2
- package/dist/esm/util/log.js +7 -14
- package/dist/esm/util/type-utils.d.ts +7 -7
- package/package.json +3 -3
- package/dist/cjs/query-builder/query-builder.d.ts +0 -1728
- package/dist/cjs/query-builder/query-builder.js +0 -1067
- package/dist/esm/query-builder/query-builder.d.ts +0 -1728
- package/dist/esm/query-builder/query-builder.js +0 -1061
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|
2
|
-
import { RawNode } from '../operation-node/raw-node.js';
|
|
3
|
-
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
4
|
-
import { ValueNode } from '../operation-node/value-node.js';
|
|
5
|
-
import { AnyQueryBuilder, AnyRawBuilder, QueryBuilderFactory, RawBuilderFactory } from '../util/type-utils.js';
|
|
6
|
-
import { PrimitiveValue } from '../util/object-utils.js';
|
|
7
2
|
import { ParseContext } from './parse-context.js';
|
|
3
|
+
import { ValueExpression } from './value-parser.js';
|
|
8
4
|
export declare type MutationObject<DB, TB extends keyof DB> = {
|
|
9
|
-
[C in keyof DB[TB]]?:
|
|
5
|
+
[C in keyof DB[TB]]?: ValueExpression<DB, TB, DB[TB][C]>;
|
|
10
6
|
};
|
|
11
|
-
export declare type MutationValueExpression<DB, TB extends keyof DB, T> = T | AnyQueryBuilder | QueryBuilderFactory<DB, TB> | AnyRawBuilder | RawBuilderFactory<DB, TB>;
|
|
12
7
|
export declare function parseUpdateObject(ctx: ParseContext, row: MutationObject<any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|
13
|
-
export declare function parseMutationValueExpression(ctx: ParseContext, value: MutationValueExpression<any, any, PrimitiveValue>): ValueNode | RawNode | SelectQueryNode;
|
|
@@ -1,29 +1,10 @@
|
|
|
1
1
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
2
2
|
import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|
3
|
-
import {
|
|
4
|
-
import { QueryNode } from '../operation-node/query-node.js';
|
|
5
|
-
import { ValueNode } from '../operation-node/value-node.js';
|
|
6
|
-
import { isFunction, isPrimitive, } from '../util/object-utils.js';
|
|
3
|
+
import { parseValueExpression } from './value-parser.js';
|
|
7
4
|
export function parseUpdateObject(ctx, row) {
|
|
8
|
-
return Object.entries(row)
|
|
9
|
-
|
|
5
|
+
return Object.entries(row)
|
|
6
|
+
.filter(([_, value]) => value !== undefined)
|
|
7
|
+
.map(([key, value]) => {
|
|
8
|
+
return ColumnUpdateNode.create(ColumnNode.create(key), parseValueExpression(ctx, value));
|
|
10
9
|
});
|
|
11
10
|
}
|
|
12
|
-
export function parseMutationValueExpression(ctx, value) {
|
|
13
|
-
if (isPrimitive(value)) {
|
|
14
|
-
return ValueNode.create(value);
|
|
15
|
-
}
|
|
16
|
-
else if (isOperationNodeSource(value)) {
|
|
17
|
-
const node = value.toOperationNode();
|
|
18
|
-
if (!QueryNode.isMutating(node)) {
|
|
19
|
-
return node;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
else if (isFunction(value)) {
|
|
23
|
-
const node = value(ctx.createExpressionBuilder()).toOperationNode();
|
|
24
|
-
if (!QueryNode.isMutating(node)) {
|
|
25
|
-
return node;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
throw new Error(`unsupported value for mutation object ${JSON.stringify(value)}`);
|
|
29
|
-
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { ValueExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { ValueNode } from '../operation-node/value-node.js';
|
|
3
|
+
import { PrimitiveValue } from '../util/object-utils.js';
|
|
4
4
|
import { ParseContext } from './parse-context.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export declare
|
|
5
|
+
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
6
|
+
import { RawNode } from '../operation-node/raw-node.js';
|
|
7
|
+
import { ComplexExpression } from './complex-expression-parser.js';
|
|
8
|
+
export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ComplexExpression<DB, TB>;
|
|
9
|
+
export declare type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
|
|
10
|
+
export declare function parseValueExpressionOrList(ctx: ParseContext, arg: ValueExpressionOrList<any, any, PrimitiveValue>): ValueExpressionNode;
|
|
11
|
+
export declare function parseValueExpression(ctx: ParseContext, exp: ValueExpression<any, any, PrimitiveValue>): ValueNode | SelectQueryNode | RawNode;
|
|
@@ -1,49 +1,26 @@
|
|
|
1
|
-
import { ColumnNode } from '../operation-node/column-node.js';
|
|
2
|
-
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
1
|
import { PrimitiveValueListNode } from '../operation-node/primitive-value-list-node.js';
|
|
4
2
|
import { ValueListNode } from '../operation-node/value-list-node.js';
|
|
5
3
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { isPrimitive, isReadonlyArray, } from '../util/object-utils.js';
|
|
5
|
+
import { parseComplexExpression, } from './complex-expression-parser.js';
|
|
8
6
|
export function parseValueExpressionOrList(ctx, arg) {
|
|
9
|
-
if (
|
|
7
|
+
if (isReadonlyArray(arg)) {
|
|
10
8
|
return parseValueExpressionList(ctx, arg);
|
|
11
9
|
}
|
|
12
10
|
else {
|
|
13
11
|
return parseValueExpression(ctx, arg);
|
|
14
12
|
}
|
|
15
13
|
}
|
|
16
|
-
export function parseValueExpression(ctx,
|
|
17
|
-
if (isPrimitive(
|
|
18
|
-
return ValueNode.create(
|
|
14
|
+
export function parseValueExpression(ctx, exp) {
|
|
15
|
+
if (isPrimitive(exp)) {
|
|
16
|
+
return ValueNode.create(exp);
|
|
19
17
|
}
|
|
20
|
-
|
|
21
|
-
const node = arg.toOperationNode();
|
|
22
|
-
if (!QueryNode.isMutating(node)) {
|
|
23
|
-
return node;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
else if (isFunction(arg)) {
|
|
27
|
-
const node = arg(ctx.createExpressionBuilder()).toOperationNode();
|
|
28
|
-
if (!QueryNode.isMutating(node)) {
|
|
29
|
-
return node;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
throw new Error(`invalid value expression ${JSON.stringify(arg)}`);
|
|
18
|
+
return parseComplexExpression(ctx, exp);
|
|
33
19
|
}
|
|
34
20
|
function parseValueExpressionList(ctx, arg) {
|
|
35
21
|
if (arg.every(isPrimitive)) {
|
|
36
22
|
// Optimization for large lists of primitive values.
|
|
37
23
|
return PrimitiveValueListNode.create(arg);
|
|
38
24
|
}
|
|
39
|
-
return ValueListNode.create(arg.map((it) =>
|
|
40
|
-
const node = parseValueExpression(ctx, it);
|
|
41
|
-
if (ColumnNode.is(node)) {
|
|
42
|
-
throw new Error('value lists cannot have column references');
|
|
43
|
-
}
|
|
44
|
-
if (ValueListNode.is(node) || PrimitiveValueListNode.is(node)) {
|
|
45
|
-
throw new Error('value lists cannot have nested lists');
|
|
46
|
-
}
|
|
47
|
-
return node;
|
|
48
|
-
}));
|
|
25
|
+
return ValueListNode.create(arg.map((it) => parseValueExpression(ctx, it)));
|
|
49
26
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
2
|
+
import { UpdateQueryBuilder } from '../query-builder/update-query-builder.js';
|
|
3
|
+
import { DeleteQueryBuilder } from '../query-builder/delete-query-builder.js';
|
|
4
|
+
import { InsertQueryBuilder } from '../query-builder/insert-query-builder.js';
|
|
1
5
|
import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
|
|
2
|
-
import { QueryBuilder } from '../query-builder/query-builder.js';
|
|
3
6
|
import { QueryCreator } from '../query-creator.js';
|
|
4
7
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
5
8
|
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
6
9
|
import { ParseContext } from './parse-context.js';
|
|
7
|
-
export declare type CommonTableExpression<DB> = (creator: QueryCreator<DB>) =>
|
|
10
|
+
export declare type CommonTableExpression<DB> = (creator: QueryCreator<DB>) => SelectQueryBuilder<DB, any, any> | InsertQueryBuilder<DB, any, any> | UpdateQueryBuilder<DB, any, any> | DeleteQueryBuilder<DB, any, any> | AnyRawBuilder;
|
|
8
11
|
export declare type QueryCreatorWithCommonTableExpression<DB, N extends string, E extends CommonTableExpression<DB>> = QueryCreator<DB & Record<N, ExtractRowTypeFromCommonTableExpression<E>>>;
|
|
9
|
-
declare type ExtractRowTypeFromCommonTableExpression<E> = E extends (creator: QueryCreator<any>) => infer Q ? Q extends
|
|
12
|
+
declare type ExtractRowTypeFromCommonTableExpression<E> = E extends (creator: QueryCreator<any>) => infer Q ? Q extends SelectQueryBuilder<any, any, infer QO> ? QO : Q extends InsertQueryBuilder<any, any, infer QO> ? QO : Q extends UpdateQueryBuilder<any, any, infer QO> ? QO : Q extends DeleteQueryBuilder<any, any, infer QO> ? QO : Q extends RawBuilder<infer RO> ? RO : never : never;
|
|
10
13
|
export declare function parseCommonTableExpression(ctx: ParseContext, name: string, expression: CommonTableExpression<any>): CommonTableExpressionNode;
|
|
11
14
|
export {};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
|
+
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
|
+
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
4
|
+
import { TableExpression, TableExpressionDatabase, TableExpressionTables, LeftJoinTableExpressionDatabase, RightJoinTableExpressionDatabase, FullJoinTableExpressionDatabase } from '../parser/table-parser.js';
|
|
5
|
+
import { SelectExpression } from '../parser/select-parser.js';
|
|
6
|
+
import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
|
|
7
|
+
import { ReturningRow } from '../parser/returning-parser.js';
|
|
8
|
+
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
9
|
+
import { AnyRawBuilder, SingleResultType } from '../util/type-utils.js';
|
|
10
|
+
import { Compilable } from '../util/compilable.js';
|
|
11
|
+
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
12
|
+
import { QueryId } from '../util/query-id.js';
|
|
13
|
+
import { ParseContext } from '../parser/parse-context.js';
|
|
14
|
+
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
15
|
+
import { WhereInterface } from './where-interface.js';
|
|
16
|
+
import { JoinInterface } from './join-interface.js';
|
|
17
|
+
import { ReturningInterface } from './returning-interface.js';
|
|
18
|
+
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
19
|
+
import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
|
|
20
|
+
export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, JoinInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable {
|
|
21
|
+
#private;
|
|
22
|
+
constructor(props: DeleteQueryBuilderProps);
|
|
23
|
+
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): DeleteQueryBuilder<DB, TB, O>;
|
|
24
|
+
where(grouper: WhereGrouper<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
25
|
+
where(raw: AnyRawBuilder): DeleteQueryBuilder<DB, TB, O>;
|
|
26
|
+
whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
27
|
+
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): DeleteQueryBuilder<DB, TB, O>;
|
|
28
|
+
orWhere(grouper: WhereGrouper<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
29
|
+
orWhere(raw: AnyRawBuilder): DeleteQueryBuilder<DB, TB, O>;
|
|
30
|
+
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
31
|
+
whereExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
32
|
+
whereNotExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
33
|
+
orWhereExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
34
|
+
orWhereNotExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
35
|
+
innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
36
|
+
innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
37
|
+
leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
38
|
+
leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
39
|
+
rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
40
|
+
rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
41
|
+
fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
42
|
+
fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
43
|
+
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
44
|
+
returning<SE extends SelectExpression<DB, TB>>(selection: SE): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
45
|
+
returningAll(): DeleteQueryBuilder<DB, TB, DB[TB]>;
|
|
46
|
+
/**
|
|
47
|
+
* Simply calls the given function passing `this` as the only argument.
|
|
48
|
+
*
|
|
49
|
+
* This method can be useful when adding optional method calls:
|
|
50
|
+
*
|
|
51
|
+
* ### Examples
|
|
52
|
+
*
|
|
53
|
+
* ```ts
|
|
54
|
+
* db.deleteFrom('person')
|
|
55
|
+
* .call((qb) => {
|
|
56
|
+
* if (something) {
|
|
57
|
+
* return qb.where('something', '=', something)
|
|
58
|
+
* } else {
|
|
59
|
+
* return qb.where('somethingElse', '=', somethingElse)
|
|
60
|
+
* }
|
|
61
|
+
* })
|
|
62
|
+
* .execute()
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
call<T>(func: (qb: this) => T): T;
|
|
66
|
+
/**
|
|
67
|
+
* Change the output type of the query.
|
|
68
|
+
*
|
|
69
|
+
* You should only use this method as the last resort if the types
|
|
70
|
+
* don't support your use case.
|
|
71
|
+
*/
|
|
72
|
+
castTo<T>(): DeleteQueryBuilder<DB, TB, T>;
|
|
73
|
+
withPlugin(plugin: KyselyPlugin): DeleteQueryBuilder<DB, TB, O>;
|
|
74
|
+
toOperationNode(): DeleteQueryNode;
|
|
75
|
+
compile(): CompiledQuery;
|
|
76
|
+
/**
|
|
77
|
+
* Executes the query and returns an array of rows.
|
|
78
|
+
*
|
|
79
|
+
* Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
|
|
80
|
+
*/
|
|
81
|
+
execute(): Promise<O[]>;
|
|
82
|
+
/**
|
|
83
|
+
* Executes the query and returns the first result or undefined if
|
|
84
|
+
* the query returned no result.
|
|
85
|
+
*/
|
|
86
|
+
executeTakeFirst(): Promise<SingleResultType<O>>;
|
|
87
|
+
/**
|
|
88
|
+
* Executes the query and returns the first result or throws if
|
|
89
|
+
* the query returned no result.
|
|
90
|
+
*
|
|
91
|
+
* By default an instance of {@link NoResultError} is thrown, but you can
|
|
92
|
+
* provide a custom error class as the only argument to throw a different
|
|
93
|
+
* error.
|
|
94
|
+
*/
|
|
95
|
+
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<O>;
|
|
96
|
+
}
|
|
97
|
+
export interface DeleteQueryBuilderProps {
|
|
98
|
+
readonly queryId: QueryId;
|
|
99
|
+
readonly queryNode: DeleteQueryNode;
|
|
100
|
+
readonly executor: QueryExecutor;
|
|
101
|
+
readonly parseContext: ParseContext;
|
|
102
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { parseJoin, } from '../parser/join-parser.js';
|
|
2
|
+
import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
|
|
3
|
+
import { parseExistFilter, parseReferenceFilter, parseWhereFilter, parseNotExistFilter, } from '../parser/filter-parser.js';
|
|
4
|
+
import { QueryNode } from '../operation-node/query-node.js';
|
|
5
|
+
import { preventAwait } from '../util/prevent-await.js';
|
|
6
|
+
import { freeze } from '../util/object-utils.js';
|
|
7
|
+
import { NoResultError } from './no-result-error.js';
|
|
8
|
+
import { DeleteResult } from './delete-result.js';
|
|
9
|
+
export class DeleteQueryBuilder {
|
|
10
|
+
#props;
|
|
11
|
+
constructor(props) {
|
|
12
|
+
this.#props = freeze(props);
|
|
13
|
+
}
|
|
14
|
+
where(...args) {
|
|
15
|
+
return new DeleteQueryBuilder({
|
|
16
|
+
...this.#props,
|
|
17
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhereFilter(this.#props.parseContext, args)),
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
whereRef(lhs, op, rhs) {
|
|
21
|
+
return new DeleteQueryBuilder({
|
|
22
|
+
...this.#props,
|
|
23
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
orWhere(...args) {
|
|
27
|
+
return new DeleteQueryBuilder({
|
|
28
|
+
...this.#props,
|
|
29
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhereFilter(this.#props.parseContext, args)),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
orWhereRef(lhs, op, rhs) {
|
|
33
|
+
return new DeleteQueryBuilder({
|
|
34
|
+
...this.#props,
|
|
35
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
whereExists(arg) {
|
|
39
|
+
return new DeleteQueryBuilder({
|
|
40
|
+
...this.#props,
|
|
41
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
whereNotExists(arg) {
|
|
45
|
+
return new DeleteQueryBuilder({
|
|
46
|
+
...this.#props,
|
|
47
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
orWhereExists(arg) {
|
|
51
|
+
return new DeleteQueryBuilder({
|
|
52
|
+
...this.#props,
|
|
53
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
orWhereNotExists(arg) {
|
|
57
|
+
return new DeleteQueryBuilder({
|
|
58
|
+
...this.#props,
|
|
59
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
innerJoin(...args) {
|
|
63
|
+
return new DeleteQueryBuilder({
|
|
64
|
+
...this.#props,
|
|
65
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'InnerJoin', args)),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
leftJoin(...args) {
|
|
69
|
+
return new DeleteQueryBuilder({
|
|
70
|
+
...this.#props,
|
|
71
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'LeftJoin', args)),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
rightJoin(...args) {
|
|
75
|
+
return new DeleteQueryBuilder({
|
|
76
|
+
...this.#props,
|
|
77
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'RightJoin', args)),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
fullJoin(...args) {
|
|
81
|
+
return new DeleteQueryBuilder({
|
|
82
|
+
...this.#props,
|
|
83
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'FullJoin', args)),
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
returning(selection) {
|
|
87
|
+
return new DeleteQueryBuilder({
|
|
88
|
+
...this.#props,
|
|
89
|
+
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectExpressionOrList(this.#props.parseContext, selection)),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
returningAll() {
|
|
93
|
+
return new DeleteQueryBuilder({
|
|
94
|
+
...this.#props,
|
|
95
|
+
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll()),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Simply calls the given function passing `this` as the only argument.
|
|
100
|
+
*
|
|
101
|
+
* This method can be useful when adding optional method calls:
|
|
102
|
+
*
|
|
103
|
+
* ### Examples
|
|
104
|
+
*
|
|
105
|
+
* ```ts
|
|
106
|
+
* db.deleteFrom('person')
|
|
107
|
+
* .call((qb) => {
|
|
108
|
+
* if (something) {
|
|
109
|
+
* return qb.where('something', '=', something)
|
|
110
|
+
* } else {
|
|
111
|
+
* return qb.where('somethingElse', '=', somethingElse)
|
|
112
|
+
* }
|
|
113
|
+
* })
|
|
114
|
+
* .execute()
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
call(func) {
|
|
118
|
+
return func(this);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Change the output type of the query.
|
|
122
|
+
*
|
|
123
|
+
* You should only use this method as the last resort if the types
|
|
124
|
+
* don't support your use case.
|
|
125
|
+
*/
|
|
126
|
+
castTo() {
|
|
127
|
+
return new DeleteQueryBuilder(this.#props);
|
|
128
|
+
}
|
|
129
|
+
withPlugin(plugin) {
|
|
130
|
+
return new DeleteQueryBuilder({
|
|
131
|
+
...this.#props,
|
|
132
|
+
executor: this.#props.executor.withPlugin(plugin),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
toOperationNode() {
|
|
136
|
+
return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);
|
|
137
|
+
}
|
|
138
|
+
compile() {
|
|
139
|
+
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Executes the query and returns an array of rows.
|
|
143
|
+
*
|
|
144
|
+
* Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
|
|
145
|
+
*/
|
|
146
|
+
async execute() {
|
|
147
|
+
const compildQuery = this.compile();
|
|
148
|
+
const query = compildQuery.query;
|
|
149
|
+
const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
|
|
150
|
+
if (this.#props.parseContext.adapter.supportsReturning && query.returning) {
|
|
151
|
+
return result.rows;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
return [new DeleteResult(result.numUpdatedOrDeletedRows)];
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Executes the query and returns the first result or undefined if
|
|
159
|
+
* the query returned no result.
|
|
160
|
+
*/
|
|
161
|
+
async executeTakeFirst() {
|
|
162
|
+
const [result] = await this.execute();
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Executes the query and returns the first result or throws if
|
|
167
|
+
* the query returned no result.
|
|
168
|
+
*
|
|
169
|
+
* By default an instance of {@link NoResultError} is thrown, but you can
|
|
170
|
+
* provide a custom error class as the only argument to throw a different
|
|
171
|
+
* error.
|
|
172
|
+
*/
|
|
173
|
+
async executeTakeFirstOrThrow(errorConstructor = NoResultError) {
|
|
174
|
+
const result = await this.executeTakeFirst();
|
|
175
|
+
if (result === undefined) {
|
|
176
|
+
throw new errorConstructor(this.toOperationNode());
|
|
177
|
+
}
|
|
178
|
+
return result;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
preventAwait(DeleteQueryBuilder, "don't await DeleteQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SelectQueryBuilder } from './select-query-builder.js';
|
|
2
|
+
import { TableExpression, TableExpressionDatabase, TableExpressionTables } from '../parser/table-parser.js';
|
|
2
3
|
import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
|
|
3
4
|
import { ParseContext } from '../parser/parse-context.js';
|
|
4
5
|
import { FunctionBuilder } from './function-builder.js';
|
|
@@ -43,7 +44,8 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
43
44
|
* The query builder returned by this method is typed in a way that you can refer to
|
|
44
45
|
* all tables of the parent query in addition to the subquery's tables.
|
|
45
46
|
*
|
|
46
|
-
*
|
|
47
|
+
* ### Examples
|
|
48
|
+
*
|
|
47
49
|
* This example shows that you can refer to both `pet.owner_id` and `person.id`
|
|
48
50
|
* columns from the subquery. This is needed to be able to create correlated
|
|
49
51
|
* subqueries:
|
|
@@ -52,7 +54,7 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
52
54
|
* const result = await db.selectFrom('pet')
|
|
53
55
|
* .select([
|
|
54
56
|
* 'pet.name',
|
|
55
|
-
* (qb) => qb.
|
|
57
|
+
* (qb) => qb.selectFrom('person')
|
|
56
58
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
57
59
|
* .select('person.first_name')
|
|
58
60
|
* .as('owner_name')
|
|
@@ -74,12 +76,12 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
74
76
|
* from "pet"
|
|
75
77
|
* ```
|
|
76
78
|
*
|
|
77
|
-
* You can use a normal query in place of `(qb) => qb.
|
|
79
|
+
* You can use a normal query in place of `(qb) => qb.selectFrom(...)` but in
|
|
78
80
|
* that case Kysely typings wouldn't allow you to reference `pet.owner_id`
|
|
79
81
|
* because `pet` is not joined to that query.
|
|
80
82
|
*/
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
selectFrom<TE extends TableExpression<DB, TB>>(from: TE[]): SelectQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, {}>;
|
|
84
|
+
selectFrom<TE extends TableExpression<DB, TB>>(from: TE): SelectQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, {}>;
|
|
83
85
|
/**
|
|
84
86
|
* See {@link QueryCreator.withSchema}
|
|
85
87
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SelectQueryBuilder } from './select-query-builder.js';
|
|
2
2
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
3
3
|
import { parseTableExpressionOrList, } from '../parser/table-parser.js';
|
|
4
4
|
import { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';
|
|
@@ -44,8 +44,8 @@ export class ExpressionBuilder {
|
|
|
44
44
|
get fn() {
|
|
45
45
|
return new FunctionBuilder({ executor: this.#props.executor });
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
return new
|
|
47
|
+
selectFrom(table) {
|
|
48
|
+
return new SelectQueryBuilder({
|
|
49
49
|
queryId: createQueryId(),
|
|
50
50
|
executor: this.#props.executor,
|
|
51
51
|
parseContext: this.#props.parseContext,
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, HavingGrouper } from '../parser/filter-parser.js';
|
|
2
|
+
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
3
|
+
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
4
|
+
export interface HavingInterface<DB, TB extends keyof DB> {
|
|
5
|
+
/**
|
|
6
|
+
* Just like {@link WhereInterface.where | where} but adds a `having` statement
|
|
7
|
+
* instead of a `where` statement.
|
|
8
|
+
*/
|
|
9
|
+
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): HavingInterface<DB, TB>;
|
|
10
|
+
having(grouper: HavingGrouper<DB, TB>): HavingInterface<DB, TB>;
|
|
11
|
+
having(raw: AnyRawBuilder): HavingInterface<DB, TB>;
|
|
12
|
+
/**
|
|
13
|
+
* Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
|
|
14
|
+
* instead of a `where` statement.
|
|
15
|
+
*/
|
|
16
|
+
havingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
17
|
+
/**
|
|
18
|
+
* Just like {@link WhereInterface.orWhere | orWhere} but adds a `having` statement
|
|
19
|
+
* instead of a `where` statement.
|
|
20
|
+
*/
|
|
21
|
+
orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): HavingInterface<DB, TB>;
|
|
22
|
+
orHaving(grouper: HavingGrouper<DB, TB>): HavingInterface<DB, TB>;
|
|
23
|
+
orHaving(raw: AnyRawBuilder): HavingInterface<DB, TB>;
|
|
24
|
+
/**
|
|
25
|
+
* Just like {@link WhereInterface.orWhereRef | orWhereRef} but adds a `having` statement
|
|
26
|
+
* instead of a `where` statement.
|
|
27
|
+
*/
|
|
28
|
+
orHavingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
29
|
+
/**
|
|
30
|
+
* Just like {@link WhereInterface.whereExists | whereExists} but adds a `having` statement
|
|
31
|
+
* instead of a `where` statement.
|
|
32
|
+
*/
|
|
33
|
+
havingExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
34
|
+
/**
|
|
35
|
+
* Just like {@link WhereInterface.whereNotExists | whereNotExists} but adds a `having` statement
|
|
36
|
+
* instead of a `where` statement.
|
|
37
|
+
*/
|
|
38
|
+
havingNotExist(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
39
|
+
/**
|
|
40
|
+
* Just like {@link WhereInterface.orWhereExists | orWhereExists} but adds a `having` statement
|
|
41
|
+
* instead of a `where` statement.
|
|
42
|
+
*/
|
|
43
|
+
orHavingExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
44
|
+
/**
|
|
45
|
+
* Just like {@link WhereInterface.orWhereNotExists | orWhereNotExists} but adds a `having` statement
|
|
46
|
+
* instead of a `where` statement.
|
|
47
|
+
*/
|
|
48
|
+
orHavingNotExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
49
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|