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
package/README.md
CHANGED
|
@@ -21,11 +21,11 @@ column names, aliases and types from selected subqueries, joined subqueries, `wi
|
|
|
21
21
|
much anything you can think of.
|
|
22
22
|
|
|
23
23
|
Of course there are cases where things cannot be typed at compile time, and Kysely offers escape
|
|
24
|
-
hatches for these situations. See the [sql template tag](https://koskimas.github.io/kysely/
|
|
24
|
+
hatches for these situations. See the [sql template tag](https://koskimas.github.io/kysely/interfaces/Sql.html)
|
|
25
25
|
and the [DynamicModule](https://koskimas.github.io/kysely/classes/DynamicModule.html#ref) for more info.
|
|
26
26
|
|
|
27
27
|
If you start using Kysely and can't find something you'd want to use, please open an issue or join our
|
|
28
|
-
[discord server](https://discord.gg/
|
|
28
|
+
[discord server](https://discord.gg/xyBJ3GwvAm).
|
|
29
29
|
|
|
30
30
|
You can find a more thorough introduction [here](https://www.jakso.me/blog/kysely-a-type-safe-sql-query-builder-for-typescript).
|
|
31
31
|
|
package/dist/cjs/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/cjs/index.js
CHANGED
|
@@ -26,11 +26,12 @@ __exportStar(require("./query-builder/delete-query-builder.js"), exports);
|
|
|
26
26
|
__exportStar(require("./query-builder/no-result-error.js"), exports);
|
|
27
27
|
__exportStar(require("./query-builder/join-builder.js"), exports);
|
|
28
28
|
__exportStar(require("./query-builder/expression-builder.js"), exports);
|
|
29
|
-
__exportStar(require("./query-builder/function-
|
|
29
|
+
__exportStar(require("./query-builder/function-module.js"), exports);
|
|
30
30
|
__exportStar(require("./query-builder/insert-result.js"), exports);
|
|
31
31
|
__exportStar(require("./query-builder/delete-result.js"), exports);
|
|
32
32
|
__exportStar(require("./query-builder/update-result.js"), exports);
|
|
33
33
|
__exportStar(require("./query-builder/on-conflict-builder.js"), exports);
|
|
34
|
+
__exportStar(require("./query-builder/aggregate-function-builder.js"), exports);
|
|
34
35
|
__exportStar(require("./raw-builder/raw-builder.js"), exports);
|
|
35
36
|
__exportStar(require("./raw-builder/sql.js"), exports);
|
|
36
37
|
__exportStar(require("./query-executor/query-executor.js"), exports);
|
|
@@ -158,7 +159,6 @@ __exportStar(require("./operation-node/select-query-node.js"), exports);
|
|
|
158
159
|
__exportStar(require("./operation-node/select-query-node.js"), exports);
|
|
159
160
|
__exportStar(require("./operation-node/selection-node.js"), exports);
|
|
160
161
|
__exportStar(require("./operation-node/table-node.js"), exports);
|
|
161
|
-
__exportStar(require("./operation-node/union-node.js"), exports);
|
|
162
162
|
__exportStar(require("./operation-node/unique-constraint-node.js"), exports);
|
|
163
163
|
__exportStar(require("./operation-node/update-query-node.js"), exports);
|
|
164
164
|
__exportStar(require("./operation-node/value-list-node.js"), exports);
|
|
@@ -168,6 +168,11 @@ __exportStar(require("./operation-node/where-node.js"), exports);
|
|
|
168
168
|
__exportStar(require("./operation-node/with-node.js"), exports);
|
|
169
169
|
__exportStar(require("./operation-node/explain-node.js"), exports);
|
|
170
170
|
__exportStar(require("./operation-node/default-insert-value-node.js"), exports);
|
|
171
|
+
__exportStar(require("./operation-node/aggregate-function-node.js"), exports);
|
|
172
|
+
__exportStar(require("./operation-node/over-node.js"), exports);
|
|
173
|
+
__exportStar(require("./operation-node/partition-by-node.js"), exports);
|
|
174
|
+
__exportStar(require("./operation-node/partition-by-item-node.js"), exports);
|
|
175
|
+
__exportStar(require("./operation-node/set-operation-node.js"), exports);
|
|
171
176
|
__exportStar(require("./util/column-type.js"), exports);
|
|
172
177
|
__exportStar(require("./util/compilable.js"), exports);
|
|
173
178
|
__exportStar(require("./util/explainable.js"), exports);
|
package/dist/cjs/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/cjs/kysely.js
CHANGED
|
@@ -11,7 +11,7 @@ const runtime_driver_js_1 = require("./driver/runtime-driver.js");
|
|
|
11
11
|
const single_connection_provider_js_1 = require("./driver/single-connection-provider.js");
|
|
12
12
|
const driver_js_1 = require("./driver/driver.js");
|
|
13
13
|
const prevent_await_js_1 = require("./util/prevent-await.js");
|
|
14
|
-
const
|
|
14
|
+
const function_module_js_1 = require("./query-builder/function-module.js");
|
|
15
15
|
const log_js_1 = require("./util/log.js");
|
|
16
16
|
/**
|
|
17
17
|
* The main Kysely class.
|
|
@@ -107,7 +107,7 @@ class Kysely extends query_creator_js_1.QueryCreator {
|
|
|
107
107
|
return this.#props.dialect.createIntrospector(this.withoutPlugins());
|
|
108
108
|
}
|
|
109
109
|
/**
|
|
110
|
-
* Returns a {@link
|
|
110
|
+
* Returns a {@link FunctionModule} that can be used to write type safe function
|
|
111
111
|
* calls.
|
|
112
112
|
*
|
|
113
113
|
* ```ts
|
|
@@ -135,7 +135,7 @@ class Kysely extends query_creator_js_1.QueryCreator {
|
|
|
135
135
|
* ```
|
|
136
136
|
*/
|
|
137
137
|
get fn() {
|
|
138
|
-
return new
|
|
138
|
+
return new function_module_js_1.FunctionModule();
|
|
139
139
|
}
|
|
140
140
|
/**
|
|
141
141
|
* Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.
|
|
@@ -31,8 +31,13 @@ class FileMigrationProvider {
|
|
|
31
31
|
!fileName.endsWith('.d.ts')) {
|
|
32
32
|
const migration = await Promise.resolve().then(() => require(
|
|
33
33
|
/* webpackIgnore: true */ this.#props.path.join(this.#props.migrationFolder, fileName)));
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
const migrationKey = fileName.substring(0, fileName.length - 3);
|
|
35
|
+
// Handle esModuleInterop export's `default` prop...
|
|
36
|
+
if (isMigration(migration?.default)) {
|
|
37
|
+
migrations[migrationKey] = migration.default;
|
|
38
|
+
}
|
|
39
|
+
else if (isMigration(migration)) {
|
|
40
|
+
migrations[migrationKey] = migration;
|
|
36
41
|
}
|
|
37
42
|
}
|
|
38
43
|
}
|
|
@@ -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,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AggregateFunctionNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.AggregateFunctionNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'AggregateFunctionNode';
|
|
11
|
+
},
|
|
12
|
+
create(aggregateFunction, column) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'AggregateFunctionNode',
|
|
15
|
+
func: aggregateFunction,
|
|
16
|
+
column,
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
cloneWithDistinct(aggregateFunctionNode) {
|
|
20
|
+
return (0, object_utils_js_1.freeze)({
|
|
21
|
+
...aggregateFunctionNode,
|
|
22
|
+
distinct: true,
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
cloneWithOver(aggregateFunctionNode, over) {
|
|
26
|
+
return (0, object_utils_js_1.freeze)({
|
|
27
|
+
...aggregateFunctionNode,
|
|
28
|
+
over,
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
});
|
|
@@ -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
|
}>;
|
|
@@ -15,10 +15,10 @@ exports.GroupByNode = (0, object_utils_js_1.freeze)({
|
|
|
15
15
|
items: (0, object_utils_js_1.freeze)(items),
|
|
16
16
|
});
|
|
17
17
|
},
|
|
18
|
-
cloneWithItems(
|
|
18
|
+
cloneWithItems(groupBy, items) {
|
|
19
19
|
return (0, object_utils_js_1.freeze)({
|
|
20
|
-
...
|
|
21
|
-
items: (0, object_utils_js_1.freeze)([...
|
|
20
|
+
...groupBy,
|
|
21
|
+
items: (0, object_utils_js_1.freeze)([...groupBy.items, ...items]),
|
|
22
22
|
});
|
|
23
23
|
},
|
|
24
24
|
});
|
|
@@ -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;
|
|
@@ -95,7 +95,6 @@ class OperationNodeTransformer {
|
|
|
95
95
|
AddConstraintNode: this.transformAddConstraint.bind(this),
|
|
96
96
|
DropConstraintNode: this.transformDropConstraint.bind(this),
|
|
97
97
|
ForeignKeyConstraintNode: this.transformForeignKeyConstraint.bind(this),
|
|
98
|
-
UnionNode: this.transformUnion.bind(this),
|
|
99
98
|
CreateViewNode: this.transformCreateView.bind(this),
|
|
100
99
|
DropViewNode: this.transformDropView.bind(this),
|
|
101
100
|
GeneratedNode: this.transformGenerated.bind(this),
|
|
@@ -107,6 +106,11 @@ class OperationNodeTransformer {
|
|
|
107
106
|
DropTypeNode: this.transformDropType.bind(this),
|
|
108
107
|
ExplainNode: this.transformExplain.bind(this),
|
|
109
108
|
DefaultInsertValueNode: this.transformDefaultInsertValue.bind(this),
|
|
109
|
+
AggregateFunctionNode: this.transformAggregateFunction.bind(this),
|
|
110
|
+
OverNode: this.transformOver.bind(this),
|
|
111
|
+
PartitionByNode: this.transformPartitionBy.bind(this),
|
|
112
|
+
PartitionByItemNode: this.transformPartitionByItem.bind(this),
|
|
113
|
+
SetOperationNode: this.transformSetOperation.bind(this),
|
|
110
114
|
});
|
|
111
115
|
transformNode(node) {
|
|
112
116
|
if (!node) {
|
|
@@ -142,8 +146,8 @@ class OperationNodeTransformer {
|
|
|
142
146
|
offset: this.transformNode(node.offset),
|
|
143
147
|
with: this.transformNode(node.with),
|
|
144
148
|
having: this.transformNode(node.having),
|
|
145
|
-
union: this.transformNodeList(node.union),
|
|
146
149
|
explain: this.transformNode(node.explain),
|
|
150
|
+
setOperations: this.transformNodeList(node.setOperations),
|
|
147
151
|
});
|
|
148
152
|
}
|
|
149
153
|
transformSelection(node) {
|
|
@@ -446,10 +450,11 @@ class OperationNodeTransformer {
|
|
|
446
450
|
onUpdate: node.onUpdate,
|
|
447
451
|
});
|
|
448
452
|
}
|
|
449
|
-
|
|
453
|
+
transformSetOperation(node) {
|
|
450
454
|
return (0, require_all_props_js_1.requireAllProps)({
|
|
451
|
-
kind: '
|
|
452
|
-
|
|
455
|
+
kind: 'SetOperationNode',
|
|
456
|
+
operator: node.operator,
|
|
457
|
+
expression: this.transformNode(node.expression),
|
|
453
458
|
all: node.all,
|
|
454
459
|
});
|
|
455
460
|
}
|
|
@@ -649,6 +654,34 @@ class OperationNodeTransformer {
|
|
|
649
654
|
identifier: this.transformNode(node.identifier),
|
|
650
655
|
});
|
|
651
656
|
}
|
|
657
|
+
transformAggregateFunction(node) {
|
|
658
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
659
|
+
kind: 'AggregateFunctionNode',
|
|
660
|
+
column: this.transformNode(node.column),
|
|
661
|
+
distinct: node.distinct,
|
|
662
|
+
func: node.func,
|
|
663
|
+
over: this.transformNode(node.over),
|
|
664
|
+
});
|
|
665
|
+
}
|
|
666
|
+
transformOver(node) {
|
|
667
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
668
|
+
kind: 'OverNode',
|
|
669
|
+
orderBy: this.transformNode(node.orderBy),
|
|
670
|
+
partitionBy: this.transformNode(node.partitionBy),
|
|
671
|
+
});
|
|
672
|
+
}
|
|
673
|
+
transformPartitionBy(node) {
|
|
674
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
675
|
+
kind: 'PartitionByNode',
|
|
676
|
+
items: this.transformNodeList(node.items),
|
|
677
|
+
});
|
|
678
|
+
}
|
|
679
|
+
transformPartitionByItem(node) {
|
|
680
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
681
|
+
kind: 'PartitionByItemNode',
|
|
682
|
+
partitionBy: this.transformNode(node.partitionBy),
|
|
683
|
+
});
|
|
684
|
+
}
|
|
652
685
|
transformDataType(node) {
|
|
653
686
|
// An Object.freezed leaf node. No need to clone.
|
|
654
687
|
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
|
}
|
|
@@ -68,7 +68,6 @@ class OperationNodeVisitor {
|
|
|
68
68
|
AddConstraintNode: this.visitAddConstraint.bind(this),
|
|
69
69
|
DropConstraintNode: this.visitDropConstraint.bind(this),
|
|
70
70
|
ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),
|
|
71
|
-
UnionNode: this.visitUnion.bind(this),
|
|
72
71
|
CreateViewNode: this.visitCreateView.bind(this),
|
|
73
72
|
DropViewNode: this.visitDropView.bind(this),
|
|
74
73
|
GeneratedNode: this.visitGenerated.bind(this),
|
|
@@ -80,6 +79,11 @@ class OperationNodeVisitor {
|
|
|
80
79
|
DropTypeNode: this.visitDropType.bind(this),
|
|
81
80
|
ExplainNode: this.visitExplain.bind(this),
|
|
82
81
|
DefaultInsertValueNode: this.visitDefaultInsertValue.bind(this),
|
|
82
|
+
AggregateFunctionNode: this.visitAggregateFunction.bind(this),
|
|
83
|
+
OverNode: this.visitOver.bind(this),
|
|
84
|
+
PartitionByNode: this.visitPartitionBy.bind(this),
|
|
85
|
+
PartitionByItemNode: this.visitPartitionByItem.bind(this),
|
|
86
|
+
SetOperationNode: this.visitSetOperation.bind(this),
|
|
83
87
|
});
|
|
84
88
|
visitNode = (node) => {
|
|
85
89
|
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,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OverNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
const order_by_node_js_1 = require("./order-by-node.js");
|
|
6
|
+
const partition_by_node_js_1 = require("./partition-by-node.js");
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
exports.OverNode = (0, object_utils_js_1.freeze)({
|
|
11
|
+
is(node) {
|
|
12
|
+
return node.kind === 'OverNode';
|
|
13
|
+
},
|
|
14
|
+
create() {
|
|
15
|
+
return (0, object_utils_js_1.freeze)({
|
|
16
|
+
kind: 'OverNode',
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
cloneWithOrderByItem(overNode, item) {
|
|
20
|
+
return (0, object_utils_js_1.freeze)({
|
|
21
|
+
...overNode,
|
|
22
|
+
orderBy: overNode.orderBy
|
|
23
|
+
? order_by_node_js_1.OrderByNode.cloneWithItem(overNode.orderBy, item)
|
|
24
|
+
: order_by_node_js_1.OrderByNode.create(item),
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
cloneWithPartitionByItems(overNode, items) {
|
|
28
|
+
return (0, object_utils_js_1.freeze)({
|
|
29
|
+
...overNode,
|
|
30
|
+
partitionBy: overNode.partitionBy
|
|
31
|
+
? partition_by_node_js_1.PartitionByNode.cloneWithItems(overNode.partitionBy, items)
|
|
32
|
+
: partition_by_node_js_1.PartitionByNode.create(items),
|
|
33
|
+
});
|
|
34
|
+
},
|
|
35
|
+
});
|
|
@@ -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
|
+
}>;
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.PartitionByItemNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
5
|
/**
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
|
-
exports.
|
|
8
|
+
exports.PartitionByItemNode = (0, object_utils_js_1.freeze)({
|
|
9
9
|
is(node) {
|
|
10
|
-
return node.kind === '
|
|
10
|
+
return node.kind === 'PartitionByItemNode';
|
|
11
11
|
},
|
|
12
|
-
create(
|
|
12
|
+
create(partitionBy) {
|
|
13
13
|
return (0, object_utils_js_1.freeze)({
|
|
14
|
-
kind: '
|
|
15
|
-
|
|
16
|
-
all,
|
|
14
|
+
kind: 'PartitionByItemNode',
|
|
15
|
+
partitionBy,
|
|
17
16
|
});
|
|
18
17
|
},
|
|
19
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
|
+
});
|