kysely 0.21.6 → 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 +2 -2
- package/dist/cjs/index.d.ts +9 -4
- package/dist/cjs/index.js +7 -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/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 +10 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +38 -5
- package/dist/cjs/operation-node/operation-node-utils.d.ts +2 -1
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +10 -2
- package/dist/cjs/operation-node/operation-node-visitor.js +5 -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/{union-node.js → partition-by-item-node.js} +6 -7
- 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 +2 -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/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 +10 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +41 -14
- package/dist/cjs/raw-builder/sql.d.ts +13 -5
- package/dist/cjs/raw-builder/sql.js +6 -0
- package/dist/cjs/util/type-utils.d.ts +4 -0
- package/dist/esm/index.d.ts +9 -4
- package/dist/esm/index.js +7 -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/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 +10 -2
- package/dist/esm/operation-node/operation-node-transformer.js +38 -5
- package/dist/esm/operation-node/operation-node-utils.d.ts +2 -1
- package/dist/esm/operation-node/operation-node-visitor.d.ts +10 -2
- package/dist/esm/operation-node/operation-node-visitor.js +5 -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 +2 -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/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 +10 -2
- package/dist/esm/query-compiler/default-query-compiler.js +41 -14
- package/dist/esm/raw-builder/sql.d.ts +13 -5
- package/dist/esm/raw-builder/sql.js +6 -0
- package/dist/esm/util/type-utils.d.ts +4 -0
- 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
|
@@ -4,10 +4,9 @@ exports.DefaultQueryCompiler = void 0;
|
|
|
4
4
|
const insert_query_node_js_1 = require("../operation-node/insert-query-node.js");
|
|
5
5
|
const operation_node_visitor_js_1 = require("../operation-node/operation-node-visitor.js");
|
|
6
6
|
const query_node_js_1 = require("../operation-node/query-node.js");
|
|
7
|
-
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
8
7
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
9
|
-
const union_node_js_1 = require("../operation-node/union-node.js");
|
|
10
8
|
const create_view_node_js_1 = require("../operation-node/create-view-node.js");
|
|
9
|
+
const set_operation_node_js_1 = require("../operation-node/set-operation-node.js");
|
|
11
10
|
class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisitor {
|
|
12
11
|
#sql = '';
|
|
13
12
|
#parameters = [];
|
|
@@ -31,7 +30,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
31
30
|
const wrapInParens = this.parentNode !== undefined &&
|
|
32
31
|
!insert_query_node_js_1.InsertQueryNode.is(this.parentNode) &&
|
|
33
32
|
!create_view_node_js_1.CreateViewNode.is(this.parentNode) &&
|
|
34
|
-
!
|
|
33
|
+
!set_operation_node_js_1.SetOperationNode.is(this.parentNode);
|
|
35
34
|
if (this.parentNode === undefined && node.explain) {
|
|
36
35
|
this.visitNode(node.explain);
|
|
37
36
|
this.append(' ');
|
|
@@ -73,9 +72,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
73
72
|
this.append(' ');
|
|
74
73
|
this.visitNode(node.having);
|
|
75
74
|
}
|
|
76
|
-
if (node.
|
|
75
|
+
if (node.setOperations) {
|
|
77
76
|
this.append(' ');
|
|
78
|
-
this.compileList(node.
|
|
77
|
+
this.compileList(node.setOperations, ' ');
|
|
79
78
|
}
|
|
80
79
|
if (node.orderBy) {
|
|
81
80
|
this.append(' ');
|
|
@@ -544,13 +543,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
544
543
|
}
|
|
545
544
|
if (node.expression) {
|
|
546
545
|
this.append(' (');
|
|
547
|
-
if (raw_node_js_1.RawNode.is(node.expression)) {
|
|
548
|
-
this.append('(');
|
|
549
|
-
}
|
|
550
546
|
this.visitNode(node.expression);
|
|
551
|
-
if (raw_node_js_1.RawNode.is(node.expression)) {
|
|
552
|
-
this.append(')');
|
|
553
|
-
}
|
|
554
547
|
this.append(')');
|
|
555
548
|
}
|
|
556
549
|
}
|
|
@@ -752,12 +745,13 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
752
745
|
this.append(' restrict');
|
|
753
746
|
}
|
|
754
747
|
}
|
|
755
|
-
|
|
756
|
-
this.append(
|
|
748
|
+
visitSetOperation(node) {
|
|
749
|
+
this.append(node.operator);
|
|
750
|
+
this.append(' ');
|
|
757
751
|
if (node.all) {
|
|
758
752
|
this.append('all ');
|
|
759
753
|
}
|
|
760
|
-
this.visitNode(node.
|
|
754
|
+
this.visitNode(node.expression);
|
|
761
755
|
}
|
|
762
756
|
visitCreateView(node) {
|
|
763
757
|
this.append('create ');
|
|
@@ -870,6 +864,39 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
870
864
|
visitDefaultInsertValue(_) {
|
|
871
865
|
this.append('default');
|
|
872
866
|
}
|
|
867
|
+
visitAggregateFunction(node) {
|
|
868
|
+
this.append(node.func);
|
|
869
|
+
this.append('(');
|
|
870
|
+
if (node.distinct) {
|
|
871
|
+
this.append('distinct ');
|
|
872
|
+
}
|
|
873
|
+
this.visitNode(node.column);
|
|
874
|
+
this.append(')');
|
|
875
|
+
if (node.over) {
|
|
876
|
+
this.append(' ');
|
|
877
|
+
this.visitNode(node.over);
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
visitOver(node) {
|
|
881
|
+
this.append('over(');
|
|
882
|
+
if (node.partitionBy) {
|
|
883
|
+
this.visitNode(node.partitionBy);
|
|
884
|
+
if (node.orderBy) {
|
|
885
|
+
this.append(' ');
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
if (node.orderBy) {
|
|
889
|
+
this.visitNode(node.orderBy);
|
|
890
|
+
}
|
|
891
|
+
this.append(')');
|
|
892
|
+
}
|
|
893
|
+
visitPartitionBy(node) {
|
|
894
|
+
this.append('partition by ');
|
|
895
|
+
this.compileList(node.items);
|
|
896
|
+
}
|
|
897
|
+
visitPartitionByItem(node) {
|
|
898
|
+
this.visitNode(node.partitionBy);
|
|
899
|
+
}
|
|
873
900
|
append(str) {
|
|
874
901
|
this.#sql += str;
|
|
875
902
|
}
|
|
@@ -7,13 +7,14 @@ export interface Sql {
|
|
|
7
7
|
* import { sql } from 'kysely'
|
|
8
8
|
*
|
|
9
9
|
* const id = 123
|
|
10
|
-
*
|
|
11
10
|
* const snippet = sql<Person[]>`select * from person where id = ${id}`
|
|
12
11
|
* ```
|
|
13
12
|
*
|
|
14
13
|
* Substitutions (the things inside `${}`) are automatically passed to the database
|
|
15
|
-
* as parameters and are
|
|
16
|
-
* about SQL injection vulnerabilities.
|
|
14
|
+
* as parameters and are never interpolated to the SQL string. There's no need to worry
|
|
15
|
+
* about SQL injection vulnerabilities. Substitutions can be values, other `sql`
|
|
16
|
+
* expressions, queries and almost anything else Kysely can produce and they get
|
|
17
|
+
* handled correctly. See the examples below.
|
|
17
18
|
*
|
|
18
19
|
* If you need your substitutions to be interpreted as identifiers, value literals or
|
|
19
20
|
* lists of things, see the {@link Sql.ref}, {@link Sql.table}, {@link Sql.id},
|
|
@@ -29,8 +30,7 @@ export interface Sql {
|
|
|
29
30
|
* .selectFrom('person')
|
|
30
31
|
* .select(
|
|
31
32
|
* // If you use `sql` in a select statement, remember to call the `as`
|
|
32
|
-
* // method to give it an alias.
|
|
33
|
-
* // the column to the result type.
|
|
33
|
+
* // method to give it an alias.
|
|
34
34
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name')
|
|
35
35
|
* )
|
|
36
36
|
* .where(sql`birthdate between ${date1} and ${date2}`)
|
|
@@ -97,6 +97,14 @@ export interface Sql {
|
|
|
97
97
|
* type-safety though... But it's possible.
|
|
98
98
|
*/
|
|
99
99
|
<T = unknown>(sqlFragments: TemplateStringsArray, ...parameters: unknown[]): RawBuilder<T>;
|
|
100
|
+
/**
|
|
101
|
+
* `sql.value(value)` is a shortcut for:
|
|
102
|
+
*
|
|
103
|
+
* ```ts
|
|
104
|
+
* sql`${value}`
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
value(value: unknown): RawBuilder<unknown>;
|
|
100
108
|
/**
|
|
101
109
|
* This can be used to add runtime column references to SQL snippets.
|
|
102
110
|
*
|
|
@@ -21,6 +21,12 @@ exports.sql = Object.assign((sqlFragments, ...parameters) => {
|
|
|
21
21
|
rawNode: raw_node_js_1.RawNode.createWithChild((0, reference_parser_js_1.parseStringReference)(columnReference)),
|
|
22
22
|
});
|
|
23
23
|
},
|
|
24
|
+
value(value) {
|
|
25
|
+
return new raw_builder_js_1.RawBuilder({
|
|
26
|
+
queryId: (0, query_id_js_1.createQueryId)(),
|
|
27
|
+
rawNode: raw_node_js_1.RawNode.createWithChild((0, value_parser_js_1.parseValueExpression)(value)),
|
|
28
|
+
});
|
|
29
|
+
},
|
|
24
30
|
table(tableReference) {
|
|
25
31
|
return new raw_builder_js_1.RawBuilder({
|
|
26
32
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
@@ -4,6 +4,7 @@ import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
|
4
4
|
import { InsertResult } from '../query-builder/insert-result.js';
|
|
5
5
|
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
6
6
|
import { UpdateResult } from '../query-builder/update-result.js';
|
|
7
|
+
import { AggregateFunctionBuilder, AliasedAggregateFunctionBuilder } from '../query-builder/aggregate-function-builder.js';
|
|
7
8
|
/**
|
|
8
9
|
* Given an object type, extracts the union of all value types.
|
|
9
10
|
*/
|
|
@@ -102,10 +103,13 @@ export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
|
|
|
102
103
|
export declare type AnyAliasedQueryBuilder = AliasedQueryBuilder<any, any, any, any>;
|
|
103
104
|
export declare type AnyRawBuilder = RawBuilder<any>;
|
|
104
105
|
export declare type AnyAliasedRawBuilder = AliasedRawBuilder<any, any>;
|
|
106
|
+
export declare type AnyAliasedAggregateFunctionBuilder = AliasedAggregateFunctionBuilder<any, any, any, any>;
|
|
105
107
|
export declare type SelectQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnySelectQueryBuilder;
|
|
106
108
|
export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
|
|
107
109
|
export declare type RawBuilderFactory<DB, TB extends keyof DB, O = any> = (qb: ExpressionBuilder<DB, TB>) => RawBuilder<O>;
|
|
108
110
|
export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
|
|
111
|
+
export declare type AggregateFunctionBuilderFactory<DB, TB extends keyof DB, O = unknown> = (qb: ExpressionBuilder<DB, TB>) => AggregateFunctionBuilder<DB, TB, O>;
|
|
112
|
+
export declare type AliasedAggregateFunctionBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedAggregateFunctionBuilder;
|
|
109
113
|
export declare type SingleResultType<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : O | undefined;
|
|
110
114
|
export declare type UnknownRow = Record<string, unknown>;
|
|
111
115
|
export declare type Nullable<T> = {
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -10,11 +10,12 @@ export * from './query-builder/delete-query-builder.js';
|
|
|
10
10
|
export * from './query-builder/no-result-error.js';
|
|
11
11
|
export * from './query-builder/join-builder.js';
|
|
12
12
|
export * from './query-builder/expression-builder.js';
|
|
13
|
-
export * from './query-builder/function-
|
|
13
|
+
export * from './query-builder/function-module.js';
|
|
14
14
|
export * from './query-builder/insert-result.js';
|
|
15
15
|
export * from './query-builder/delete-result.js';
|
|
16
16
|
export * from './query-builder/update-result.js';
|
|
17
17
|
export * from './query-builder/on-conflict-builder.js';
|
|
18
|
+
export * from './query-builder/aggregate-function-builder.js';
|
|
18
19
|
export * from './raw-builder/raw-builder.js';
|
|
19
20
|
export * from './raw-builder/sql.js';
|
|
20
21
|
export * from './query-executor/query-executor.js';
|
|
@@ -142,7 +143,6 @@ export * from './operation-node/select-query-node.js';
|
|
|
142
143
|
export * from './operation-node/select-query-node.js';
|
|
143
144
|
export * from './operation-node/selection-node.js';
|
|
144
145
|
export * from './operation-node/table-node.js';
|
|
145
|
-
export * from './operation-node/union-node.js';
|
|
146
146
|
export * from './operation-node/unique-constraint-node.js';
|
|
147
147
|
export * from './operation-node/update-query-node.js';
|
|
148
148
|
export * from './operation-node/value-list-node.js';
|
|
@@ -152,13 +152,18 @@ export * from './operation-node/where-node.js';
|
|
|
152
152
|
export * from './operation-node/with-node.js';
|
|
153
153
|
export * from './operation-node/explain-node.js';
|
|
154
154
|
export * from './operation-node/default-insert-value-node.js';
|
|
155
|
+
export * from './operation-node/aggregate-function-node.js';
|
|
156
|
+
export * from './operation-node/over-node.js';
|
|
157
|
+
export * from './operation-node/partition-by-node.js';
|
|
158
|
+
export * from './operation-node/partition-by-item-node.js';
|
|
159
|
+
export * from './operation-node/set-operation-node.js';
|
|
155
160
|
export * from './util/column-type.js';
|
|
156
161
|
export * from './util/compilable.js';
|
|
157
162
|
export * from './util/explainable.js';
|
|
158
163
|
export * from './util/log.js';
|
|
159
164
|
export { AnyColumn, UnknownRow, AnySelectQueryBuilder, } from './util/type-utils.js';
|
|
160
165
|
export { SelectExpression, SelectExpressionOrList, Selection, } from './parser/select-parser.js';
|
|
161
|
-
export { ReferenceExpression, ReferenceExpressionOrList, } from './parser/reference-parser.js';
|
|
166
|
+
export { ReferenceExpression, ReferenceExpressionOrList, StringReference, } from './parser/reference-parser.js';
|
|
162
167
|
export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
|
|
163
168
|
export { FilterValueExpression, FilterValueExpressionOrList, ExistsExpression, FilterOperator, } from './parser/filter-parser.js';
|
|
164
169
|
export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
|
|
@@ -166,4 +171,4 @@ export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-
|
|
|
166
171
|
export { InsertObject } from './parser/insert-values-parser.js';
|
|
167
172
|
export { MutationObject } from './parser/update-set-parser.js';
|
|
168
173
|
export { OrderByExpression, OrderByDirectionExpression, } from './parser/order-by-parser.js';
|
|
169
|
-
export {
|
|
174
|
+
export { SetOperationExpression } from './parser/set-operation-parser.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -11,11 +11,12 @@ export * from './query-builder/delete-query-builder.js';
|
|
|
11
11
|
export * from './query-builder/no-result-error.js';
|
|
12
12
|
export * from './query-builder/join-builder.js';
|
|
13
13
|
export * from './query-builder/expression-builder.js';
|
|
14
|
-
export * from './query-builder/function-
|
|
14
|
+
export * from './query-builder/function-module.js';
|
|
15
15
|
export * from './query-builder/insert-result.js';
|
|
16
16
|
export * from './query-builder/delete-result.js';
|
|
17
17
|
export * from './query-builder/update-result.js';
|
|
18
18
|
export * from './query-builder/on-conflict-builder.js';
|
|
19
|
+
export * from './query-builder/aggregate-function-builder.js';
|
|
19
20
|
export * from './raw-builder/raw-builder.js';
|
|
20
21
|
export * from './raw-builder/sql.js';
|
|
21
22
|
export * from './query-executor/query-executor.js';
|
|
@@ -143,7 +144,6 @@ export * from './operation-node/select-query-node.js';
|
|
|
143
144
|
export * from './operation-node/select-query-node.js';
|
|
144
145
|
export * from './operation-node/selection-node.js';
|
|
145
146
|
export * from './operation-node/table-node.js';
|
|
146
|
-
export * from './operation-node/union-node.js';
|
|
147
147
|
export * from './operation-node/unique-constraint-node.js';
|
|
148
148
|
export * from './operation-node/update-query-node.js';
|
|
149
149
|
export * from './operation-node/value-list-node.js';
|
|
@@ -153,6 +153,11 @@ export * from './operation-node/where-node.js';
|
|
|
153
153
|
export * from './operation-node/with-node.js';
|
|
154
154
|
export * from './operation-node/explain-node.js';
|
|
155
155
|
export * from './operation-node/default-insert-value-node.js';
|
|
156
|
+
export * from './operation-node/aggregate-function-node.js';
|
|
157
|
+
export * from './operation-node/over-node.js';
|
|
158
|
+
export * from './operation-node/partition-by-node.js';
|
|
159
|
+
export * from './operation-node/partition-by-item-node.js';
|
|
160
|
+
export * from './operation-node/set-operation-node.js';
|
|
156
161
|
export * from './util/column-type.js';
|
|
157
162
|
export * from './util/compilable.js';
|
|
158
163
|
export * from './util/explainable.js';
|
package/dist/esm/kysely.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { QueryCreator } from './query-creator.js';
|
|
|
6
6
|
import { KyselyPlugin } from './plugin/kysely-plugin.js';
|
|
7
7
|
import { DatabaseIntrospector } from './dialect/database-introspector.js';
|
|
8
8
|
import { Driver, IsolationLevel } from './driver/driver.js';
|
|
9
|
-
import {
|
|
9
|
+
import { FunctionModule } from './query-builder/function-module.js';
|
|
10
10
|
import { LogConfig } from './util/log.js';
|
|
11
11
|
import { QueryExecutorProvider } from './query-executor/query-executor-provider.js';
|
|
12
12
|
/**
|
|
@@ -72,7 +72,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
|
|
|
72
72
|
*/
|
|
73
73
|
get introspection(): DatabaseIntrospector;
|
|
74
74
|
/**
|
|
75
|
-
* Returns a {@link
|
|
75
|
+
* Returns a {@link FunctionModule} that can be used to write type safe function
|
|
76
76
|
* calls.
|
|
77
77
|
*
|
|
78
78
|
* ```ts
|
|
@@ -99,7 +99,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
|
|
|
99
99
|
* having count("pet"."id") > $1
|
|
100
100
|
* ```
|
|
101
101
|
*/
|
|
102
|
-
get fn():
|
|
102
|
+
get fn(): FunctionModule<DB, keyof DB>;
|
|
103
103
|
/**
|
|
104
104
|
* Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.
|
|
105
105
|
*
|
package/dist/esm/kysely.js
CHANGED
|
@@ -9,7 +9,7 @@ import { RuntimeDriver } from './driver/runtime-driver.js';
|
|
|
9
9
|
import { SingleConnectionProvider } from './driver/single-connection-provider.js';
|
|
10
10
|
import { TRANSACTION_ISOLATION_LEVELS, } from './driver/driver.js';
|
|
11
11
|
import { preventAwait } from './util/prevent-await.js';
|
|
12
|
-
import {
|
|
12
|
+
import { FunctionModule } from './query-builder/function-module.js';
|
|
13
13
|
import { Log } from './util/log.js';
|
|
14
14
|
/**
|
|
15
15
|
* The main Kysely class.
|
|
@@ -105,7 +105,7 @@ export class Kysely extends QueryCreator {
|
|
|
105
105
|
return this.#props.dialect.createIntrospector(this.withoutPlugins());
|
|
106
106
|
}
|
|
107
107
|
/**
|
|
108
|
-
* Returns a {@link
|
|
108
|
+
* Returns a {@link FunctionModule} that can be used to write type safe function
|
|
109
109
|
* calls.
|
|
110
110
|
*
|
|
111
111
|
* ```ts
|
|
@@ -133,7 +133,7 @@ export class Kysely extends QueryCreator {
|
|
|
133
133
|
* ```
|
|
134
134
|
*/
|
|
135
135
|
get fn() {
|
|
136
|
-
return new
|
|
136
|
+
return new FunctionModule();
|
|
137
137
|
}
|
|
138
138
|
/**
|
|
139
139
|
* Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.
|
|
@@ -29,8 +29,13 @@ export class FileMigrationProvider {
|
|
|
29
29
|
!fileName.endsWith('.d.ts')) {
|
|
30
30
|
const migration = await import(
|
|
31
31
|
/* webpackIgnore: true */ this.#props.path.join(this.#props.migrationFolder, fileName));
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
const migrationKey = fileName.substring(0, fileName.length - 3);
|
|
33
|
+
// Handle esModuleInterop export's `default` prop...
|
|
34
|
+
if (isMigration(migration?.default)) {
|
|
35
|
+
migrations[migrationKey] = migration.default;
|
|
36
|
+
}
|
|
37
|
+
else if (isMigration(migration)) {
|
|
38
|
+
migrations[migrationKey] = migration;
|
|
34
39
|
}
|
|
35
40
|
}
|
|
36
41
|
}
|
|
@@ -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;
|
|
@@ -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';
|
|
@@ -71,6 +70,11 @@ import { DropTypeNode } from './drop-type-node.js';
|
|
|
71
70
|
import { ExplainNode } from './explain-node.js';
|
|
72
71
|
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
73
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';
|
|
74
78
|
/**
|
|
75
79
|
* Transforms an operation node tree into another one.
|
|
76
80
|
*
|
|
@@ -145,7 +149,7 @@ export declare class OperationNodeTransformer {
|
|
|
145
149
|
protected transformPrimaryKeyConstraint(node: PrimaryKeyConstraintNode): PrimaryKeyConstraintNode;
|
|
146
150
|
protected transformUniqueConstraint(node: UniqueConstraintNode): UniqueConstraintNode;
|
|
147
151
|
protected transformForeignKeyConstraint(node: ForeignKeyConstraintNode): ForeignKeyConstraintNode;
|
|
148
|
-
protected
|
|
152
|
+
protected transformSetOperation(node: SetOperationNode): SetOperationNode;
|
|
149
153
|
protected transformReferences(node: ReferencesNode): ReferencesNode;
|
|
150
154
|
protected transformCheckConstraint(node: CheckConstraintNode): CheckConstraintNode;
|
|
151
155
|
protected transformWith(node: WithNode): WithNode;
|
|
@@ -171,6 +175,10 @@ export declare class OperationNodeTransformer {
|
|
|
171
175
|
protected transformDropType(node: DropTypeNode): DropTypeNode;
|
|
172
176
|
protected transformExplain(node: ExplainNode): ExplainNode;
|
|
173
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;
|
|
174
182
|
protected transformDataType(node: DataTypeNode): DataTypeNode;
|
|
175
183
|
protected transformSelectAll(node: SelectAllNode): SelectAllNode;
|
|
176
184
|
protected transformIdentifier(node: IdentifierNode): IdentifierNode;
|
|
@@ -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),
|
|
@@ -105,6 +104,11 @@ export class OperationNodeTransformer {
|
|
|
105
104
|
DropTypeNode: this.transformDropType.bind(this),
|
|
106
105
|
ExplainNode: this.transformExplain.bind(this),
|
|
107
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),
|
|
108
112
|
});
|
|
109
113
|
transformNode(node) {
|
|
110
114
|
if (!node) {
|
|
@@ -140,8 +144,8 @@ export class OperationNodeTransformer {
|
|
|
140
144
|
offset: this.transformNode(node.offset),
|
|
141
145
|
with: this.transformNode(node.with),
|
|
142
146
|
having: this.transformNode(node.having),
|
|
143
|
-
union: this.transformNodeList(node.union),
|
|
144
147
|
explain: this.transformNode(node.explain),
|
|
148
|
+
setOperations: this.transformNodeList(node.setOperations),
|
|
145
149
|
});
|
|
146
150
|
}
|
|
147
151
|
transformSelection(node) {
|
|
@@ -444,10 +448,11 @@ export class OperationNodeTransformer {
|
|
|
444
448
|
onUpdate: node.onUpdate,
|
|
445
449
|
});
|
|
446
450
|
}
|
|
447
|
-
|
|
451
|
+
transformSetOperation(node) {
|
|
448
452
|
return requireAllProps({
|
|
449
|
-
kind: '
|
|
450
|
-
|
|
453
|
+
kind: 'SetOperationNode',
|
|
454
|
+
operator: node.operator,
|
|
455
|
+
expression: this.transformNode(node.expression),
|
|
451
456
|
all: node.all,
|
|
452
457
|
});
|
|
453
458
|
}
|
|
@@ -647,6 +652,34 @@ export class OperationNodeTransformer {
|
|
|
647
652
|
identifier: this.transformNode(node.identifier),
|
|
648
653
|
});
|
|
649
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
|
+
}
|
|
650
683
|
transformDataType(node) {
|
|
651
684
|
// An Object.freezed leaf node. No need to clone.
|
|
652
685
|
return node;
|
|
@@ -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';
|
|
@@ -71,6 +70,11 @@ import { DropTypeNode } from './drop-type-node.js';
|
|
|
71
70
|
import { ExplainNode } from './explain-node.js';
|
|
72
71
|
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
73
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';
|
|
74
78
|
export declare abstract class OperationNodeVisitor {
|
|
75
79
|
#private;
|
|
76
80
|
protected readonly nodeStack: OperationNode[];
|
|
@@ -129,7 +133,6 @@ export declare abstract class OperationNodeVisitor {
|
|
|
129
133
|
protected abstract visitAddConstraint(node: AddConstraintNode): void;
|
|
130
134
|
protected abstract visitDropConstraint(node: DropConstraintNode): void;
|
|
131
135
|
protected abstract visitForeignKeyConstraint(node: ForeignKeyConstraintNode): void;
|
|
132
|
-
protected abstract visitUnion(node: UnionNode): void;
|
|
133
136
|
protected abstract visitDataType(node: DataTypeNode): void;
|
|
134
137
|
protected abstract visitSelectAll(node: SelectAllNode): void;
|
|
135
138
|
protected abstract visitIdentifier(node: IdentifierNode): void;
|
|
@@ -148,4 +151,9 @@ export declare abstract class OperationNodeVisitor {
|
|
|
148
151
|
protected abstract visitDropType(node: DropTypeNode): void;
|
|
149
152
|
protected abstract visitExplain(node: ExplainNode): void;
|
|
150
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;
|
|
151
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),
|
|
@@ -78,6 +77,11 @@ export class OperationNodeVisitor {
|
|
|
78
77
|
DropTypeNode: this.visitDropType.bind(this),
|
|
79
78
|
ExplainNode: this.visitExplain.bind(this),
|
|
80
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),
|
|
81
85
|
});
|
|
82
86
|
visitNode = (node) => {
|
|
83
87
|
this.nodeStack.push(node);
|