kysely 0.21.5 → 0.22.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 +3 -2
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/cjs/index.d.ts +10 -4
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/kysely.d.ts +3 -3
- package/dist/cjs/kysely.js +3 -3
- package/dist/cjs/migration/file-migration-provider.js +7 -2
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +22 -0
- package/dist/cjs/operation-node/aggregate-function-node.js +31 -0
- package/dist/cjs/operation-node/alias-node.d.ts +2 -1
- package/dist/cjs/operation-node/default-insert-value-node.d.ts +11 -0
- package/dist/cjs/operation-node/{union-node.js → default-insert-value-node.js} +5 -7
- package/dist/cjs/operation-node/group-by-node.d.ts +1 -1
- package/dist/cjs/operation-node/group-by-node.js +3 -3
- package/dist/cjs/operation-node/insert-query-node.d.ts +2 -1
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +12 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +43 -5
- package/dist/cjs/operation-node/operation-node-utils.d.ts +2 -1
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -2
- package/dist/cjs/operation-node/operation-node-visitor.js +6 -1
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/over-node.d.ts +19 -0
- package/dist/cjs/operation-node/over-node.js +35 -0
- package/dist/cjs/operation-node/partition-by-item-node.d.ts +14 -0
- package/dist/cjs/operation-node/partition-by-item-node.js +18 -0
- package/dist/cjs/operation-node/partition-by-node.d.ts +14 -0
- package/dist/cjs/operation-node/partition-by-node.js +24 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +3 -3
- package/dist/cjs/operation-node/select-query-node.js +4 -4
- package/dist/cjs/operation-node/set-operation-node.d.ts +18 -0
- package/dist/cjs/operation-node/set-operation-node.js +20 -0
- package/dist/cjs/operation-node/value-list-node.d.ts +3 -1
- package/dist/cjs/parser/complex-expression-parser.d.ts +6 -4
- package/dist/cjs/parser/group-by-parser.d.ts +1 -1
- package/dist/cjs/parser/group-by-parser.js +2 -2
- package/dist/cjs/parser/insert-values-parser.js +13 -4
- package/dist/cjs/parser/parse-utils.d.ts +2 -0
- package/dist/cjs/parser/parse-utils.js +9 -1
- package/dist/cjs/parser/partition-by-parser.d.ts +6 -0
- package/dist/cjs/parser/partition-by-parser.js +9 -0
- package/dist/cjs/parser/reference-parser.d.ts +2 -1
- package/dist/cjs/parser/select-parser.d.ts +4 -3
- package/dist/cjs/parser/set-operation-parser.d.ts +5 -0
- package/dist/cjs/parser/set-operation-parser.js +8 -0
- package/dist/cjs/parser/value-parser.d.ts +2 -1
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +117 -0
- package/dist/cjs/query-builder/aggregate-function-builder.js +146 -0
- package/dist/cjs/query-builder/expression-builder.d.ts +3 -3
- package/dist/cjs/query-builder/expression-builder.js +3 -3
- package/dist/cjs/query-builder/{function-builder.d.ts → function-module.d.ts} +49 -42
- package/dist/cjs/query-builder/{function-builder.js → function-module.js} +70 -59
- package/dist/cjs/query-builder/over-builder.d.ts +59 -0
- package/dist/cjs/query-builder/over-builder.js +50 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +63 -3
- package/dist/cjs/query-builder/select-query-builder.js +83 -3
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +12 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +44 -14
- package/dist/cjs/raw-builder/sql.d.ts +13 -5
- package/dist/cjs/raw-builder/sql.js +6 -0
- package/dist/cjs/util/object-utils.d.ts +1 -0
- package/dist/cjs/util/object-utils.js +5 -1
- package/dist/cjs/util/type-utils.d.ts +5 -1
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/esm/index.d.ts +10 -4
- package/dist/esm/index.js +8 -2
- package/dist/esm/kysely.d.ts +3 -3
- package/dist/esm/kysely.js +3 -3
- package/dist/esm/migration/file-migration-provider.js +7 -2
- package/dist/esm/operation-node/aggregate-function-node.d.ts +22 -0
- package/dist/esm/operation-node/aggregate-function-node.js +29 -0
- package/dist/esm/operation-node/alias-node.d.ts +2 -1
- package/dist/esm/operation-node/default-insert-value-node.d.ts +11 -0
- package/dist/esm/operation-node/default-insert-value-node.js +15 -0
- package/dist/esm/operation-node/group-by-node.d.ts +1 -1
- package/dist/esm/operation-node/group-by-node.js +3 -3
- package/dist/esm/operation-node/insert-query-node.d.ts +2 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -2
- package/dist/esm/operation-node/operation-node-transformer.js +43 -5
- package/dist/esm/operation-node/operation-node-utils.d.ts +2 -1
- package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -2
- package/dist/esm/operation-node/operation-node-visitor.js +6 -1
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/over-node.d.ts +19 -0
- package/dist/esm/operation-node/over-node.js +33 -0
- package/dist/esm/operation-node/partition-by-item-node.d.ts +14 -0
- package/dist/esm/operation-node/partition-by-item-node.js +16 -0
- package/dist/esm/operation-node/partition-by-node.d.ts +14 -0
- package/dist/esm/operation-node/partition-by-node.js +22 -0
- package/dist/esm/operation-node/select-query-node.d.ts +3 -3
- package/dist/esm/operation-node/select-query-node.js +4 -4
- package/dist/esm/operation-node/set-operation-node.d.ts +18 -0
- package/dist/esm/operation-node/set-operation-node.js +18 -0
- package/dist/esm/operation-node/value-list-node.d.ts +3 -1
- package/dist/esm/parser/complex-expression-parser.d.ts +6 -4
- package/dist/esm/parser/group-by-parser.d.ts +1 -1
- package/dist/esm/parser/group-by-parser.js +2 -2
- package/dist/esm/parser/insert-values-parser.js +14 -5
- package/dist/esm/parser/parse-utils.d.ts +2 -0
- package/dist/esm/parser/parse-utils.js +7 -0
- package/dist/esm/parser/partition-by-parser.d.ts +6 -0
- package/dist/esm/parser/partition-by-parser.js +6 -0
- package/dist/esm/parser/reference-parser.d.ts +2 -1
- package/dist/esm/parser/select-parser.d.ts +4 -3
- package/dist/esm/parser/set-operation-parser.d.ts +5 -0
- package/dist/esm/parser/set-operation-parser.js +5 -0
- package/dist/esm/parser/value-parser.d.ts +2 -1
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +117 -0
- package/dist/esm/query-builder/aggregate-function-builder.js +142 -0
- package/dist/esm/query-builder/expression-builder.d.ts +3 -3
- package/dist/esm/query-builder/expression-builder.js +3 -3
- package/dist/esm/query-builder/{function-builder.d.ts → function-module.d.ts} +49 -42
- package/dist/esm/query-builder/{function-builder.js → function-module.js} +69 -58
- package/dist/esm/query-builder/over-builder.d.ts +59 -0
- package/dist/esm/query-builder/over-builder.js +47 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +63 -3
- package/dist/esm/query-builder/select-query-builder.js +83 -3
- package/dist/esm/query-compiler/default-query-compiler.d.ts +12 -2
- package/dist/esm/query-compiler/default-query-compiler.js +44 -14
- package/dist/esm/raw-builder/sql.d.ts +13 -5
- package/dist/esm/raw-builder/sql.js +6 -0
- package/dist/esm/util/object-utils.d.ts +1 -0
- package/dist/esm/util/object-utils.js +3 -0
- package/dist/esm/util/type-utils.d.ts +5 -1
- package/package.json +4 -1
- package/dist/cjs/operation-node/union-node.d.ts +0 -16
- package/dist/cjs/parser/union-parser.d.ts +0 -5
- package/dist/cjs/parser/union-parser.js +0 -8
- package/dist/esm/operation-node/union-node.d.ts +0 -16
- package/dist/esm/operation-node/union-node.js +0 -17
- package/dist/esm/parser/union-parser.d.ts +0 -5
- package/dist/esm/parser/union-parser.js +0 -5
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ColumnNode } from './column-node.js';
|
|
2
|
+
import { OperationNode } from './operation-node.js';
|
|
3
|
+
import { ReferenceNode } from './reference-node.js';
|
|
4
|
+
export interface PartitionByItemNode extends OperationNode {
|
|
5
|
+
readonly kind: 'PartitionByItemNode';
|
|
6
|
+
readonly partitionBy: ColumnNode | ReferenceNode;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare const PartitionByItemNode: Readonly<{
|
|
12
|
+
is(node: OperationNode): node is PartitionByItemNode;
|
|
13
|
+
create(partitionBy: ColumnNode | ReferenceNode): PartitionByItemNode;
|
|
14
|
+
}>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PartitionByItemNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.PartitionByItemNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'PartitionByItemNode';
|
|
11
|
+
},
|
|
12
|
+
create(partitionBy) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'PartitionByItemNode',
|
|
15
|
+
partitionBy,
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PartitionByItemNode } from './partition-by-item-node.js';
|
|
2
|
+
import { OperationNode } from './operation-node.js';
|
|
3
|
+
export interface PartitionByNode extends OperationNode {
|
|
4
|
+
readonly kind: 'PartitionByNode';
|
|
5
|
+
readonly items: ReadonlyArray<PartitionByItemNode>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare const PartitionByNode: Readonly<{
|
|
11
|
+
is(node: OperationNode): node is PartitionByNode;
|
|
12
|
+
create(items: ReadonlyArray<PartitionByItemNode>): PartitionByNode;
|
|
13
|
+
cloneWithItems(partitionBy: PartitionByNode, items: ReadonlyArray<PartitionByItemNode>): PartitionByNode;
|
|
14
|
+
}>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PartitionByNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.PartitionByNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'PartitionByNode';
|
|
11
|
+
},
|
|
12
|
+
create(items) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'PartitionByNode',
|
|
15
|
+
items: (0, object_utils_js_1.freeze)(items),
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
cloneWithItems(partitionBy, items) {
|
|
19
|
+
return (0, object_utils_js_1.freeze)({
|
|
20
|
+
...partitionBy,
|
|
21
|
+
items: (0, object_utils_js_1.freeze)([...partitionBy.items, ...items]),
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
});
|
|
@@ -12,9 +12,9 @@ import { OrderByNode } from './order-by-node.js';
|
|
|
12
12
|
import { SelectionNode } from './selection-node.js';
|
|
13
13
|
import { WhereNode } from './where-node.js';
|
|
14
14
|
import { WithNode } from './with-node.js';
|
|
15
|
-
import { UnionNode } from './union-node.js';
|
|
16
15
|
import { SelectModifierNode } from './select-modifier-node.js';
|
|
17
16
|
import { ExplainNode } from './explain-node.js';
|
|
17
|
+
import { SetOperationNode } from './set-operation-node.js';
|
|
18
18
|
export interface SelectQueryNode extends OperationNode {
|
|
19
19
|
readonly kind: 'SelectQueryNode';
|
|
20
20
|
readonly from: FromNode;
|
|
@@ -30,8 +30,8 @@ export interface SelectQueryNode extends OperationNode {
|
|
|
30
30
|
readonly offset?: OffsetNode;
|
|
31
31
|
readonly with?: WithNode;
|
|
32
32
|
readonly having?: HavingNode;
|
|
33
|
-
readonly union?: ReadonlyArray<UnionNode>;
|
|
34
33
|
readonly explain?: ExplainNode;
|
|
34
|
+
readonly setOperations?: ReadonlyArray<SetOperationNode>;
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* @internal
|
|
@@ -49,6 +49,6 @@ export declare const SelectQueryNode: Readonly<{
|
|
|
49
49
|
cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
|
|
50
50
|
cloneWithHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
|
|
51
51
|
cloneWithOrHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
|
|
52
|
-
|
|
52
|
+
cloneWithSetOperation(selectNode: SelectQueryNode, setOperation: SetOperationNode): SelectQueryNode;
|
|
53
53
|
cloneWithExplain(selectNode: SelectQueryNode, explain: ExplainNode): SelectQueryNode;
|
|
54
54
|
}>;
|
|
@@ -96,12 +96,12 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
96
96
|
: having_node_js_1.HavingNode.create(filter),
|
|
97
97
|
});
|
|
98
98
|
},
|
|
99
|
-
|
|
99
|
+
cloneWithSetOperation(selectNode, setOperation) {
|
|
100
100
|
return (0, object_utils_js_1.freeze)({
|
|
101
101
|
...selectNode,
|
|
102
|
-
|
|
103
|
-
? (0, object_utils_js_1.freeze)([...selectNode.
|
|
104
|
-
: (0, object_utils_js_1.freeze)([
|
|
102
|
+
setOperations: selectNode.setOperations
|
|
103
|
+
? (0, object_utils_js_1.freeze)([...selectNode.setOperations, setOperation])
|
|
104
|
+
: (0, object_utils_js_1.freeze)([setOperation]),
|
|
105
105
|
});
|
|
106
106
|
},
|
|
107
107
|
cloneWithExplain(selectNode, explain) {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { OperationNode } from './operation-node.js';
|
|
2
|
+
import { RawNode } from './raw-node.js';
|
|
3
|
+
import { SelectQueryNode } from './select-query-node.js';
|
|
4
|
+
export declare type SetOperationExpressionNode = SelectQueryNode | RawNode;
|
|
5
|
+
export declare type SetOperator = 'union' | 'intersect' | 'except';
|
|
6
|
+
export interface SetOperationNode extends OperationNode {
|
|
7
|
+
kind: 'SetOperationNode';
|
|
8
|
+
operator: SetOperator;
|
|
9
|
+
expression: SetOperationExpressionNode;
|
|
10
|
+
all: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export declare const SetOperationNode: Readonly<{
|
|
16
|
+
is(node: OperationNode): node is SetOperationNode;
|
|
17
|
+
create(operator: SetOperator, expression: SetOperationExpressionNode, all: boolean): SetOperationNode;
|
|
18
|
+
}>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SetOperationNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.SetOperationNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'SetOperationNode';
|
|
11
|
+
},
|
|
12
|
+
create(operator, expression, all) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'SetOperationNode',
|
|
15
|
+
operator,
|
|
16
|
+
expression,
|
|
17
|
+
all,
|
|
18
|
+
});
|
|
19
|
+
},
|
|
20
|
+
});
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { AggregateFunctionNode } from './aggregate-function-node.js';
|
|
2
|
+
import { DefaultInsertValueNode } from './default-insert-value-node.js';
|
|
1
3
|
import { OperationNode } from './operation-node.js';
|
|
2
4
|
import { RawNode } from './raw-node.js';
|
|
3
5
|
import { ReferenceNode } from './reference-node.js';
|
|
4
6
|
import { SelectQueryNode } from './select-query-node.js';
|
|
5
7
|
import { ValueNode } from './value-node.js';
|
|
6
|
-
export declare type ListNodeItem = ValueNode | ReferenceNode | SelectQueryNode | RawNode;
|
|
8
|
+
export declare type ListNodeItem = ValueNode | ReferenceNode | DefaultInsertValueNode | SelectQueryNode | RawNode | AggregateFunctionNode;
|
|
7
9
|
export interface ValueListNode extends OperationNode {
|
|
8
10
|
readonly kind: 'ValueListNode';
|
|
9
11
|
readonly values: ReadonlyArray<ListNodeItem>;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { AggregateFunctionNode } from '../operation-node/aggregate-function-node.js';
|
|
1
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
3
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
3
4
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
5
|
+
import { AggregateFunctionBuilder } from '../query-builder/aggregate-function-builder.js';
|
|
4
6
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
5
|
-
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnySelectQueryBuilder, SelectQueryBuilderFactory, RawBuilderFactory } from '../util/type-utils.js';
|
|
6
|
-
export declare type ComplexExpression<DB, TB extends keyof DB, V = any> = AnySelectQueryBuilder | SelectQueryBuilderFactory<DB, TB> | RawBuilder<V> | RawBuilderFactory<DB, TB>;
|
|
7
|
-
export declare type AliasedComplexExpression<DB, TB extends keyof DB> = AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB>;
|
|
8
|
-
export declare function parseComplexExpression(exp: ComplexExpression<any, any>): SelectQueryNode | RawNode;
|
|
7
|
+
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnySelectQueryBuilder, SelectQueryBuilderFactory, RawBuilderFactory, AggregateFunctionBuilderFactory, AliasedAggregateFunctionBuilderFactory, AnyAliasedAggregateFunctionBuilder } from '../util/type-utils.js';
|
|
8
|
+
export declare type ComplexExpression<DB, TB extends keyof DB, V = any> = AnySelectQueryBuilder | SelectQueryBuilderFactory<DB, TB> | RawBuilder<V> | RawBuilderFactory<DB, TB, V> | AggregateFunctionBuilder<DB, TB, V> | AggregateFunctionBuilderFactory<DB, TB, V>;
|
|
9
|
+
export declare type AliasedComplexExpression<DB, TB extends keyof DB> = AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB> | AnyAliasedAggregateFunctionBuilder | AliasedAggregateFunctionBuilderFactory<DB, TB>;
|
|
10
|
+
export declare function parseComplexExpression(exp: ComplexExpression<any, any>): SelectQueryNode | RawNode | AggregateFunctionNode;
|
|
9
11
|
export declare function parseAliasedComplexExpression(exp: AliasedComplexExpression<any, any>): AliasNode;
|
|
10
12
|
export declare function isComplexExpression(obj: unknown): obj is ComplexExpression<any, any>;
|
|
@@ -2,4 +2,4 @@ import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
|
|
|
2
2
|
import { ReferenceExpression } from './reference-parser.js';
|
|
3
3
|
export declare type GroupByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | (keyof O & string);
|
|
4
4
|
export declare type GroupByExpressionOrList<DB, TB extends keyof DB, O> = ReadonlyArray<GroupByExpression<DB, TB, O>> | GroupByExpression<DB, TB, O>;
|
|
5
|
-
export declare function parseGroupBy(
|
|
5
|
+
export declare function parseGroupBy(groupBy: GroupByExpressionOrList<any, any, any>): GroupByItemNode[];
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.parseGroupBy = void 0;
|
|
4
4
|
const group_by_item_node_js_1 = require("../operation-node/group-by-item-node.js");
|
|
5
5
|
const reference_parser_js_1 = require("./reference-parser.js");
|
|
6
|
-
function parseGroupBy(
|
|
7
|
-
return (0, reference_parser_js_1.parseReferenceExpressionOrList)(
|
|
6
|
+
function parseGroupBy(groupBy) {
|
|
7
|
+
return (0, reference_parser_js_1.parseReferenceExpressionOrList)(groupBy).map(group_by_item_node_js_1.GroupByItemNode.create);
|
|
8
8
|
}
|
|
9
9
|
exports.parseGroupBy = parseGroupBy;
|
|
@@ -8,6 +8,7 @@ const object_utils_js_1 = require("../util/object-utils.js");
|
|
|
8
8
|
const value_parser_js_1 = require("./value-parser.js");
|
|
9
9
|
const values_node_js_1 = require("../operation-node/values-node.js");
|
|
10
10
|
const complex_expression_parser_js_1 = require("./complex-expression-parser.js");
|
|
11
|
+
const default_insert_value_node_js_1 = require("../operation-node/default-insert-value-node.js");
|
|
11
12
|
function parseInsertObjectOrList(args) {
|
|
12
13
|
return parseInsertColumnsAndValues(Array.isArray(args) ? args : [args]);
|
|
13
14
|
}
|
|
@@ -33,16 +34,24 @@ function parseColumnNamesAndIndexes(rows) {
|
|
|
33
34
|
}
|
|
34
35
|
function parseRowValues(row, columns) {
|
|
35
36
|
const rowColumns = Object.keys(row);
|
|
36
|
-
const rowValues =
|
|
37
|
+
const rowValues = Array.from({
|
|
38
|
+
length: columns.size,
|
|
39
|
+
});
|
|
40
|
+
let complexColumn = false;
|
|
37
41
|
for (const col of rowColumns) {
|
|
38
42
|
const columnIdx = columns.get(col);
|
|
39
|
-
const value = row[col];
|
|
40
43
|
if (columnIdx !== undefined) {
|
|
44
|
+
const value = row[col];
|
|
45
|
+
if ((0, complex_expression_parser_js_1.isComplexExpression)(value)) {
|
|
46
|
+
complexColumn = true;
|
|
47
|
+
}
|
|
41
48
|
rowValues[columnIdx] = value;
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
|
-
|
|
45
|
-
|
|
51
|
+
const columnMissing = rowColumns.length < columns.size;
|
|
52
|
+
if (columnMissing || complexColumn) {
|
|
53
|
+
const defaultValue = default_insert_value_node_js_1.DefaultInsertValueNode.create();
|
|
54
|
+
return value_list_node_js_1.ValueListNode.create(rowValues.map((it) => (0, object_utils_js_1.isUndefined)(it) ? defaultValue : (0, value_parser_js_1.parseValueExpression)(it)));
|
|
46
55
|
}
|
|
47
56
|
return primitive_value_list_node_js_1.PrimitiveValueListNode.create(rowValues);
|
|
48
57
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { JoinType } from '../operation-node/join-node.js';
|
|
2
2
|
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
3
3
|
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
4
|
+
import { OverBuilder } from '../query-builder/over-builder.js';
|
|
4
5
|
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
5
6
|
import { QueryCreator } from '../query-creator.js';
|
|
6
7
|
import { TableExpression } from './table-parser.js';
|
|
@@ -8,3 +9,4 @@ export declare function createSelectQueryBuilder(): SelectQueryBuilder<any, any,
|
|
|
8
9
|
export declare function createExpressionBuilder(): ExpressionBuilder<any, any>;
|
|
9
10
|
export declare function createQueryCreator(): QueryCreator<any>;
|
|
10
11
|
export declare function createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
|
|
12
|
+
export declare function createOverBuilder(): OverBuilder<any, any>;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createJoinBuilder = exports.createQueryCreator = exports.createExpressionBuilder = exports.createSelectQueryBuilder = void 0;
|
|
3
|
+
exports.createOverBuilder = exports.createJoinBuilder = exports.createQueryCreator = exports.createExpressionBuilder = exports.createSelectQueryBuilder = void 0;
|
|
4
4
|
const join_node_js_1 = require("../operation-node/join-node.js");
|
|
5
|
+
const over_node_js_1 = require("../operation-node/over-node.js");
|
|
5
6
|
const select_query_node_js_1 = require("../operation-node/select-query-node.js");
|
|
6
7
|
const expression_builder_js_1 = require("../query-builder/expression-builder.js");
|
|
7
8
|
const join_builder_js_1 = require("../query-builder/join-builder.js");
|
|
9
|
+
const over_builder_js_1 = require("../query-builder/over-builder.js");
|
|
8
10
|
const select_query_builder_js_1 = require("../query-builder/select-query-builder.js");
|
|
9
11
|
const query_creator_js_1 = require("../query-creator.js");
|
|
10
12
|
const noop_query_executor_js_1 = require("../query-executor/noop-query-executor.js");
|
|
@@ -36,3 +38,9 @@ function createJoinBuilder(joinType, table) {
|
|
|
36
38
|
});
|
|
37
39
|
}
|
|
38
40
|
exports.createJoinBuilder = createJoinBuilder;
|
|
41
|
+
function createOverBuilder() {
|
|
42
|
+
return new over_builder_js_1.OverBuilder({
|
|
43
|
+
overNode: over_node_js_1.OverNode.create(),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
exports.createOverBuilder = createOverBuilder;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
2
|
+
import { PartitionByItemNode } from '../operation-node/partition-by-item-node.js';
|
|
3
|
+
import { StringReference } from './reference-parser.js';
|
|
4
|
+
export declare type PartitionByExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any>;
|
|
5
|
+
export declare type PartitionByExpressionOrList<DB, TB extends keyof DB> = ReadonlyArray<PartitionByExpression<DB, TB>> | PartitionByExpression<DB, TB>;
|
|
6
|
+
export declare function parsePartitionBy(partitionBy: PartitionByExpressionOrList<any, any>): PartitionByItemNode[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parsePartitionBy = void 0;
|
|
4
|
+
const partition_by_item_node_js_1 = require("../operation-node/partition-by-item-node.js");
|
|
5
|
+
const reference_parser_js_1 = require("./reference-parser.js");
|
|
6
|
+
function parsePartitionBy(partitionBy) {
|
|
7
|
+
return (0, reference_parser_js_1.parseReferenceExpressionOrList)(partitionBy).map(partition_by_item_node_js_1.PartitionByItemNode.create);
|
|
8
|
+
}
|
|
9
|
+
exports.parsePartitionBy = parsePartitionBy;
|
|
@@ -8,10 +8,11 @@ import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
|
8
8
|
import { ComplexExpression } from './complex-expression-parser.js';
|
|
9
9
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
10
10
|
import { SelectType } from '../util/column-type.js';
|
|
11
|
+
import { AggregateFunctionBuilder } from '../query-builder/aggregate-function-builder.js';
|
|
11
12
|
export declare type ReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any> | ComplexExpression<DB, TB>;
|
|
12
13
|
export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
|
|
13
14
|
export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
|
|
14
|
-
export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : unknown;
|
|
15
|
+
export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends AggregateFunctionBuilder<any, any, infer O> ? O : RE extends (qb: any) => AggregateFunctionBuilder<any, any, infer O> ? O : unknown;
|
|
15
16
|
declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : unknown;
|
|
16
17
|
export declare function parseReferenceExpressionOrList(arg: ReferenceExpressionOrList<any, any>): ReferenceExpressionNode[];
|
|
17
18
|
export declare function parseReferenceExpression(exp: ReferenceExpression<any, any>): ReferenceExpressionNode;
|
|
@@ -5,7 +5,8 @@ import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTa
|
|
|
5
5
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
6
6
|
import { AliasedComplexExpression } from './complex-expression-parser.js';
|
|
7
7
|
import { Selectable, SelectType } from '../util/column-type.js';
|
|
8
|
-
|
|
8
|
+
import { AliasedAggregateFunctionBuilder } from '../query-builder/aggregate-function-builder.js';
|
|
9
|
+
export declare type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | DynamicReferenceBuilder<any> | AliasedComplexExpression<DB, TB> | AliasedAggregateFunctionBuilder<DB, TB>;
|
|
9
10
|
export declare type SelectExpressionOrList<DB, TB extends keyof DB> = SelectExpression<DB, TB> | ReadonlyArray<SelectExpression<DB, TB>>;
|
|
10
11
|
/**
|
|
11
12
|
* Given a selection expression returns a query builder type that
|
|
@@ -19,9 +20,9 @@ export declare type SelectAllQueryBuilder<DB, TB extends keyof DB, O, S extends
|
|
|
19
20
|
export declare type Selection<DB, TB extends keyof DB, SE> = {
|
|
20
21
|
[A in ExtractAliasFromSelectExpression<SE>]: SelectType<ExtractTypeFromSelectExpression<DB, TB, SE, A>>;
|
|
21
22
|
};
|
|
22
|
-
declare type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedRawBuilder<any, infer RA> ? RA : SE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : SE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : never;
|
|
23
|
+
declare type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedRawBuilder<any, infer RA> ? RA : SE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : SE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : SE extends AliasedAggregateFunctionBuilder<any, any, any, infer QA> ? QA : SE extends (qb: any) => AliasedAggregateFunctionBuilder<any, any, any, infer QA> ? QA : never;
|
|
23
24
|
declare type ExtractAliasFromStringSelectExpression<SE extends string> = SE extends `${string}.${string}.${string} as ${infer A}` ? A : SE extends `${string}.${string} as ${infer A}` ? A : SE extends `${string} as ${infer A}` ? A : SE extends `${string}.${string}.${infer C}` ? C : SE extends `${string}.${infer C}` ? C : SE;
|
|
24
|
-
declare type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE, A extends keyof any> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE, A> : SE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends DynamicReferenceBuilder<infer RA> ? A extends ExtractAliasFromStringSelectExpression<RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA, A> | undefined : never : never;
|
|
25
|
+
declare type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE, A extends keyof any> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE, A> : SE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends DynamicReferenceBuilder<infer RA> ? A extends ExtractAliasFromStringSelectExpression<RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA, A> | undefined : never : SE extends AliasedAggregateFunctionBuilder<any, any, infer O, infer FA> ? FA extends A ? O : never : SE extends (qb: any) => AliasedAggregateFunctionBuilder<any, any, infer O, infer FA> ? FA extends A ? O : never : never;
|
|
25
26
|
declare type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string, A extends keyof any> = SE extends `${infer SC}.${infer T}.${infer C} as ${infer RA}` ? RA extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C} as ${infer RA}` ? RA extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends `${infer C} as ${infer RA}` ? RA extends A ? C extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, C> : never : never : SE extends `${infer SC}.${infer T}.${infer C}` ? C extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C}` ? C extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends A ? SE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, SE> : never : never;
|
|
26
27
|
declare type AllSelection<DB, TB extends keyof DB> = Selectable<{
|
|
27
28
|
[C in AnyColumn<DB, TB>]: {
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SetOperator, SetOperationNode } from '../operation-node/set-operation-node.js';
|
|
2
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
3
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
|
+
export declare type SetOperationExpression<DB, O> = SelectQueryBuilder<DB, any, O> | RawBuilder<O>;
|
|
5
|
+
export declare function parseSetOperation(operator: SetOperator, expression: SetOperationExpression<any, any>, all: boolean): SetOperationNode;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseSetOperation = void 0;
|
|
4
|
+
const set_operation_node_js_1 = require("../operation-node/set-operation-node.js");
|
|
5
|
+
function parseSetOperation(operator, expression, all) {
|
|
6
|
+
return set_operation_node_js_1.SetOperationNode.create(operator, expression.toOperationNode(), all);
|
|
7
|
+
}
|
|
8
|
+
exports.parseSetOperation = parseSetOperation;
|
|
@@ -3,7 +3,8 @@ import { ValueNode } from '../operation-node/value-node.js';
|
|
|
3
3
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
4
4
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
5
5
|
import { ComplexExpression } from './complex-expression-parser.js';
|
|
6
|
+
import { AggregateFunctionNode } from '../operation-node/aggregate-function-node.js';
|
|
6
7
|
export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ComplexExpression<DB, TB, V>;
|
|
7
8
|
export declare type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
|
|
8
9
|
export declare function parseValueExpressionOrList(arg: ValueExpressionOrList<any, any, unknown>): ValueExpressionNode;
|
|
9
|
-
export declare function parseValueExpression(exp: ValueExpression<any, any, unknown>): ValueNode | SelectQueryNode | RawNode;
|
|
10
|
+
export declare function parseValueExpression(exp: ValueExpression<any, any, unknown>): ValueNode | SelectQueryNode | RawNode | AggregateFunctionNode;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { AggregateFunctionNode } from '../operation-node/aggregate-function-node.js';
|
|
2
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
|
+
import { AliasNode } from '../operation-node/alias-node.js';
|
|
4
|
+
import { OverBuilder } from './over-builder.js';
|
|
5
|
+
export declare class AggregateFunctionBuilder<DB, TB extends keyof DB, O = unknown> implements OperationNodeSource {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(props: AggregateFunctionBuilderProps);
|
|
8
|
+
/**
|
|
9
|
+
* Returns an aliased version of the function.
|
|
10
|
+
*
|
|
11
|
+
* In addition to slapping `as "the_alias"` to the end of the SQL,
|
|
12
|
+
* this method also provides strict typing:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* const result = await db
|
|
16
|
+
* .selectFrom('person')
|
|
17
|
+
* .select(
|
|
18
|
+
* eb => eb.fn.count<number>('id').as('person_count')
|
|
19
|
+
* )
|
|
20
|
+
* .executeTakeFirstOrThrow()
|
|
21
|
+
*
|
|
22
|
+
* // `person_count: number` field exists in the result type.
|
|
23
|
+
* console.log(result.person_count)
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* The generated SQL (PostgreSQL):
|
|
27
|
+
*
|
|
28
|
+
* ```sql
|
|
29
|
+
* select count("id") as "person_count"
|
|
30
|
+
* from "person"
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
as<A extends string>(alias: A): AliasedAggregateFunctionBuilder<DB, TB, O, A>;
|
|
34
|
+
/**
|
|
35
|
+
* Adds a distinct clause inside the function.
|
|
36
|
+
*
|
|
37
|
+
* ```ts
|
|
38
|
+
* const result = await db
|
|
39
|
+
* .selectFrom('person')
|
|
40
|
+
* .select(
|
|
41
|
+
* eb => eb.fn.count<number>('first_name').distinct().as('first_name_count')
|
|
42
|
+
* )
|
|
43
|
+
* .executeTakeFirstOrThrow()
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* The generated SQL (PostgreSQL):
|
|
47
|
+
*
|
|
48
|
+
* ```sql
|
|
49
|
+
* select count(distinct "first_name") as "first_name_count"
|
|
50
|
+
* from "person"
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
distinct(): AggregateFunctionBuilder<DB, TB, O>;
|
|
54
|
+
/**
|
|
55
|
+
* Adds an over clause (window functions) after the function.
|
|
56
|
+
*
|
|
57
|
+
* ```ts
|
|
58
|
+
* const result = await db
|
|
59
|
+
* .selectFrom('person')
|
|
60
|
+
* .select(
|
|
61
|
+
* eb => eb.fn.avg<number>('age').over().as('average_age')
|
|
62
|
+
* )
|
|
63
|
+
* .execute()
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* The generated SQL (PostgreSQL):
|
|
67
|
+
*
|
|
68
|
+
* ```sql
|
|
69
|
+
* select avg("age") over() as "average_age"
|
|
70
|
+
* from "person"
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* Also supports passing a callback that returns an over builder,
|
|
74
|
+
* allowing to add partition by and sort by clauses inside over.
|
|
75
|
+
*
|
|
76
|
+
* ```ts
|
|
77
|
+
* const result = await db
|
|
78
|
+
* .selectFrom('person')
|
|
79
|
+
* .select(
|
|
80
|
+
* eb => eb.fn.avg<number>('age').over(
|
|
81
|
+
* ob => ob.partitionBy('last_name').orderBy('first_name', 'asc')
|
|
82
|
+
* ).as('average_age')
|
|
83
|
+
* )
|
|
84
|
+
* .execute()
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* The generated SQL (PostgreSQL):
|
|
88
|
+
*
|
|
89
|
+
* ```sql
|
|
90
|
+
* select avg("age") over(partition by "last_name" order by "first_name" asc) as "average_age"
|
|
91
|
+
* from "person"
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
over(over?: OverBuilderCallback<DB, TB>): AggregateFunctionBuilder<DB, TB, O>;
|
|
95
|
+
toOperationNode(): AggregateFunctionNode;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* {@link AggregateFunctionBuilder} with an alias. The result of calling {@link AggregateFunctionBuilder.as}.
|
|
99
|
+
*/
|
|
100
|
+
export declare class AliasedAggregateFunctionBuilder<DB, TB extends keyof DB, O = unknown, A extends string = never> implements OperationNodeSource {
|
|
101
|
+
#private;
|
|
102
|
+
constructor(aggregateFunctionBuilder: AggregateFunctionBuilder<DB, TB, O>, alias: A);
|
|
103
|
+
/**
|
|
104
|
+
* @private
|
|
105
|
+
*
|
|
106
|
+
* This needs to be here just so that the typings work. Without this
|
|
107
|
+
* the generated .d.ts file contains no reference to the type param A
|
|
108
|
+
* which causes this type to be equal to AliasedAggregateFunctionBuilder with any A
|
|
109
|
+
* as long as O is the same.
|
|
110
|
+
*/
|
|
111
|
+
protected get alias(): A;
|
|
112
|
+
toOperationNode(): AliasNode;
|
|
113
|
+
}
|
|
114
|
+
export interface AggregateFunctionBuilderProps {
|
|
115
|
+
aggregateFunctionNode: AggregateFunctionNode;
|
|
116
|
+
}
|
|
117
|
+
export declare type OverBuilderCallback<DB, TB extends keyof DB> = (builder: OverBuilder<DB, TB>) => OverBuilder<DB, TB>;
|