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.
Files changed (133) hide show
  1. package/README.md +3 -2
  2. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  3. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
  4. package/dist/cjs/index.d.ts +10 -4
  5. package/dist/cjs/index.js +8 -2
  6. package/dist/cjs/kysely.d.ts +3 -3
  7. package/dist/cjs/kysely.js +3 -3
  8. package/dist/cjs/migration/file-migration-provider.js +7 -2
  9. package/dist/cjs/operation-node/aggregate-function-node.d.ts +22 -0
  10. package/dist/cjs/operation-node/aggregate-function-node.js +31 -0
  11. package/dist/cjs/operation-node/alias-node.d.ts +2 -1
  12. package/dist/cjs/operation-node/default-insert-value-node.d.ts +11 -0
  13. package/dist/cjs/operation-node/{union-node.js → default-insert-value-node.js} +5 -7
  14. package/dist/cjs/operation-node/group-by-node.d.ts +1 -1
  15. package/dist/cjs/operation-node/group-by-node.js +3 -3
  16. package/dist/cjs/operation-node/insert-query-node.d.ts +2 -1
  17. package/dist/cjs/operation-node/operation-node-transformer.d.ts +12 -2
  18. package/dist/cjs/operation-node/operation-node-transformer.js +43 -5
  19. package/dist/cjs/operation-node/operation-node-utils.d.ts +2 -1
  20. package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -2
  21. package/dist/cjs/operation-node/operation-node-visitor.js +6 -1
  22. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  23. package/dist/cjs/operation-node/over-node.d.ts +19 -0
  24. package/dist/cjs/operation-node/over-node.js +35 -0
  25. package/dist/cjs/operation-node/partition-by-item-node.d.ts +14 -0
  26. package/dist/cjs/operation-node/partition-by-item-node.js +18 -0
  27. package/dist/cjs/operation-node/partition-by-node.d.ts +14 -0
  28. package/dist/cjs/operation-node/partition-by-node.js +24 -0
  29. package/dist/cjs/operation-node/select-query-node.d.ts +3 -3
  30. package/dist/cjs/operation-node/select-query-node.js +4 -4
  31. package/dist/cjs/operation-node/set-operation-node.d.ts +18 -0
  32. package/dist/cjs/operation-node/set-operation-node.js +20 -0
  33. package/dist/cjs/operation-node/value-list-node.d.ts +3 -1
  34. package/dist/cjs/parser/complex-expression-parser.d.ts +6 -4
  35. package/dist/cjs/parser/group-by-parser.d.ts +1 -1
  36. package/dist/cjs/parser/group-by-parser.js +2 -2
  37. package/dist/cjs/parser/insert-values-parser.js +13 -4
  38. package/dist/cjs/parser/parse-utils.d.ts +2 -0
  39. package/dist/cjs/parser/parse-utils.js +9 -1
  40. package/dist/cjs/parser/partition-by-parser.d.ts +6 -0
  41. package/dist/cjs/parser/partition-by-parser.js +9 -0
  42. package/dist/cjs/parser/reference-parser.d.ts +2 -1
  43. package/dist/cjs/parser/select-parser.d.ts +4 -3
  44. package/dist/cjs/parser/set-operation-parser.d.ts +5 -0
  45. package/dist/cjs/parser/set-operation-parser.js +8 -0
  46. package/dist/cjs/parser/value-parser.d.ts +2 -1
  47. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +117 -0
  48. package/dist/cjs/query-builder/aggregate-function-builder.js +146 -0
  49. package/dist/cjs/query-builder/expression-builder.d.ts +3 -3
  50. package/dist/cjs/query-builder/expression-builder.js +3 -3
  51. package/dist/cjs/query-builder/{function-builder.d.ts → function-module.d.ts} +49 -42
  52. package/dist/cjs/query-builder/{function-builder.js → function-module.js} +70 -59
  53. package/dist/cjs/query-builder/over-builder.d.ts +59 -0
  54. package/dist/cjs/query-builder/over-builder.js +50 -0
  55. package/dist/cjs/query-builder/select-query-builder.d.ts +63 -3
  56. package/dist/cjs/query-builder/select-query-builder.js +83 -3
  57. package/dist/cjs/query-compiler/default-query-compiler.d.ts +12 -2
  58. package/dist/cjs/query-compiler/default-query-compiler.js +44 -14
  59. package/dist/cjs/raw-builder/sql.d.ts +13 -5
  60. package/dist/cjs/raw-builder/sql.js +6 -0
  61. package/dist/cjs/util/object-utils.d.ts +1 -0
  62. package/dist/cjs/util/object-utils.js +5 -1
  63. package/dist/cjs/util/type-utils.d.ts +5 -1
  64. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  65. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
  66. package/dist/esm/index.d.ts +10 -4
  67. package/dist/esm/index.js +8 -2
  68. package/dist/esm/kysely.d.ts +3 -3
  69. package/dist/esm/kysely.js +3 -3
  70. package/dist/esm/migration/file-migration-provider.js +7 -2
  71. package/dist/esm/operation-node/aggregate-function-node.d.ts +22 -0
  72. package/dist/esm/operation-node/aggregate-function-node.js +29 -0
  73. package/dist/esm/operation-node/alias-node.d.ts +2 -1
  74. package/dist/esm/operation-node/default-insert-value-node.d.ts +11 -0
  75. package/dist/esm/operation-node/default-insert-value-node.js +15 -0
  76. package/dist/esm/operation-node/group-by-node.d.ts +1 -1
  77. package/dist/esm/operation-node/group-by-node.js +3 -3
  78. package/dist/esm/operation-node/insert-query-node.d.ts +2 -1
  79. package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -2
  80. package/dist/esm/operation-node/operation-node-transformer.js +43 -5
  81. package/dist/esm/operation-node/operation-node-utils.d.ts +2 -1
  82. package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -2
  83. package/dist/esm/operation-node/operation-node-visitor.js +6 -1
  84. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  85. package/dist/esm/operation-node/over-node.d.ts +19 -0
  86. package/dist/esm/operation-node/over-node.js +33 -0
  87. package/dist/esm/operation-node/partition-by-item-node.d.ts +14 -0
  88. package/dist/esm/operation-node/partition-by-item-node.js +16 -0
  89. package/dist/esm/operation-node/partition-by-node.d.ts +14 -0
  90. package/dist/esm/operation-node/partition-by-node.js +22 -0
  91. package/dist/esm/operation-node/select-query-node.d.ts +3 -3
  92. package/dist/esm/operation-node/select-query-node.js +4 -4
  93. package/dist/esm/operation-node/set-operation-node.d.ts +18 -0
  94. package/dist/esm/operation-node/set-operation-node.js +18 -0
  95. package/dist/esm/operation-node/value-list-node.d.ts +3 -1
  96. package/dist/esm/parser/complex-expression-parser.d.ts +6 -4
  97. package/dist/esm/parser/group-by-parser.d.ts +1 -1
  98. package/dist/esm/parser/group-by-parser.js +2 -2
  99. package/dist/esm/parser/insert-values-parser.js +14 -5
  100. package/dist/esm/parser/parse-utils.d.ts +2 -0
  101. package/dist/esm/parser/parse-utils.js +7 -0
  102. package/dist/esm/parser/partition-by-parser.d.ts +6 -0
  103. package/dist/esm/parser/partition-by-parser.js +6 -0
  104. package/dist/esm/parser/reference-parser.d.ts +2 -1
  105. package/dist/esm/parser/select-parser.d.ts +4 -3
  106. package/dist/esm/parser/set-operation-parser.d.ts +5 -0
  107. package/dist/esm/parser/set-operation-parser.js +5 -0
  108. package/dist/esm/parser/value-parser.d.ts +2 -1
  109. package/dist/esm/query-builder/aggregate-function-builder.d.ts +117 -0
  110. package/dist/esm/query-builder/aggregate-function-builder.js +142 -0
  111. package/dist/esm/query-builder/expression-builder.d.ts +3 -3
  112. package/dist/esm/query-builder/expression-builder.js +3 -3
  113. package/dist/esm/query-builder/{function-builder.d.ts → function-module.d.ts} +49 -42
  114. package/dist/esm/query-builder/{function-builder.js → function-module.js} +69 -58
  115. package/dist/esm/query-builder/over-builder.d.ts +59 -0
  116. package/dist/esm/query-builder/over-builder.js +47 -0
  117. package/dist/esm/query-builder/select-query-builder.d.ts +63 -3
  118. package/dist/esm/query-builder/select-query-builder.js +83 -3
  119. package/dist/esm/query-compiler/default-query-compiler.d.ts +12 -2
  120. package/dist/esm/query-compiler/default-query-compiler.js +44 -14
  121. package/dist/esm/raw-builder/sql.d.ts +13 -5
  122. package/dist/esm/raw-builder/sql.js +6 -0
  123. package/dist/esm/util/object-utils.d.ts +1 -0
  124. package/dist/esm/util/object-utils.js +3 -0
  125. package/dist/esm/util/type-utils.d.ts +5 -1
  126. package/package.json +4 -1
  127. package/dist/cjs/operation-node/union-node.d.ts +0 -16
  128. package/dist/cjs/parser/union-parser.d.ts +0 -5
  129. package/dist/cjs/parser/union-parser.js +0 -8
  130. package/dist/esm/operation-node/union-node.d.ts +0 -16
  131. package/dist/esm/operation-node/union-node.js +0 -17
  132. package/dist/esm/parser/union-parser.d.ts +0 -5
  133. 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/functions/sql-1.html)
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/C9aJ49mCra).
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
 
@@ -69,6 +69,7 @@ for [3rd party dialects](https://koskimas.github.io/kysely/interfaces/Dialect.ht
69
69
  ### 3rd party dialects:
70
70
 
71
71
  - [AWS Data API](https://github.com/serverless-stack/kysely-data-api)
72
+ - [PlanetScale Serverless Driver](https://github.com/depot/kysely-planetscale)
72
73
 
73
74
  # Minimal example
74
75
 
@@ -1,3 +1,4 @@
1
+ import { DefaultInsertValueNode } from '../../operation-node/default-insert-value-node.js';
1
2
  import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
2
3
  export declare class SqliteQueryCompiler extends DefaultQueryCompiler {
3
4
  protected getCurrentParameterPlaceholder(): string;
@@ -7,4 +8,5 @@ export declare class SqliteQueryCompiler extends DefaultQueryCompiler {
7
8
  protected getRightIdentifierWrapper(): string;
8
9
  protected getAutoIncrement(): string;
9
10
  protected sanitizeIdentifier(identifier: string): string;
11
+ protected visitDefaultInsertValue(_: DefaultInsertValueNode): void;
10
12
  }
@@ -25,5 +25,9 @@ class SqliteQueryCompiler extends default_query_compiler_js_1.DefaultQueryCompil
25
25
  sanitizeIdentifier(identifier) {
26
26
  return identifier.replace(ID_WRAP_REGEX, '""');
27
27
  }
28
+ visitDefaultInsertValue(_) {
29
+ // sqlite doesn't support the `default` keyword in inserts.
30
+ this.append('null');
31
+ }
28
32
  }
29
33
  exports.SqliteQueryCompiler = SqliteQueryCompiler;
@@ -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-builder.js';
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';
@@ -151,13 +151,19 @@ export * from './operation-node/values-node.js';
151
151
  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
+ 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';
154
160
  export * from './util/column-type.js';
155
161
  export * from './util/compilable.js';
156
162
  export * from './util/explainable.js';
157
163
  export * from './util/log.js';
158
164
  export { AnyColumn, UnknownRow, AnySelectQueryBuilder, } from './util/type-utils.js';
159
165
  export { SelectExpression, SelectExpressionOrList, Selection, } from './parser/select-parser.js';
160
- export { ReferenceExpression, ReferenceExpressionOrList, } from './parser/reference-parser.js';
166
+ export { ReferenceExpression, ReferenceExpressionOrList, StringReference, } from './parser/reference-parser.js';
161
167
  export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
162
168
  export { FilterValueExpression, FilterValueExpressionOrList, ExistsExpression, FilterOperator, } from './parser/filter-parser.js';
163
169
  export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
@@ -165,4 +171,4 @@ export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-
165
171
  export { InsertObject } from './parser/insert-values-parser.js';
166
172
  export { MutationObject } from './parser/update-set-parser.js';
167
173
  export { OrderByExpression, OrderByDirectionExpression, } from './parser/order-by-parser.js';
168
- export { UnionExpression } from './parser/union-parser.js';
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-builder.js"), exports);
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);
@@ -167,6 +167,12 @@ __exportStar(require("./operation-node/values-node.js"), exports);
167
167
  __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
+ __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);
170
176
  __exportStar(require("./util/column-type.js"), exports);
171
177
  __exportStar(require("./util/compilable.js"), exports);
172
178
  __exportStar(require("./util/explainable.js"), exports);
@@ -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 { FunctionBuilder } from './query-builder/function-builder.js';
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 FunctionBuilder} that can be used to write type safe function
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(): FunctionBuilder<DB, keyof DB>;
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
  *
@@ -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 function_builder_js_1 = require("./query-builder/function-builder.js");
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 FunctionBuilder} that can be used to write type safe function
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 function_builder_js_1.FunctionBuilder();
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
- if (isMigration(migration)) {
35
- migrations[fileName.substring(0, fileName.length - 3)] = migration;
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;
@@ -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
+ }>;
@@ -1,19 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnionNode = void 0;
3
+ exports.DefaultInsertValueNode = void 0;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
5
  /**
6
6
  * @internal
7
7
  */
8
- exports.UnionNode = (0, object_utils_js_1.freeze)({
8
+ exports.DefaultInsertValueNode = (0, object_utils_js_1.freeze)({
9
9
  is(node) {
10
- return node.kind === 'UnionNode';
10
+ return node.kind === 'DefaultInsertValueNode';
11
11
  },
12
- create(union, all) {
12
+ create() {
13
13
  return (0, object_utils_js_1.freeze)({
14
- kind: 'UnionNode',
15
- union,
16
- all,
14
+ kind: 'DefaultInsertValueNode',
17
15
  });
18
16
  },
19
17
  });
@@ -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(orderBy: GroupByNode, items: ReadonlyArray<GroupByItemNode>): GroupByNode;
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(orderBy, items) {
18
+ cloneWithItems(groupBy, items) {
19
19
  return (0, object_utils_js_1.freeze)({
20
- ...orderBy,
21
- items: (0, object_utils_js_1.freeze)([...orderBy.items, ...items]),
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';
@@ -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 transformUnion(node: UnionNode): UnionNode;
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
  }
@@ -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),
@@ -106,6 +105,12 @@ class OperationNodeTransformer {
106
105
  CreateTypeNode: this.transformCreateType.bind(this),
107
106
  DropTypeNode: this.transformDropType.bind(this),
108
107
  ExplainNode: this.transformExplain.bind(this),
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),
109
114
  });
110
115
  transformNode(node) {
111
116
  if (!node) {
@@ -141,8 +146,8 @@ class OperationNodeTransformer {
141
146
  offset: this.transformNode(node.offset),
142
147
  with: this.transformNode(node.with),
143
148
  having: this.transformNode(node.having),
144
- union: this.transformNodeList(node.union),
145
149
  explain: this.transformNode(node.explain),
150
+ setOperations: this.transformNodeList(node.setOperations),
146
151
  });
147
152
  }
148
153
  transformSelection(node) {
@@ -445,10 +450,11 @@ class OperationNodeTransformer {
445
450
  onUpdate: node.onUpdate,
446
451
  });
447
452
  }
448
- transformUnion(node) {
453
+ transformSetOperation(node) {
449
454
  return (0, require_all_props_js_1.requireAllProps)({
450
- kind: 'UnionNode',
451
- union: this.transformNode(node.union),
455
+ kind: 'SetOperationNode',
456
+ operator: node.operator,
457
+ expression: this.transformNode(node.expression),
452
458
  all: node.all,
453
459
  });
454
460
  }
@@ -648,6 +654,34 @@ class OperationNodeTransformer {
648
654
  identifier: this.transformNode(node.identifier),
649
655
  });
650
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
+ }
651
685
  transformDataType(node) {
652
686
  // An Object.freezed leaf node. No need to clone.
653
687
  return node;
@@ -672,5 +706,9 @@ class OperationNodeTransformer {
672
706
  // An Object.freezed leaf node. No need to clone.
673
707
  return node;
674
708
  }
709
+ transformDefaultInsertValue(node) {
710
+ // An Object.freezed leaf node. No need to clone.
711
+ return node;
712
+ }
675
713
  }
676
714
  exports.OperationNodeTransformer = OperationNodeTransformer;
@@ -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
  }
@@ -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),
@@ -79,6 +78,12 @@ class OperationNodeVisitor {
79
78
  CreateTypeNode: this.visitCreateType.bind(this),
80
79
  DropTypeNode: this.visitDropType.bind(this),
81
80
  ExplainNode: this.visitExplain.bind(this),
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),
82
87
  });
83
88
  visitNode = (node) => {
84
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' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode';
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
+ });