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,22 @@
|
|
|
1
|
+
import { ColumnNode } from './column-node.js';
|
|
2
|
+
import { OperationNode } from './operation-node.js';
|
|
3
|
+
import { OverNode } from './over-node.js';
|
|
4
|
+
import { ReferenceNode } from './reference-node.js';
|
|
5
|
+
declare type AggregateFunction = 'avg' | 'count' | 'max' | 'min' | 'sum';
|
|
6
|
+
export interface AggregateFunctionNode extends OperationNode {
|
|
7
|
+
readonly kind: 'AggregateFunctionNode';
|
|
8
|
+
readonly func: AggregateFunction;
|
|
9
|
+
readonly column: ColumnNode | ReferenceNode;
|
|
10
|
+
readonly distinct?: boolean;
|
|
11
|
+
readonly over?: OverNode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export declare const AggregateFunctionNode: Readonly<{
|
|
17
|
+
is(node: OperationNode): node is AggregateFunctionNode;
|
|
18
|
+
create(aggregateFunction: AggregateFunction, column: ColumnNode | ReferenceNode): AggregateFunctionNode;
|
|
19
|
+
cloneWithDistinct(aggregateFunctionNode: AggregateFunctionNode): AggregateFunctionNode;
|
|
20
|
+
cloneWithOver(aggregateFunctionNode: AggregateFunctionNode, over?: OverNode): AggregateFunctionNode;
|
|
21
|
+
}>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="./aggregate-function-node.d.ts" />
|
|
2
|
+
import { freeze } from '../util/object-utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export const AggregateFunctionNode = freeze({
|
|
7
|
+
is(node) {
|
|
8
|
+
return node.kind === 'AggregateFunctionNode';
|
|
9
|
+
},
|
|
10
|
+
create(aggregateFunction, column) {
|
|
11
|
+
return freeze({
|
|
12
|
+
kind: 'AggregateFunctionNode',
|
|
13
|
+
func: aggregateFunction,
|
|
14
|
+
column,
|
|
15
|
+
});
|
|
16
|
+
},
|
|
17
|
+
cloneWithDistinct(aggregateFunctionNode) {
|
|
18
|
+
return freeze({
|
|
19
|
+
...aggregateFunctionNode,
|
|
20
|
+
distinct: true,
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
cloneWithOver(aggregateFunctionNode, over) {
|
|
24
|
+
return freeze({
|
|
25
|
+
...aggregateFunctionNode,
|
|
26
|
+
over,
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AggregateFunctionNode } from './aggregate-function-node.js';
|
|
1
2
|
import { ColumnNode } from './column-node.js';
|
|
2
3
|
import { IdentifierNode } from './identifier-node.js';
|
|
3
4
|
import { OperationNode } from './operation-node.js';
|
|
@@ -5,7 +6,7 @@ import { RawNode } from './raw-node.js';
|
|
|
5
6
|
import { ReferenceNode } from './reference-node.js';
|
|
6
7
|
import { SelectQueryNode } from './select-query-node.js';
|
|
7
8
|
import { TableNode } from './table-node.js';
|
|
8
|
-
export declare type AliasNodeChild = ColumnNode | ReferenceNode | TableNode | SelectQueryNode | RawNode;
|
|
9
|
+
export declare type AliasNodeChild = ColumnNode | ReferenceNode | TableNode | SelectQueryNode | RawNode | AggregateFunctionNode;
|
|
9
10
|
export interface AliasNode extends OperationNode {
|
|
10
11
|
readonly kind: 'AliasNode';
|
|
11
12
|
readonly node: AliasNodeChild;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { OperationNode } from './operation-node.js';
|
|
2
|
+
export interface DefaultInsertValueNode extends OperationNode {
|
|
3
|
+
readonly kind: 'DefaultInsertValueNode';
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const DefaultInsertValueNode: Readonly<{
|
|
9
|
+
is(node: OperationNode): node is DefaultInsertValueNode;
|
|
10
|
+
create(): DefaultInsertValueNode;
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="./default-insert-value-node.d.ts" />
|
|
2
|
+
import { freeze } from '../util/object-utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export const DefaultInsertValueNode = freeze({
|
|
7
|
+
is(node) {
|
|
8
|
+
return node.kind === 'DefaultInsertValueNode';
|
|
9
|
+
},
|
|
10
|
+
create() {
|
|
11
|
+
return freeze({
|
|
12
|
+
kind: 'DefaultInsertValueNode',
|
|
13
|
+
});
|
|
14
|
+
},
|
|
15
|
+
});
|
|
@@ -10,5 +10,5 @@ export interface GroupByNode extends OperationNode {
|
|
|
10
10
|
export declare const GroupByNode: Readonly<{
|
|
11
11
|
is(node: OperationNode): node is GroupByNode;
|
|
12
12
|
create(items: ReadonlyArray<GroupByItemNode>): GroupByNode;
|
|
13
|
-
cloneWithItems(
|
|
13
|
+
cloneWithItems(groupBy: GroupByNode, items: ReadonlyArray<GroupByItemNode>): GroupByNode;
|
|
14
14
|
}>;
|
|
@@ -13,10 +13,10 @@ export const GroupByNode = freeze({
|
|
|
13
13
|
items: freeze(items),
|
|
14
14
|
});
|
|
15
15
|
},
|
|
16
|
-
cloneWithItems(
|
|
16
|
+
cloneWithItems(groupBy, items) {
|
|
17
17
|
return freeze({
|
|
18
|
-
...
|
|
19
|
-
items: freeze([...
|
|
18
|
+
...groupBy,
|
|
19
|
+
items: freeze([...groupBy.items, ...items]),
|
|
20
20
|
});
|
|
21
21
|
},
|
|
22
22
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AggregateFunctionNode } from './aggregate-function-node.js';
|
|
1
2
|
import { ColumnNode } from './column-node.js';
|
|
2
3
|
import { ExplainNode } from './explain-node.js';
|
|
3
4
|
import { OnConflictNode } from './on-conflict-node.js';
|
|
@@ -14,7 +15,7 @@ export interface InsertQueryNode extends OperationNode {
|
|
|
14
15
|
readonly kind: 'InsertQueryNode';
|
|
15
16
|
readonly into: TableNode;
|
|
16
17
|
readonly columns?: ReadonlyArray<ColumnNode>;
|
|
17
|
-
readonly values?: ValuesNode | SelectQueryNode | RawNode;
|
|
18
|
+
readonly values?: ValuesNode | SelectQueryNode | RawNode | AggregateFunctionNode;
|
|
18
19
|
readonly returning?: ReturningNode;
|
|
19
20
|
readonly onConflict?: OnConflictNode;
|
|
20
21
|
readonly onDuplicateKey?: OnDuplicateKeyNode;
|
|
@@ -58,7 +58,6 @@ import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
|
|
|
58
58
|
import { ColumnDefinitionNode } from './column-definition-node.js';
|
|
59
59
|
import { ModifyColumnNode } from './modify-column-node.js';
|
|
60
60
|
import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
|
|
61
|
-
import { UnionNode } from './union-node.js';
|
|
62
61
|
import { CreateViewNode } from './create-view-node.js';
|
|
63
62
|
import { DropViewNode } from './drop-view-node.js';
|
|
64
63
|
import { GeneratedNode } from './generated-node.js';
|
|
@@ -70,6 +69,12 @@ import { CreateTypeNode } from './create-type-node.js';
|
|
|
70
69
|
import { DropTypeNode } from './drop-type-node.js';
|
|
71
70
|
import { ExplainNode } from './explain-node.js';
|
|
72
71
|
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
72
|
+
import { DefaultInsertValueNode } from './default-insert-value-node.js';
|
|
73
|
+
import { AggregateFunctionNode } from './aggregate-function-node.js';
|
|
74
|
+
import { OverNode } from './over-node.js';
|
|
75
|
+
import { PartitionByNode } from './partition-by-node.js';
|
|
76
|
+
import { PartitionByItemNode } from './partition-by-item-node.js';
|
|
77
|
+
import { SetOperationNode } from './set-operation-node.js';
|
|
73
78
|
/**
|
|
74
79
|
* Transforms an operation node tree into another one.
|
|
75
80
|
*
|
|
@@ -144,7 +149,7 @@ export declare class OperationNodeTransformer {
|
|
|
144
149
|
protected transformPrimaryKeyConstraint(node: PrimaryKeyConstraintNode): PrimaryKeyConstraintNode;
|
|
145
150
|
protected transformUniqueConstraint(node: UniqueConstraintNode): UniqueConstraintNode;
|
|
146
151
|
protected transformForeignKeyConstraint(node: ForeignKeyConstraintNode): ForeignKeyConstraintNode;
|
|
147
|
-
protected
|
|
152
|
+
protected transformSetOperation(node: SetOperationNode): SetOperationNode;
|
|
148
153
|
protected transformReferences(node: ReferencesNode): ReferencesNode;
|
|
149
154
|
protected transformCheckConstraint(node: CheckConstraintNode): CheckConstraintNode;
|
|
150
155
|
protected transformWith(node: WithNode): WithNode;
|
|
@@ -170,10 +175,15 @@ export declare class OperationNodeTransformer {
|
|
|
170
175
|
protected transformDropType(node: DropTypeNode): DropTypeNode;
|
|
171
176
|
protected transformExplain(node: ExplainNode): ExplainNode;
|
|
172
177
|
protected transformSchemableIdentifier(node: SchemableIdentifierNode): SchemableIdentifierNode;
|
|
178
|
+
protected transformAggregateFunction(node: AggregateFunctionNode): AggregateFunctionNode;
|
|
179
|
+
protected transformOver(node: OverNode): OverNode;
|
|
180
|
+
protected transformPartitionBy(node: PartitionByNode): PartitionByNode;
|
|
181
|
+
protected transformPartitionByItem(node: PartitionByItemNode): PartitionByItemNode;
|
|
173
182
|
protected transformDataType(node: DataTypeNode): DataTypeNode;
|
|
174
183
|
protected transformSelectAll(node: SelectAllNode): SelectAllNode;
|
|
175
184
|
protected transformIdentifier(node: IdentifierNode): IdentifierNode;
|
|
176
185
|
protected transformValue(node: ValueNode): ValueNode;
|
|
177
186
|
protected transformPrimitiveValueList(node: PrimitiveValueListNode): PrimitiveValueListNode;
|
|
178
187
|
protected transformOperator(node: OperatorNode): OperatorNode;
|
|
188
|
+
protected transformDefaultInsertValue(node: DefaultInsertValueNode): DefaultInsertValueNode;
|
|
179
189
|
}
|
|
@@ -93,7 +93,6 @@ export class OperationNodeTransformer {
|
|
|
93
93
|
AddConstraintNode: this.transformAddConstraint.bind(this),
|
|
94
94
|
DropConstraintNode: this.transformDropConstraint.bind(this),
|
|
95
95
|
ForeignKeyConstraintNode: this.transformForeignKeyConstraint.bind(this),
|
|
96
|
-
UnionNode: this.transformUnion.bind(this),
|
|
97
96
|
CreateViewNode: this.transformCreateView.bind(this),
|
|
98
97
|
DropViewNode: this.transformDropView.bind(this),
|
|
99
98
|
GeneratedNode: this.transformGenerated.bind(this),
|
|
@@ -104,6 +103,12 @@ export class OperationNodeTransformer {
|
|
|
104
103
|
CreateTypeNode: this.transformCreateType.bind(this),
|
|
105
104
|
DropTypeNode: this.transformDropType.bind(this),
|
|
106
105
|
ExplainNode: this.transformExplain.bind(this),
|
|
106
|
+
DefaultInsertValueNode: this.transformDefaultInsertValue.bind(this),
|
|
107
|
+
AggregateFunctionNode: this.transformAggregateFunction.bind(this),
|
|
108
|
+
OverNode: this.transformOver.bind(this),
|
|
109
|
+
PartitionByNode: this.transformPartitionBy.bind(this),
|
|
110
|
+
PartitionByItemNode: this.transformPartitionByItem.bind(this),
|
|
111
|
+
SetOperationNode: this.transformSetOperation.bind(this),
|
|
107
112
|
});
|
|
108
113
|
transformNode(node) {
|
|
109
114
|
if (!node) {
|
|
@@ -139,8 +144,8 @@ export class OperationNodeTransformer {
|
|
|
139
144
|
offset: this.transformNode(node.offset),
|
|
140
145
|
with: this.transformNode(node.with),
|
|
141
146
|
having: this.transformNode(node.having),
|
|
142
|
-
union: this.transformNodeList(node.union),
|
|
143
147
|
explain: this.transformNode(node.explain),
|
|
148
|
+
setOperations: this.transformNodeList(node.setOperations),
|
|
144
149
|
});
|
|
145
150
|
}
|
|
146
151
|
transformSelection(node) {
|
|
@@ -443,10 +448,11 @@ export class OperationNodeTransformer {
|
|
|
443
448
|
onUpdate: node.onUpdate,
|
|
444
449
|
});
|
|
445
450
|
}
|
|
446
|
-
|
|
451
|
+
transformSetOperation(node) {
|
|
447
452
|
return requireAllProps({
|
|
448
|
-
kind: '
|
|
449
|
-
|
|
453
|
+
kind: 'SetOperationNode',
|
|
454
|
+
operator: node.operator,
|
|
455
|
+
expression: this.transformNode(node.expression),
|
|
450
456
|
all: node.all,
|
|
451
457
|
});
|
|
452
458
|
}
|
|
@@ -646,6 +652,34 @@ export class OperationNodeTransformer {
|
|
|
646
652
|
identifier: this.transformNode(node.identifier),
|
|
647
653
|
});
|
|
648
654
|
}
|
|
655
|
+
transformAggregateFunction(node) {
|
|
656
|
+
return requireAllProps({
|
|
657
|
+
kind: 'AggregateFunctionNode',
|
|
658
|
+
column: this.transformNode(node.column),
|
|
659
|
+
distinct: node.distinct,
|
|
660
|
+
func: node.func,
|
|
661
|
+
over: this.transformNode(node.over),
|
|
662
|
+
});
|
|
663
|
+
}
|
|
664
|
+
transformOver(node) {
|
|
665
|
+
return requireAllProps({
|
|
666
|
+
kind: 'OverNode',
|
|
667
|
+
orderBy: this.transformNode(node.orderBy),
|
|
668
|
+
partitionBy: this.transformNode(node.partitionBy),
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
transformPartitionBy(node) {
|
|
672
|
+
return requireAllProps({
|
|
673
|
+
kind: 'PartitionByNode',
|
|
674
|
+
items: this.transformNodeList(node.items),
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
transformPartitionByItem(node) {
|
|
678
|
+
return requireAllProps({
|
|
679
|
+
kind: 'PartitionByItemNode',
|
|
680
|
+
partitionBy: this.transformNode(node.partitionBy),
|
|
681
|
+
});
|
|
682
|
+
}
|
|
649
683
|
transformDataType(node) {
|
|
650
684
|
// An Object.freezed leaf node. No need to clone.
|
|
651
685
|
return node;
|
|
@@ -670,4 +704,8 @@ export class OperationNodeTransformer {
|
|
|
670
704
|
// An Object.freezed leaf node. No need to clone.
|
|
671
705
|
return node;
|
|
672
706
|
}
|
|
707
|
+
transformDefaultInsertValue(node) {
|
|
708
|
+
// An Object.freezed leaf node. No need to clone.
|
|
709
|
+
return node;
|
|
710
|
+
}
|
|
673
711
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AggregateFunctionNode } from './aggregate-function-node.js';
|
|
1
2
|
import { AliasNode } from './alias-node.js';
|
|
2
3
|
import { AndNode } from './and-node.js';
|
|
3
4
|
import { ColumnNode } from './column-node.js';
|
|
@@ -11,7 +12,7 @@ import { SelectQueryNode } from './select-query-node.js';
|
|
|
11
12
|
import { TableNode } from './table-node.js';
|
|
12
13
|
import { ValueListNode } from './value-list-node.js';
|
|
13
14
|
import { ValueNode } from './value-node.js';
|
|
14
|
-
export declare type ReferenceExpressionNode = ColumnNode | ReferenceNode | SelectQueryNode | RawNode;
|
|
15
|
+
export declare type ReferenceExpressionNode = ColumnNode | ReferenceNode | SelectQueryNode | RawNode | AggregateFunctionNode;
|
|
15
16
|
export declare type ValueExpressionNode = ValueNode | ValueListNode | PrimitiveValueListNode | ReferenceExpressionNode;
|
|
16
17
|
export declare type TableExpressionNode = TableNode | AliasNode;
|
|
17
18
|
export declare type FilterExpressionNode = FilterNode | AndNode | OrNode | ParensNode | RawNode;
|
|
@@ -58,7 +58,6 @@ import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
|
|
|
58
58
|
import { ColumnDefinitionNode } from './column-definition-node.js';
|
|
59
59
|
import { ModifyColumnNode } from './modify-column-node.js';
|
|
60
60
|
import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
|
|
61
|
-
import { UnionNode } from './union-node.js';
|
|
62
61
|
import { CreateViewNode } from './create-view-node.js';
|
|
63
62
|
import { DropViewNode } from './drop-view-node.js';
|
|
64
63
|
import { GeneratedNode } from './generated-node.js';
|
|
@@ -70,6 +69,12 @@ import { CreateTypeNode } from './create-type-node.js';
|
|
|
70
69
|
import { DropTypeNode } from './drop-type-node.js';
|
|
71
70
|
import { ExplainNode } from './explain-node.js';
|
|
72
71
|
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
72
|
+
import { DefaultInsertValueNode } from './default-insert-value-node.js';
|
|
73
|
+
import { AggregateFunctionNode } from './aggregate-function-node.js';
|
|
74
|
+
import { OverNode } from './over-node.js';
|
|
75
|
+
import { PartitionByNode } from './partition-by-node.js';
|
|
76
|
+
import { PartitionByItemNode } from './partition-by-item-node.js';
|
|
77
|
+
import { SetOperationNode } from './set-operation-node.js';
|
|
73
78
|
export declare abstract class OperationNodeVisitor {
|
|
74
79
|
#private;
|
|
75
80
|
protected readonly nodeStack: OperationNode[];
|
|
@@ -128,7 +133,6 @@ export declare abstract class OperationNodeVisitor {
|
|
|
128
133
|
protected abstract visitAddConstraint(node: AddConstraintNode): void;
|
|
129
134
|
protected abstract visitDropConstraint(node: DropConstraintNode): void;
|
|
130
135
|
protected abstract visitForeignKeyConstraint(node: ForeignKeyConstraintNode): void;
|
|
131
|
-
protected abstract visitUnion(node: UnionNode): void;
|
|
132
136
|
protected abstract visitDataType(node: DataTypeNode): void;
|
|
133
137
|
protected abstract visitSelectAll(node: SelectAllNode): void;
|
|
134
138
|
protected abstract visitIdentifier(node: IdentifierNode): void;
|
|
@@ -146,4 +150,10 @@ export declare abstract class OperationNodeVisitor {
|
|
|
146
150
|
protected abstract visitCreateType(node: CreateTypeNode): void;
|
|
147
151
|
protected abstract visitDropType(node: DropTypeNode): void;
|
|
148
152
|
protected abstract visitExplain(node: ExplainNode): void;
|
|
153
|
+
protected abstract visitDefaultInsertValue(node: DefaultInsertValueNode): void;
|
|
154
|
+
protected abstract visitAggregateFunction(node: AggregateFunctionNode): void;
|
|
155
|
+
protected abstract visitOver(node: OverNode): void;
|
|
156
|
+
protected abstract visitPartitionBy(node: PartitionByNode): void;
|
|
157
|
+
protected abstract visitPartitionByItem(node: PartitionByItemNode): void;
|
|
158
|
+
protected abstract visitSetOperation(node: SetOperationNode): void;
|
|
149
159
|
}
|
|
@@ -66,7 +66,6 @@ export class OperationNodeVisitor {
|
|
|
66
66
|
AddConstraintNode: this.visitAddConstraint.bind(this),
|
|
67
67
|
DropConstraintNode: this.visitDropConstraint.bind(this),
|
|
68
68
|
ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),
|
|
69
|
-
UnionNode: this.visitUnion.bind(this),
|
|
70
69
|
CreateViewNode: this.visitCreateView.bind(this),
|
|
71
70
|
DropViewNode: this.visitDropView.bind(this),
|
|
72
71
|
GeneratedNode: this.visitGenerated.bind(this),
|
|
@@ -77,6 +76,12 @@ export class OperationNodeVisitor {
|
|
|
77
76
|
CreateTypeNode: this.visitCreateType.bind(this),
|
|
78
77
|
DropTypeNode: this.visitDropType.bind(this),
|
|
79
78
|
ExplainNode: this.visitExplain.bind(this),
|
|
79
|
+
DefaultInsertValueNode: this.visitDefaultInsertValue.bind(this),
|
|
80
|
+
AggregateFunctionNode: this.visitAggregateFunction.bind(this),
|
|
81
|
+
OverNode: this.visitOver.bind(this),
|
|
82
|
+
PartitionByNode: this.visitPartitionBy.bind(this),
|
|
83
|
+
PartitionByItemNode: this.visitPartitionByItem.bind(this),
|
|
84
|
+
SetOperationNode: this.visitSetOperation.bind(this),
|
|
80
85
|
});
|
|
81
86
|
visitNode = (node) => {
|
|
82
87
|
this.nodeStack.push(node);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | '
|
|
1
|
+
export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode';
|
|
2
2
|
export interface OperationNode {
|
|
3
3
|
readonly kind: OperationNodeKind;
|
|
4
4
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { OperationNode } from './operation-node.js';
|
|
2
|
+
import { OrderByItemNode } from './order-by-item-node.js';
|
|
3
|
+
import { OrderByNode } from './order-by-node.js';
|
|
4
|
+
import { PartitionByItemNode } from './partition-by-item-node.js';
|
|
5
|
+
import { PartitionByNode } from './partition-by-node.js';
|
|
6
|
+
export interface OverNode extends OperationNode {
|
|
7
|
+
readonly kind: 'OverNode';
|
|
8
|
+
readonly orderBy?: OrderByNode;
|
|
9
|
+
readonly partitionBy?: PartitionByNode;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export declare const OverNode: Readonly<{
|
|
15
|
+
is(node: OperationNode): node is OverNode;
|
|
16
|
+
create(): OverNode;
|
|
17
|
+
cloneWithOrderByItem(overNode: OverNode, item: OrderByItemNode): OverNode;
|
|
18
|
+
cloneWithPartitionByItems(overNode: OverNode, items: ReadonlyArray<PartitionByItemNode>): OverNode;
|
|
19
|
+
}>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/// <reference types="./over-node.d.ts" />
|
|
2
|
+
import { freeze } from '../util/object-utils.js';
|
|
3
|
+
import { OrderByNode } from './order-by-node.js';
|
|
4
|
+
import { PartitionByNode } from './partition-by-node.js';
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export const OverNode = freeze({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'OverNode';
|
|
11
|
+
},
|
|
12
|
+
create() {
|
|
13
|
+
return freeze({
|
|
14
|
+
kind: 'OverNode',
|
|
15
|
+
});
|
|
16
|
+
},
|
|
17
|
+
cloneWithOrderByItem(overNode, item) {
|
|
18
|
+
return freeze({
|
|
19
|
+
...overNode,
|
|
20
|
+
orderBy: overNode.orderBy
|
|
21
|
+
? OrderByNode.cloneWithItem(overNode.orderBy, item)
|
|
22
|
+
: OrderByNode.create(item),
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
cloneWithPartitionByItems(overNode, items) {
|
|
26
|
+
return freeze({
|
|
27
|
+
...overNode,
|
|
28
|
+
partitionBy: overNode.partitionBy
|
|
29
|
+
? PartitionByNode.cloneWithItems(overNode.partitionBy, items)
|
|
30
|
+
: PartitionByNode.create(items),
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
});
|
|
@@ -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,16 @@
|
|
|
1
|
+
/// <reference types="./partition-by-item-node.d.ts" />
|
|
2
|
+
import { freeze } from '../util/object-utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export const PartitionByItemNode = freeze({
|
|
7
|
+
is(node) {
|
|
8
|
+
return node.kind === 'PartitionByItemNode';
|
|
9
|
+
},
|
|
10
|
+
create(partitionBy) {
|
|
11
|
+
return freeze({
|
|
12
|
+
kind: 'PartitionByItemNode',
|
|
13
|
+
partitionBy,
|
|
14
|
+
});
|
|
15
|
+
},
|
|
16
|
+
});
|
|
@@ -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,22 @@
|
|
|
1
|
+
/// <reference types="./partition-by-node.d.ts" />
|
|
2
|
+
import { freeze } from '../util/object-utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export const PartitionByNode = freeze({
|
|
7
|
+
is(node) {
|
|
8
|
+
return node.kind === 'PartitionByNode';
|
|
9
|
+
},
|
|
10
|
+
create(items) {
|
|
11
|
+
return freeze({
|
|
12
|
+
kind: 'PartitionByNode',
|
|
13
|
+
items: freeze(items),
|
|
14
|
+
});
|
|
15
|
+
},
|
|
16
|
+
cloneWithItems(partitionBy, items) {
|
|
17
|
+
return freeze({
|
|
18
|
+
...partitionBy,
|
|
19
|
+
items: freeze([...partitionBy.items, ...items]),
|
|
20
|
+
});
|
|
21
|
+
},
|
|
22
|
+
});
|
|
@@ -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
|
}>;
|
|
@@ -94,12 +94,12 @@ export const SelectQueryNode = freeze({
|
|
|
94
94
|
: HavingNode.create(filter),
|
|
95
95
|
});
|
|
96
96
|
},
|
|
97
|
-
|
|
97
|
+
cloneWithSetOperation(selectNode, setOperation) {
|
|
98
98
|
return freeze({
|
|
99
99
|
...selectNode,
|
|
100
|
-
|
|
101
|
-
? freeze([...selectNode.
|
|
102
|
-
: freeze([
|
|
100
|
+
setOperations: selectNode.setOperations
|
|
101
|
+
? freeze([...selectNode.setOperations, setOperation])
|
|
102
|
+
: freeze([setOperation]),
|
|
103
103
|
});
|
|
104
104
|
},
|
|
105
105
|
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,18 @@
|
|
|
1
|
+
/// <reference types="./set-operation-node.d.ts" />
|
|
2
|
+
import { freeze } from '../util/object-utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export const SetOperationNode = freeze({
|
|
7
|
+
is(node) {
|
|
8
|
+
return node.kind === 'SetOperationNode';
|
|
9
|
+
},
|
|
10
|
+
create(operator, expression, all) {
|
|
11
|
+
return freeze({
|
|
12
|
+
kind: 'SetOperationNode',
|
|
13
|
+
operator,
|
|
14
|
+
expression,
|
|
15
|
+
all,
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
});
|
|
@@ -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[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="./group-by-parser.d.ts" />
|
|
2
2
|
import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
|
|
3
3
|
import { parseReferenceExpressionOrList, } from './reference-parser.js';
|
|
4
|
-
export function parseGroupBy(
|
|
5
|
-
return parseReferenceExpressionOrList(
|
|
4
|
+
export function parseGroupBy(groupBy) {
|
|
5
|
+
return parseReferenceExpressionOrList(groupBy).map(GroupByItemNode.create);
|
|
6
6
|
}
|