kysely 0.27.2 → 0.27.4
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/CONTRIBUTING.md +1 -1
- package/README.md +7 -7
- package/dist/cjs/dialect/database-introspector.d.ts +1 -0
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +2 -1
- package/dist/cjs/dialect/dialect-adapter-base.js +4 -1
- package/dist/cjs/dialect/dialect-adapter.d.ts +5 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +1 -5
- package/dist/cjs/dialect/mssql/mssql-adapter.js +2 -4
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +46 -26
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +1 -0
- package/dist/cjs/dialect/mssql/mssql-driver.js +95 -36
- package/dist/cjs/dialect/mssql/mssql-introspector.js +13 -2
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +4 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +8 -0
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-driver.js +2 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -1
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/cjs/driver/database-connection.d.ts +4 -2
- package/dist/cjs/dynamic/dynamic-reference-builder.js +2 -2
- package/dist/cjs/dynamic/dynamic.d.ts +1 -1
- package/dist/cjs/dynamic/dynamic.js +1 -1
- package/dist/cjs/expression/expression-builder.d.ts +31 -5
- package/dist/cjs/expression/expression-builder.js +7 -3
- package/dist/cjs/expression/expression.js +2 -3
- package/dist/cjs/helpers/mssql.js +3 -4
- package/dist/cjs/helpers/mysql.d.ts +3 -3
- package/dist/cjs/helpers/mysql.js +6 -7
- package/dist/cjs/helpers/postgres.d.ts +4 -4
- package/dist/cjs/helpers/postgres.js +7 -8
- package/dist/cjs/helpers/sqlite.js +3 -4
- package/dist/cjs/index.d.ts +31 -18
- package/dist/cjs/index.js +30 -17
- package/dist/cjs/kysely.d.ts +1 -1
- package/dist/cjs/kysely.js +3 -3
- package/dist/cjs/operation-node/add-index-node.js +1 -1
- package/dist/cjs/operation-node/alter-column-node.d.ts +1 -1
- package/dist/cjs/operation-node/case-node.d.ts +1 -1
- package/dist/cjs/operation-node/cast-node.d.ts +13 -0
- package/dist/cjs/operation-node/cast-node.js +19 -0
- package/dist/cjs/operation-node/column-definition-node.d.ts +2 -0
- package/dist/cjs/operation-node/data-type-node.d.ts +5 -1
- package/dist/cjs/operation-node/data-type-node.js +56 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +6 -0
- package/dist/cjs/operation-node/delete-query-node.js +12 -0
- package/dist/cjs/operation-node/fetch-node.d.ts +15 -0
- package/dist/cjs/operation-node/fetch-node.js +19 -0
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -4
- package/dist/cjs/operation-node/having-node.d.ts +1 -1
- package/dist/cjs/operation-node/insert-query-node.d.ts +6 -1
- package/dist/cjs/operation-node/insert-query-node.js +5 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/matched-node.d.ts +13 -0
- package/dist/cjs/operation-node/matched-node.js +19 -0
- package/dist/cjs/operation-node/merge-query-node.d.ts +27 -0
- package/dist/cjs/operation-node/merge-query-node.js +45 -0
- package/dist/cjs/operation-node/on-node.d.ts +1 -1
- package/dist/cjs/operation-node/operation-node-source.js +1 -2
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +12 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +62 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +6 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +3 -3
- package/dist/cjs/operation-node/operator-node.js +8 -6
- package/dist/cjs/operation-node/output-node.d.ts +13 -0
- package/dist/cjs/operation-node/output-node.js +26 -0
- package/dist/cjs/operation-node/query-node.d.ts +17 -5
- package/dist/cjs/operation-node/query-node.js +24 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +6 -0
- package/dist/cjs/operation-node/select-query-node.js +12 -0
- package/dist/cjs/operation-node/top-node.d.ts +14 -0
- package/dist/cjs/operation-node/top-node.js +19 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +9 -1
- package/dist/cjs/operation-node/update-query-node.js +11 -0
- package/dist/cjs/operation-node/where-node.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.js +7 -8
- package/dist/cjs/parser/data-type-parser.js +8 -5
- package/dist/cjs/parser/default-value-parser.js +1 -2
- package/dist/cjs/parser/expression-parser.js +3 -4
- package/dist/cjs/parser/fetch-parser.d.ts +2 -0
- package/dist/cjs/parser/fetch-parser.js +17 -0
- package/dist/cjs/parser/group-by-parser.js +1 -2
- package/dist/cjs/parser/identifier-parser.js +1 -2
- package/dist/cjs/parser/insert-values-parser.d.ts +3 -3
- package/dist/cjs/parser/insert-values-parser.js +1 -2
- package/dist/cjs/parser/join-parser.js +1 -2
- package/dist/cjs/parser/merge-parser.d.ts +9 -0
- package/dist/cjs/parser/merge-parser.js +31 -0
- package/dist/cjs/parser/on-commit-action-parse.js +1 -2
- package/dist/cjs/parser/on-modify-action-parser.js +1 -2
- package/dist/cjs/parser/order-by-parser.js +3 -4
- package/dist/cjs/parser/parse-utils.js +4 -5
- package/dist/cjs/parser/partition-by-parser.js +1 -2
- package/dist/cjs/parser/reference-parser.js +8 -9
- package/dist/cjs/parser/returning-parser.d.ts +4 -3
- package/dist/cjs/parser/select-parser.js +2 -3
- package/dist/cjs/parser/set-operation-parser.js +1 -2
- package/dist/cjs/parser/table-parser.d.ts +4 -3
- package/dist/cjs/parser/table-parser.js +4 -5
- package/dist/cjs/parser/top-parser.d.ts +2 -0
- package/dist/cjs/parser/top-parser.js +19 -0
- package/dist/cjs/parser/unary-operation-parser.js +3 -4
- package/dist/cjs/parser/update-set-parser.js +2 -3
- package/dist/cjs/parser/value-parser.js +4 -5
- package/dist/cjs/parser/with-parser.js +1 -2
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +2 -2
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +2 -2
- package/dist/cjs/plugin/camel-case/camel-case.js +2 -3
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +18 -0
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +19 -11
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +4 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +188 -5
- package/dist/cjs/query-builder/delete-query-builder.js +139 -5
- package/dist/cjs/query-builder/function-module.d.ts +5 -5
- package/dist/cjs/query-builder/function-module.js +1 -2
- package/dist/cjs/query-builder/insert-query-builder.d.ts +166 -10
- package/dist/cjs/query-builder/insert-query-builder.js +107 -10
- package/dist/cjs/query-builder/merge-query-builder.d.ts +721 -0
- package/dist/cjs/query-builder/merge-query-builder.js +547 -0
- package/dist/cjs/query-builder/merge-result.d.ts +4 -0
- package/dist/cjs/query-builder/merge-result.js +10 -0
- package/dist/cjs/query-builder/no-result-error.js +2 -2
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +2 -2
- package/dist/cjs/query-builder/output-interface.d.ts +95 -0
- package/dist/cjs/query-builder/output-interface.js +2 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +2 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +177 -17
- package/dist/cjs/query-builder/select-query-builder.js +21 -2
- package/dist/cjs/query-builder/update-query-builder.d.ts +175 -10
- package/dist/cjs/query-builder/update-query-builder.js +119 -7
- package/dist/cjs/query-builder/update-result.d.ts +9 -0
- package/dist/cjs/query-builder/update-result.js +9 -0
- package/dist/cjs/query-builder/where-interface.d.ts +1 -1
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +12 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +118 -10
- package/dist/cjs/query-compiler/query-compiler.d.ts +2 -1
- package/dist/cjs/query-creator.d.ts +96 -5
- package/dist/cjs/query-creator.js +63 -1
- package/dist/cjs/raw-builder/raw-builder.js +1 -2
- package/dist/cjs/raw-builder/sql.d.ts +5 -5
- package/dist/cjs/schema/alter-column-builder.js +3 -0
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +1 -1
- package/dist/cjs/schema/alter-table-add-index-builder.js +7 -3
- package/dist/cjs/schema/alter-table-builder.js +1 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +18 -1
- package/dist/cjs/schema/column-definition-builder.js +22 -1
- package/dist/cjs/util/assert.js +2 -3
- package/dist/cjs/util/compilable.js +1 -2
- package/dist/cjs/util/infer-result.d.ts +2 -1
- package/dist/cjs/util/json-object-args.js +1 -2
- package/dist/cjs/util/log-once.js +1 -2
- package/dist/cjs/util/object-utils.js +38 -26
- package/dist/cjs/util/performance-now.js +1 -2
- package/dist/cjs/util/prevent-await.js +1 -2
- package/dist/cjs/util/query-id.js +1 -2
- package/dist/cjs/util/random-string.js +1 -2
- package/dist/cjs/util/require-all-props.js +1 -2
- package/dist/cjs/util/stack-trace-utils.js +1 -2
- package/dist/cjs/util/type-utils.d.ts +3 -2
- package/dist/esm/dialect/database-introspector.d.ts +1 -0
- package/dist/esm/dialect/dialect-adapter-base.d.ts +2 -1
- package/dist/esm/dialect/dialect-adapter-base.js +4 -1
- package/dist/esm/dialect/dialect-adapter.d.ts +5 -0
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +1 -5
- package/dist/esm/dialect/mssql/mssql-adapter.js +2 -4
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +46 -26
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +1 -0
- package/dist/esm/dialect/mssql/mssql-driver.js +95 -36
- package/dist/esm/dialect/mssql/mssql-introspector.js +13 -2
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +4 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +8 -0
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +2 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +3 -1
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/driver/database-connection.d.ts +4 -2
- package/dist/esm/dynamic/dynamic.d.ts +1 -1
- package/dist/esm/dynamic/dynamic.js +1 -1
- package/dist/esm/expression/expression-builder.d.ts +31 -5
- package/dist/esm/expression/expression-builder.js +5 -0
- package/dist/esm/helpers/mysql.d.ts +3 -3
- package/dist/esm/helpers/mysql.js +3 -3
- package/dist/esm/helpers/postgres.d.ts +4 -4
- package/dist/esm/helpers/postgres.js +4 -4
- package/dist/esm/index.d.ts +31 -18
- package/dist/esm/index.js +30 -17
- package/dist/esm/kysely.d.ts +1 -1
- package/dist/esm/kysely.js +1 -1
- package/dist/esm/operation-node/add-index-node.js +1 -1
- package/dist/esm/operation-node/alter-column-node.d.ts +1 -1
- package/dist/esm/operation-node/case-node.d.ts +1 -1
- package/dist/esm/operation-node/cast-node.d.ts +13 -0
- package/dist/esm/operation-node/cast-node.js +17 -0
- package/dist/esm/operation-node/column-definition-node.d.ts +2 -0
- package/dist/esm/operation-node/data-type-node.d.ts +5 -1
- package/dist/esm/operation-node/data-type-node.js +55 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +6 -0
- package/dist/esm/operation-node/delete-query-node.js +12 -0
- package/dist/esm/operation-node/fetch-node.d.ts +15 -0
- package/dist/esm/operation-node/fetch-node.js +17 -0
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -4
- package/dist/esm/operation-node/having-node.d.ts +1 -1
- package/dist/esm/operation-node/insert-query-node.d.ts +6 -1
- package/dist/esm/operation-node/insert-query-node.js +5 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/matched-node.d.ts +13 -0
- package/dist/esm/operation-node/matched-node.js +17 -0
- package/dist/esm/operation-node/merge-query-node.d.ts +27 -0
- package/dist/esm/operation-node/merge-query-node.js +43 -0
- package/dist/esm/operation-node/on-node.d.ts +1 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -0
- package/dist/esm/operation-node/operation-node-transformer.js +62 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -0
- package/dist/esm/operation-node/operation-node-visitor.js +6 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +3 -3
- package/dist/esm/operation-node/operator-node.js +2 -0
- package/dist/esm/operation-node/output-node.d.ts +13 -0
- package/dist/esm/operation-node/output-node.js +24 -0
- package/dist/esm/operation-node/query-node.d.ts +17 -5
- package/dist/esm/operation-node/query-node.js +24 -1
- package/dist/esm/operation-node/select-query-node.d.ts +6 -0
- package/dist/esm/operation-node/select-query-node.js +12 -0
- package/dist/esm/operation-node/top-node.d.ts +14 -0
- package/dist/esm/operation-node/top-node.js +17 -0
- package/dist/esm/operation-node/update-query-node.d.ts +9 -1
- package/dist/esm/operation-node/update-query-node.js +11 -0
- package/dist/esm/operation-node/where-node.d.ts +1 -1
- package/dist/esm/parser/binary-operation-parser.d.ts +1 -1
- package/dist/esm/parser/binary-operation-parser.js +2 -2
- package/dist/esm/parser/data-type-parser.js +8 -4
- package/dist/esm/parser/fetch-parser.d.ts +2 -0
- package/dist/esm/parser/fetch-parser.js +15 -0
- package/dist/esm/parser/insert-values-parser.d.ts +3 -3
- package/dist/esm/parser/merge-parser.d.ts +9 -0
- package/dist/esm/parser/merge-parser.js +28 -0
- package/dist/esm/parser/returning-parser.d.ts +4 -3
- package/dist/esm/parser/table-parser.d.ts +4 -3
- package/dist/esm/parser/top-parser.d.ts +2 -0
- package/dist/esm/parser/top-parser.js +17 -0
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +2 -2
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +18 -0
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +19 -11
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +4 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +188 -5
- package/dist/esm/query-builder/delete-query-builder.js +139 -5
- package/dist/esm/query-builder/function-module.d.ts +5 -5
- package/dist/esm/query-builder/insert-query-builder.d.ts +166 -10
- package/dist/esm/query-builder/insert-query-builder.js +107 -10
- package/dist/esm/query-builder/merge-query-builder.d.ts +721 -0
- package/dist/esm/query-builder/merge-query-builder.js +541 -0
- package/dist/esm/query-builder/merge-result.d.ts +4 -0
- package/dist/esm/query-builder/merge-result.js +7 -0
- package/dist/esm/query-builder/on-conflict-builder.d.ts +2 -2
- package/dist/esm/query-builder/output-interface.d.ts +95 -0
- package/dist/esm/query-builder/output-interface.js +2 -0
- package/dist/esm/query-builder/returning-interface.d.ts +2 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +177 -17
- package/dist/esm/query-builder/select-query-builder.js +20 -0
- package/dist/esm/query-builder/update-query-builder.d.ts +175 -10
- package/dist/esm/query-builder/update-query-builder.js +119 -7
- package/dist/esm/query-builder/update-result.d.ts +9 -0
- package/dist/esm/query-builder/update-result.js +9 -0
- package/dist/esm/query-builder/where-interface.d.ts +1 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +12 -0
- package/dist/esm/query-compiler/default-query-compiler.js +118 -10
- package/dist/esm/query-compiler/query-compiler.d.ts +2 -1
- package/dist/esm/query-creator.d.ts +96 -5
- package/dist/esm/query-creator.js +64 -2
- package/dist/esm/raw-builder/sql.d.ts +5 -5
- package/dist/esm/schema/alter-column-builder.js +3 -0
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +1 -1
- package/dist/esm/schema/alter-table-add-index-builder.js +8 -4
- package/dist/esm/schema/alter-table-builder.js +1 -2
- package/dist/esm/schema/column-definition-builder.d.ts +18 -1
- package/dist/esm/schema/column-definition-builder.js +22 -1
- package/dist/esm/util/infer-result.d.ts +2 -1
- package/dist/esm/util/object-utils.js +18 -5
- package/dist/esm/util/type-utils.d.ts +3 -2
- package/package.json +26 -24
|
@@ -85,7 +85,13 @@ import { JSONPathNode } from './json-path-node.js';
|
|
|
85
85
|
import { JSONPathLegNode } from './json-path-leg-node.js';
|
|
86
86
|
import { JSONOperatorChainNode } from './json-operator-chain-node.js';
|
|
87
87
|
import { TupleNode } from './tuple-node.js';
|
|
88
|
+
import { MergeQueryNode } from './merge-query-node.js';
|
|
89
|
+
import { MatchedNode } from './matched-node.js';
|
|
88
90
|
import { AddIndexNode } from './add-index-node.js';
|
|
91
|
+
import { CastNode } from './cast-node.js';
|
|
92
|
+
import { FetchNode } from './fetch-node.js';
|
|
93
|
+
import { TopNode } from './top-node.js';
|
|
94
|
+
import { OutputNode } from './output-node.js';
|
|
89
95
|
/**
|
|
90
96
|
* Transforms an operation node tree into another one.
|
|
91
97
|
*
|
|
@@ -200,7 +206,13 @@ export declare class OperationNodeTransformer {
|
|
|
200
206
|
protected transformJSONPathLeg(node: JSONPathLegNode): JSONPathLegNode;
|
|
201
207
|
protected transformJSONOperatorChain(node: JSONOperatorChainNode): JSONOperatorChainNode;
|
|
202
208
|
protected transformTuple(node: TupleNode): TupleNode;
|
|
209
|
+
protected transformMergeQuery(node: MergeQueryNode): MergeQueryNode;
|
|
210
|
+
protected transformMatched(node: MatchedNode): MatchedNode;
|
|
203
211
|
protected transformAddIndex(node: AddIndexNode): AddIndexNode;
|
|
212
|
+
protected transformCast(node: CastNode): CastNode;
|
|
213
|
+
protected transformFetch(node: FetchNode): FetchNode;
|
|
214
|
+
protected transformTop(node: TopNode): TopNode;
|
|
215
|
+
protected transformOutput(node: OutputNode): OutputNode;
|
|
204
216
|
protected transformDataType(node: DataTypeNode): DataTypeNode;
|
|
205
217
|
protected transformSelectAll(node: SelectAllNode): SelectAllNode;
|
|
206
218
|
protected transformIdentifier(node: IdentifierNode): IdentifierNode;
|
|
@@ -121,7 +121,13 @@ class OperationNodeTransformer {
|
|
|
121
121
|
JSONPathLegNode: this.transformJSONPathLeg.bind(this),
|
|
122
122
|
JSONOperatorChainNode: this.transformJSONOperatorChain.bind(this),
|
|
123
123
|
TupleNode: this.transformTuple.bind(this),
|
|
124
|
+
MergeQueryNode: this.transformMergeQuery.bind(this),
|
|
125
|
+
MatchedNode: this.transformMatched.bind(this),
|
|
124
126
|
AddIndexNode: this.transformAddIndex.bind(this),
|
|
127
|
+
CastNode: this.transformCast.bind(this),
|
|
128
|
+
FetchNode: this.transformFetch.bind(this),
|
|
129
|
+
TopNode: this.transformTop.bind(this),
|
|
130
|
+
OutputNode: this.transformOutput.bind(this),
|
|
125
131
|
});
|
|
126
132
|
transformNode(node) {
|
|
127
133
|
if (!node) {
|
|
@@ -159,6 +165,8 @@ class OperationNodeTransformer {
|
|
|
159
165
|
having: this.transformNode(node.having),
|
|
160
166
|
explain: this.transformNode(node.explain),
|
|
161
167
|
setOperations: this.transformNodeList(node.setOperations),
|
|
168
|
+
fetch: this.transformNode(node.fetch),
|
|
169
|
+
top: this.transformNode(node.top),
|
|
162
170
|
});
|
|
163
171
|
}
|
|
164
172
|
transformSelection(node) {
|
|
@@ -260,6 +268,8 @@ class OperationNodeTransformer {
|
|
|
260
268
|
replace: node.replace,
|
|
261
269
|
explain: this.transformNode(node.explain),
|
|
262
270
|
defaultValues: node.defaultValues,
|
|
271
|
+
top: this.transformNode(node.top),
|
|
272
|
+
output: this.transformNode(node.output),
|
|
263
273
|
});
|
|
264
274
|
}
|
|
265
275
|
transformValues(node) {
|
|
@@ -280,6 +290,8 @@ class OperationNodeTransformer {
|
|
|
280
290
|
orderBy: this.transformNode(node.orderBy),
|
|
281
291
|
limit: this.transformNode(node.limit),
|
|
282
292
|
explain: this.transformNode(node.explain),
|
|
293
|
+
top: this.transformNode(node.top),
|
|
294
|
+
output: this.transformNode(node.output),
|
|
283
295
|
});
|
|
284
296
|
}
|
|
285
297
|
transformReturning(node) {
|
|
@@ -319,6 +331,8 @@ class OperationNodeTransformer {
|
|
|
319
331
|
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|
320
332
|
endModifiers: this.transformNodeList(node.endModifiers),
|
|
321
333
|
nullsNotDistinct: node.nullsNotDistinct,
|
|
334
|
+
identity: node.identity,
|
|
335
|
+
ifNotExists: node.ifNotExists,
|
|
322
336
|
});
|
|
323
337
|
}
|
|
324
338
|
transformAddColumn(node) {
|
|
@@ -371,6 +385,9 @@ class OperationNodeTransformer {
|
|
|
371
385
|
returning: this.transformNode(node.returning),
|
|
372
386
|
with: this.transformNode(node.with),
|
|
373
387
|
explain: this.transformNode(node.explain),
|
|
388
|
+
limit: this.transformNode(node.limit),
|
|
389
|
+
top: this.transformNode(node.top),
|
|
390
|
+
output: this.transformNode(node.output),
|
|
374
391
|
});
|
|
375
392
|
}
|
|
376
393
|
transformColumnUpdate(node) {
|
|
@@ -774,6 +791,24 @@ class OperationNodeTransformer {
|
|
|
774
791
|
values: this.transformNodeList(node.values),
|
|
775
792
|
});
|
|
776
793
|
}
|
|
794
|
+
transformMergeQuery(node) {
|
|
795
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
796
|
+
kind: 'MergeQueryNode',
|
|
797
|
+
into: this.transformNode(node.into),
|
|
798
|
+
using: this.transformNode(node.using),
|
|
799
|
+
whens: this.transformNodeList(node.whens),
|
|
800
|
+
with: this.transformNode(node.with),
|
|
801
|
+
top: this.transformNode(node.top),
|
|
802
|
+
output: this.transformNode(node.output),
|
|
803
|
+
});
|
|
804
|
+
}
|
|
805
|
+
transformMatched(node) {
|
|
806
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
807
|
+
kind: 'MatchedNode',
|
|
808
|
+
not: node.not,
|
|
809
|
+
bySource: node.bySource,
|
|
810
|
+
});
|
|
811
|
+
}
|
|
777
812
|
transformAddIndex(node) {
|
|
778
813
|
return (0, require_all_props_js_1.requireAllProps)({
|
|
779
814
|
kind: 'AddIndexNode',
|
|
@@ -784,6 +819,33 @@ class OperationNodeTransformer {
|
|
|
784
819
|
ifNotExists: node.ifNotExists,
|
|
785
820
|
});
|
|
786
821
|
}
|
|
822
|
+
transformCast(node) {
|
|
823
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
824
|
+
kind: 'CastNode',
|
|
825
|
+
expression: this.transformNode(node.expression),
|
|
826
|
+
dataType: this.transformNode(node.dataType),
|
|
827
|
+
});
|
|
828
|
+
}
|
|
829
|
+
transformFetch(node) {
|
|
830
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
831
|
+
kind: 'FetchNode',
|
|
832
|
+
rowCount: this.transformNode(node.rowCount),
|
|
833
|
+
modifier: node.modifier,
|
|
834
|
+
});
|
|
835
|
+
}
|
|
836
|
+
transformTop(node) {
|
|
837
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
838
|
+
kind: 'TopNode',
|
|
839
|
+
expression: node.expression,
|
|
840
|
+
modifiers: node.modifiers,
|
|
841
|
+
});
|
|
842
|
+
}
|
|
843
|
+
transformOutput(node) {
|
|
844
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
845
|
+
kind: 'OutputNode',
|
|
846
|
+
selections: this.transformNodeList(node.selections),
|
|
847
|
+
});
|
|
848
|
+
}
|
|
787
849
|
transformDataType(node) {
|
|
788
850
|
// An Object.freezed leaf node. No need to clone.
|
|
789
851
|
return node;
|
|
@@ -85,7 +85,13 @@ import { JSONPathNode } from './json-path-node.js';
|
|
|
85
85
|
import { JSONPathLegNode } from './json-path-leg-node.js';
|
|
86
86
|
import { JSONOperatorChainNode } from './json-operator-chain-node.js';
|
|
87
87
|
import { TupleNode } from './tuple-node.js';
|
|
88
|
+
import { MergeQueryNode } from './merge-query-node.js';
|
|
89
|
+
import { MatchedNode } from './matched-node.js';
|
|
88
90
|
import { AddIndexNode } from './add-index-node.js';
|
|
91
|
+
import { CastNode } from './cast-node.js';
|
|
92
|
+
import { FetchNode } from './fetch-node.js';
|
|
93
|
+
import { TopNode } from './top-node.js';
|
|
94
|
+
import { OutputNode } from './output-node.js';
|
|
89
95
|
export declare abstract class OperationNodeVisitor {
|
|
90
96
|
#private;
|
|
91
97
|
protected readonly nodeStack: OperationNode[];
|
|
@@ -177,5 +183,11 @@ export declare abstract class OperationNodeVisitor {
|
|
|
177
183
|
protected abstract visitJSONPathLeg(node: JSONPathLegNode): void;
|
|
178
184
|
protected abstract visitJSONOperatorChain(node: JSONOperatorChainNode): void;
|
|
179
185
|
protected abstract visitTuple(node: TupleNode): void;
|
|
186
|
+
protected abstract visitMergeQuery(node: MergeQueryNode): void;
|
|
187
|
+
protected abstract visitMatched(node: MatchedNode): void;
|
|
180
188
|
protected abstract visitAddIndex(node: AddIndexNode): void;
|
|
189
|
+
protected abstract visitCast(node: CastNode): void;
|
|
190
|
+
protected abstract visitFetch(node: FetchNode): void;
|
|
191
|
+
protected abstract visitTop(node: TopNode): void;
|
|
192
|
+
protected abstract visitOutput(node: OutputNode): void;
|
|
181
193
|
}
|
|
@@ -94,7 +94,13 @@ class OperationNodeVisitor {
|
|
|
94
94
|
JSONPathLegNode: this.visitJSONPathLeg.bind(this),
|
|
95
95
|
JSONOperatorChainNode: this.visitJSONOperatorChain.bind(this),
|
|
96
96
|
TupleNode: this.visitTuple.bind(this),
|
|
97
|
+
MergeQueryNode: this.visitMergeQuery.bind(this),
|
|
98
|
+
MatchedNode: this.visitMatched.bind(this),
|
|
97
99
|
AddIndexNode: this.visitAddIndex.bind(this),
|
|
100
|
+
CastNode: this.visitCast.bind(this),
|
|
101
|
+
FetchNode: this.visitFetch.bind(this),
|
|
102
|
+
TopNode: this.visitTop.bind(this),
|
|
103
|
+
OutputNode: this.visitOutput.bind(this),
|
|
98
104
|
});
|
|
99
105
|
visitNode = (node) => {
|
|
100
106
|
this.nodeStack.push(node);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | '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' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'AddIndexNode';
|
|
1
|
+
export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | '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' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode' | 'OutputNode';
|
|
2
2
|
export interface OperationNode {
|
|
3
3
|
readonly kind: OperationNodeKind;
|
|
4
4
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
|
-
export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from"];
|
|
2
|
+
export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "^@", "&&", "?", "?&", "?|", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from"];
|
|
3
3
|
export declare const ARITHMETIC_OPERATORS: readonly ["+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>"];
|
|
4
4
|
export declare const JSON_OPERATORS: readonly ["->", "->>"];
|
|
5
|
-
export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
|
|
5
|
+
export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "^@", "&&", "?", "?&", "?|", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
|
|
6
6
|
export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
|
|
7
7
|
export declare const UNARY_OPERATORS: readonly ["not", "-", "exists", "not exists"];
|
|
8
|
-
export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
|
|
8
|
+
export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "^@", "&&", "?", "?&", "?|", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
|
|
9
9
|
export type ComparisonOperator = (typeof COMPARISON_OPERATORS)[number];
|
|
10
10
|
export type ArithmeticOperator = (typeof ARITHMETIC_OPERATORS)[number];
|
|
11
11
|
export type JSONOperator = (typeof JSON_OPERATORS)[number];
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.OperatorNode = exports.OPERATORS = exports.UNARY_OPERATORS = exports.UNARY_FILTER_OPERATORS = exports.BINARY_OPERATORS = exports.JSON_OPERATORS = exports.ARITHMETIC_OPERATORS = exports.COMPARISON_OPERATORS = void 0;
|
|
4
|
+
exports.isOperator = isOperator;
|
|
5
|
+
exports.isBinaryOperator = isBinaryOperator;
|
|
6
|
+
exports.isComparisonOperator = isComparisonOperator;
|
|
7
|
+
exports.isArithmeticOperator = isArithmeticOperator;
|
|
8
|
+
exports.isJSONOperator = isJSONOperator;
|
|
4
9
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
10
|
exports.COMPARISON_OPERATORS = [
|
|
6
11
|
'=',
|
|
@@ -22,9 +27,11 @@ exports.COMPARISON_OPERATORS = [
|
|
|
22
27
|
'not ilike',
|
|
23
28
|
'@>',
|
|
24
29
|
'<@',
|
|
30
|
+
'^@',
|
|
25
31
|
'&&',
|
|
26
32
|
'?',
|
|
27
33
|
'?&',
|
|
34
|
+
'?|',
|
|
28
35
|
'!<',
|
|
29
36
|
'!>',
|
|
30
37
|
'<=>',
|
|
@@ -86,20 +93,15 @@ exports.OperatorNode = (0, object_utils_js_1.freeze)({
|
|
|
86
93
|
function isOperator(op) {
|
|
87
94
|
return (0, object_utils_js_1.isString)(op) && exports.OPERATORS.includes(op);
|
|
88
95
|
}
|
|
89
|
-
exports.isOperator = isOperator;
|
|
90
96
|
function isBinaryOperator(op) {
|
|
91
97
|
return (0, object_utils_js_1.isString)(op) && exports.BINARY_OPERATORS.includes(op);
|
|
92
98
|
}
|
|
93
|
-
exports.isBinaryOperator = isBinaryOperator;
|
|
94
99
|
function isComparisonOperator(op) {
|
|
95
100
|
return (0, object_utils_js_1.isString)(op) && exports.COMPARISON_OPERATORS.includes(op);
|
|
96
101
|
}
|
|
97
|
-
exports.isComparisonOperator = isComparisonOperator;
|
|
98
102
|
function isArithmeticOperator(op) {
|
|
99
103
|
return (0, object_utils_js_1.isString)(op) && exports.ARITHMETIC_OPERATORS.includes(op);
|
|
100
104
|
}
|
|
101
|
-
exports.isArithmeticOperator = isArithmeticOperator;
|
|
102
105
|
function isJSONOperator(op) {
|
|
103
106
|
return (0, object_utils_js_1.isString)(op) && exports.JSON_OPERATORS.includes(op);
|
|
104
107
|
}
|
|
105
|
-
exports.isJSONOperator = isJSONOperator;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { OperationNode } from './operation-node.js';
|
|
2
|
+
export interface OutputNode extends OperationNode {
|
|
3
|
+
readonly kind: 'OutputNode';
|
|
4
|
+
readonly selections: ReadonlyArray<OperationNode>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export declare const OutputNode: Readonly<{
|
|
10
|
+
is(node: OperationNode): node is OutputNode;
|
|
11
|
+
create(selections: ReadonlyArray<OperationNode>): OutputNode;
|
|
12
|
+
cloneWithSelections(output: OutputNode, selections: ReadonlyArray<OperationNode>): OutputNode;
|
|
13
|
+
}>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OutputNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.OutputNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'OutputNode';
|
|
11
|
+
},
|
|
12
|
+
create(selections) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'OutputNode',
|
|
15
|
+
selections: (0, object_utils_js_1.freeze)(selections),
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
cloneWithSelections(output, selections) {
|
|
19
|
+
return (0, object_utils_js_1.freeze)({
|
|
20
|
+
...output,
|
|
21
|
+
selections: output.selections
|
|
22
|
+
? (0, object_utils_js_1.freeze)([...output.selections, ...selections])
|
|
23
|
+
: (0, object_utils_js_1.freeze)(selections),
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
});
|
|
@@ -10,7 +10,10 @@ import { OperationNode } from './operation-node.js';
|
|
|
10
10
|
import { ExplainNode } from './explain-node.js';
|
|
11
11
|
import { ExplainFormat } from '../util/explainable.js';
|
|
12
12
|
import { Expression } from '../expression/expression.js';
|
|
13
|
-
|
|
13
|
+
import { MergeQueryNode } from './merge-query-node.js';
|
|
14
|
+
import { TopNode } from './top-node.js';
|
|
15
|
+
import { OutputNode } from './output-node.js';
|
|
16
|
+
export type QueryNode = SelectQueryNode | InsertQueryNode | UpdateQueryNode | DeleteQueryNode | MergeQueryNode;
|
|
14
17
|
type HasJoins = {
|
|
15
18
|
joins?: ReadonlyArray<JoinNode>;
|
|
16
19
|
};
|
|
@@ -23,15 +26,24 @@ type HasReturning = {
|
|
|
23
26
|
type HasExplain = {
|
|
24
27
|
explain?: ExplainNode;
|
|
25
28
|
};
|
|
29
|
+
type HasTop = {
|
|
30
|
+
top?: TopNode;
|
|
31
|
+
};
|
|
32
|
+
type HasOutput = {
|
|
33
|
+
output?: OutputNode;
|
|
34
|
+
};
|
|
26
35
|
/**
|
|
27
36
|
* @internal
|
|
28
37
|
*/
|
|
29
38
|
export declare const QueryNode: Readonly<{
|
|
30
39
|
is(node: OperationNode): node is QueryNode;
|
|
31
40
|
cloneWithWhere<T extends HasWhere>(node: T, operation: OperationNode): T;
|
|
32
|
-
cloneWithJoin<
|
|
33
|
-
cloneWithReturning<
|
|
34
|
-
|
|
35
|
-
|
|
41
|
+
cloneWithJoin<T extends HasJoins>(node: T, join: JoinNode): T;
|
|
42
|
+
cloneWithReturning<T extends HasReturning>(node: T, selections: ReadonlyArray<SelectionNode>): T;
|
|
43
|
+
cloneWithoutReturning<T extends HasReturning>(node: T): T;
|
|
44
|
+
cloneWithoutWhere<T extends HasWhere>(node: T): T;
|
|
45
|
+
cloneWithExplain<T extends HasExplain>(node: T, format: ExplainFormat | undefined, options: Expression<any> | undefined): T;
|
|
46
|
+
cloneWithTop<T extends HasTop>(node: T, top: TopNode): T;
|
|
47
|
+
cloneWithOutput<T extends HasOutput>(node: T, selections: ReadonlyArray<SelectionNode>): T;
|
|
36
48
|
}>;
|
|
37
49
|
export {};
|
|
@@ -9,6 +9,8 @@ const where_node_js_1 = require("./where-node.js");
|
|
|
9
9
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
10
10
|
const returning_node_js_1 = require("./returning-node.js");
|
|
11
11
|
const explain_node_js_1 = require("./explain-node.js");
|
|
12
|
+
const merge_query_node_js_1 = require("./merge-query-node.js");
|
|
13
|
+
const output_node_js_1 = require("./output-node.js");
|
|
12
14
|
/**
|
|
13
15
|
* @internal
|
|
14
16
|
*/
|
|
@@ -17,7 +19,8 @@ exports.QueryNode = (0, object_utils_js_1.freeze)({
|
|
|
17
19
|
return (select_query_node_js_1.SelectQueryNode.is(node) ||
|
|
18
20
|
insert_query_node_js_1.InsertQueryNode.is(node) ||
|
|
19
21
|
update_query_node_js_1.UpdateQueryNode.is(node) ||
|
|
20
|
-
delete_query_node_js_1.DeleteQueryNode.is(node)
|
|
22
|
+
delete_query_node_js_1.DeleteQueryNode.is(node) ||
|
|
23
|
+
merge_query_node_js_1.MergeQueryNode.is(node));
|
|
21
24
|
},
|
|
22
25
|
cloneWithWhere(node, operation) {
|
|
23
26
|
return (0, object_utils_js_1.freeze)({
|
|
@@ -41,6 +44,12 @@ exports.QueryNode = (0, object_utils_js_1.freeze)({
|
|
|
41
44
|
: returning_node_js_1.ReturningNode.create(selections),
|
|
42
45
|
});
|
|
43
46
|
},
|
|
47
|
+
cloneWithoutReturning(node) {
|
|
48
|
+
return (0, object_utils_js_1.freeze)({
|
|
49
|
+
...node,
|
|
50
|
+
returning: undefined,
|
|
51
|
+
});
|
|
52
|
+
},
|
|
44
53
|
cloneWithoutWhere(node) {
|
|
45
54
|
return (0, object_utils_js_1.freeze)({
|
|
46
55
|
...node,
|
|
@@ -53,4 +62,18 @@ exports.QueryNode = (0, object_utils_js_1.freeze)({
|
|
|
53
62
|
explain: explain_node_js_1.ExplainNode.create(format, options?.toOperationNode()),
|
|
54
63
|
});
|
|
55
64
|
},
|
|
65
|
+
cloneWithTop(node, top) {
|
|
66
|
+
return (0, object_utils_js_1.freeze)({
|
|
67
|
+
...node,
|
|
68
|
+
top,
|
|
69
|
+
});
|
|
70
|
+
},
|
|
71
|
+
cloneWithOutput(node, selections) {
|
|
72
|
+
return (0, object_utils_js_1.freeze)({
|
|
73
|
+
...node,
|
|
74
|
+
output: node.output
|
|
75
|
+
? output_node_js_1.OutputNode.cloneWithSelections(node.output, selections)
|
|
76
|
+
: output_node_js_1.OutputNode.create(selections),
|
|
77
|
+
});
|
|
78
|
+
},
|
|
56
79
|
});
|
|
@@ -14,6 +14,8 @@ import { WithNode } from './with-node.js';
|
|
|
14
14
|
import { SelectModifierNode } from './select-modifier-node.js';
|
|
15
15
|
import { ExplainNode } from './explain-node.js';
|
|
16
16
|
import { SetOperationNode } from './set-operation-node.js';
|
|
17
|
+
import { FetchNode } from './fetch-node.js';
|
|
18
|
+
import { TopNode } from './top-node.js';
|
|
17
19
|
export interface SelectQueryNode extends OperationNode {
|
|
18
20
|
readonly kind: 'SelectQueryNode';
|
|
19
21
|
readonly from?: FromNode;
|
|
@@ -31,6 +33,8 @@ export interface SelectQueryNode extends OperationNode {
|
|
|
31
33
|
readonly having?: HavingNode;
|
|
32
34
|
readonly explain?: ExplainNode;
|
|
33
35
|
readonly setOperations?: ReadonlyArray<SetOperationNode>;
|
|
36
|
+
readonly fetch?: FetchNode;
|
|
37
|
+
readonly top?: TopNode;
|
|
34
38
|
}
|
|
35
39
|
/**
|
|
36
40
|
* @internal
|
|
@@ -47,10 +51,12 @@ export declare const SelectQueryNode: Readonly<{
|
|
|
47
51
|
cloneWithGroupByItems(selectNode: SelectQueryNode, items: ReadonlyArray<GroupByItemNode>): SelectQueryNode;
|
|
48
52
|
cloneWithLimit(selectNode: SelectQueryNode, limit: LimitNode): SelectQueryNode;
|
|
49
53
|
cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
|
|
54
|
+
cloneWithFetch(selectNode: SelectQueryNode, fetch: FetchNode): SelectQueryNode;
|
|
50
55
|
cloneWithHaving(selectNode: SelectQueryNode, operation: OperationNode): SelectQueryNode;
|
|
51
56
|
cloneWithSetOperations(selectNode: SelectQueryNode, setOperations: ReadonlyArray<SetOperationNode>): SelectQueryNode;
|
|
52
57
|
cloneWithoutSelections(select: SelectQueryNode): SelectQueryNode;
|
|
53
58
|
cloneWithoutLimit(select: SelectQueryNode): SelectQueryNode;
|
|
54
59
|
cloneWithoutOffset(select: SelectQueryNode): SelectQueryNode;
|
|
55
60
|
cloneWithoutOrderBy(select: SelectQueryNode): SelectQueryNode;
|
|
61
|
+
cloneWithoutGroupBy(select: SelectQueryNode): SelectQueryNode;
|
|
56
62
|
}>;
|
|
@@ -86,6 +86,12 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
86
86
|
offset,
|
|
87
87
|
});
|
|
88
88
|
},
|
|
89
|
+
cloneWithFetch(selectNode, fetch) {
|
|
90
|
+
return (0, object_utils_js_1.freeze)({
|
|
91
|
+
...selectNode,
|
|
92
|
+
fetch,
|
|
93
|
+
});
|
|
94
|
+
},
|
|
89
95
|
cloneWithHaving(selectNode, operation) {
|
|
90
96
|
return (0, object_utils_js_1.freeze)({
|
|
91
97
|
...selectNode,
|
|
@@ -126,4 +132,10 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
126
132
|
orderBy: undefined,
|
|
127
133
|
});
|
|
128
134
|
},
|
|
135
|
+
cloneWithoutGroupBy(select) {
|
|
136
|
+
return (0, object_utils_js_1.freeze)({
|
|
137
|
+
...select,
|
|
138
|
+
groupBy: undefined,
|
|
139
|
+
});
|
|
140
|
+
},
|
|
129
141
|
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OperationNode } from './operation-node.js';
|
|
2
|
+
export type TopModifier = 'percent' | 'with ties' | 'percent with ties';
|
|
3
|
+
export interface TopNode extends OperationNode {
|
|
4
|
+
readonly kind: 'TopNode';
|
|
5
|
+
readonly expression: number | bigint;
|
|
6
|
+
readonly modifiers?: TopModifier;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare const TopNode: Readonly<{
|
|
12
|
+
is(node: OperationNode): node is TopNode;
|
|
13
|
+
create(expression: number | bigint, modifiers?: TopModifier): TopNode;
|
|
14
|
+
}>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TopNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.TopNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'TopNode';
|
|
11
|
+
},
|
|
12
|
+
create(expression, modifiers) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'TopNode',
|
|
15
|
+
expression,
|
|
16
|
+
modifiers,
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
});
|
|
@@ -8,10 +8,13 @@ import { WhereNode } from './where-node.js';
|
|
|
8
8
|
import { WithNode } from './with-node.js';
|
|
9
9
|
import { FromNode } from './from-node.js';
|
|
10
10
|
import { ExplainNode } from './explain-node.js';
|
|
11
|
+
import { LimitNode } from './limit-node.js';
|
|
12
|
+
import { TopNode } from './top-node.js';
|
|
13
|
+
import { OutputNode } from './output-node.js';
|
|
11
14
|
export type UpdateValuesNode = ValueListNode | PrimitiveValueListNode;
|
|
12
15
|
export interface UpdateQueryNode extends OperationNode {
|
|
13
16
|
readonly kind: 'UpdateQueryNode';
|
|
14
|
-
readonly table
|
|
17
|
+
readonly table?: OperationNode;
|
|
15
18
|
readonly from?: FromNode;
|
|
16
19
|
readonly joins?: ReadonlyArray<JoinNode>;
|
|
17
20
|
readonly where?: WhereNode;
|
|
@@ -19,6 +22,9 @@ export interface UpdateQueryNode extends OperationNode {
|
|
|
19
22
|
readonly returning?: ReturningNode;
|
|
20
23
|
readonly with?: WithNode;
|
|
21
24
|
readonly explain?: ExplainNode;
|
|
25
|
+
readonly limit?: LimitNode;
|
|
26
|
+
readonly top?: TopNode;
|
|
27
|
+
readonly output?: OutputNode;
|
|
22
28
|
}
|
|
23
29
|
/**
|
|
24
30
|
* @internal
|
|
@@ -26,6 +32,8 @@ export interface UpdateQueryNode extends OperationNode {
|
|
|
26
32
|
export declare const UpdateQueryNode: Readonly<{
|
|
27
33
|
is(node: OperationNode): node is UpdateQueryNode;
|
|
28
34
|
create(table: OperationNode, withNode?: WithNode): UpdateQueryNode;
|
|
35
|
+
createWithoutTable(): UpdateQueryNode;
|
|
29
36
|
cloneWithFromItems(updateQuery: UpdateQueryNode, fromItems: ReadonlyArray<OperationNode>): UpdateQueryNode;
|
|
30
37
|
cloneWithUpdates(updateQuery: UpdateQueryNode, updates: ReadonlyArray<ColumnUpdateNode>): UpdateQueryNode;
|
|
38
|
+
cloneWithLimit(updateQuery: UpdateQueryNode, limit: LimitNode): UpdateQueryNode;
|
|
31
39
|
}>;
|
|
@@ -17,6 +17,11 @@ exports.UpdateQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
17
17
|
...(withNode && { with: withNode }),
|
|
18
18
|
});
|
|
19
19
|
},
|
|
20
|
+
createWithoutTable() {
|
|
21
|
+
return (0, object_utils_js_1.freeze)({
|
|
22
|
+
kind: 'UpdateQueryNode',
|
|
23
|
+
});
|
|
24
|
+
},
|
|
20
25
|
cloneWithFromItems(updateQuery, fromItems) {
|
|
21
26
|
return (0, object_utils_js_1.freeze)({
|
|
22
27
|
...updateQuery,
|
|
@@ -33,4 +38,10 @@ exports.UpdateQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
33
38
|
: updates,
|
|
34
39
|
});
|
|
35
40
|
},
|
|
41
|
+
cloneWithLimit(updateQuery, limit) {
|
|
42
|
+
return (0, object_utils_js_1.freeze)({
|
|
43
|
+
...updateQuery,
|
|
44
|
+
limit,
|
|
45
|
+
});
|
|
46
|
+
},
|
|
36
47
|
});
|
|
@@ -9,5 +9,5 @@ export interface WhereNode extends OperationNode {
|
|
|
9
9
|
export declare const WhereNode: Readonly<{
|
|
10
10
|
is(node: OperationNode): node is WhereNode;
|
|
11
11
|
create(filter: OperationNode): WhereNode;
|
|
12
|
-
cloneWithOperation(whereNode: WhereNode, operator:
|
|
12
|
+
cloneWithOperation(whereNode: WhereNode, operator: "And" | "Or", operation: OperationNode): WhereNode;
|
|
13
13
|
}>;
|
|
@@ -18,4 +18,4 @@ export declare function parseValueBinaryOperationOrExpression(args: any[]): Oper
|
|
|
18
18
|
export declare function parseValueBinaryOperation(left: ReferenceExpression<any, any>, operator: BinaryOperatorExpression, right: OperandValueExpressionOrList<any, any, any>): BinaryOperationNode;
|
|
19
19
|
export declare function parseReferentialBinaryOperation(left: ReferenceExpression<any, any>, operator: BinaryOperatorExpression, right: OperandValueExpressionOrList<any, any, any>): BinaryOperationNode;
|
|
20
20
|
export declare function parseFilterObject(obj: Readonly<FilterObject<any, any>>, combinator: 'and' | 'or'): OperationNode;
|
|
21
|
-
export declare function parseFilterList(list: ReadonlyArray<OperationNodeSource | OperationNode>, combinator: 'and' | 'or'): OperationNode;
|
|
21
|
+
export declare function parseFilterList(list: ReadonlyArray<OperationNodeSource | OperationNode>, combinator: 'and' | 'or', withParens?: boolean): OperationNode;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseValueBinaryOperationOrExpression = parseValueBinaryOperationOrExpression;
|
|
4
|
+
exports.parseValueBinaryOperation = parseValueBinaryOperation;
|
|
5
|
+
exports.parseReferentialBinaryOperation = parseReferentialBinaryOperation;
|
|
6
|
+
exports.parseFilterObject = parseFilterObject;
|
|
7
|
+
exports.parseFilterList = parseFilterList;
|
|
4
8
|
const binary_operation_node_js_1 = require("../operation-node/binary-operation-node.js");
|
|
5
9
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
6
10
|
const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
|
|
@@ -20,25 +24,21 @@ function parseValueBinaryOperationOrExpression(args) {
|
|
|
20
24
|
}
|
|
21
25
|
throw new Error(`invalid arguments: ${JSON.stringify(args)}`);
|
|
22
26
|
}
|
|
23
|
-
exports.parseValueBinaryOperationOrExpression = parseValueBinaryOperationOrExpression;
|
|
24
27
|
function parseValueBinaryOperation(left, operator, right) {
|
|
25
28
|
if (isIsOperator(operator) && needsIsOperator(right)) {
|
|
26
29
|
return binary_operation_node_js_1.BinaryOperationNode.create((0, reference_parser_js_1.parseReferenceExpression)(left), parseOperator(operator), value_node_js_1.ValueNode.createImmediate(right));
|
|
27
30
|
}
|
|
28
31
|
return binary_operation_node_js_1.BinaryOperationNode.create((0, reference_parser_js_1.parseReferenceExpression)(left), parseOperator(operator), (0, value_parser_js_1.parseValueExpressionOrList)(right));
|
|
29
32
|
}
|
|
30
|
-
exports.parseValueBinaryOperation = parseValueBinaryOperation;
|
|
31
33
|
function parseReferentialBinaryOperation(left, operator, right) {
|
|
32
34
|
return binary_operation_node_js_1.BinaryOperationNode.create((0, reference_parser_js_1.parseReferenceExpression)(left), parseOperator(operator), (0, reference_parser_js_1.parseReferenceExpression)(right));
|
|
33
35
|
}
|
|
34
|
-
exports.parseReferentialBinaryOperation = parseReferentialBinaryOperation;
|
|
35
36
|
function parseFilterObject(obj, combinator) {
|
|
36
37
|
return parseFilterList(Object.entries(obj)
|
|
37
38
|
.filter(([, v]) => !(0, object_utils_js_1.isUndefined)(v))
|
|
38
39
|
.map(([k, v]) => parseValueBinaryOperation(k, needsIsOperator(v) ? 'is' : '=', v)), combinator);
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
-
function parseFilterList(list, combinator) {
|
|
41
|
+
function parseFilterList(list, combinator, withParens = true) {
|
|
42
42
|
const combine = combinator === 'and' ? and_node_js_1.AndNode.create : or_node_js_1.OrNode.create;
|
|
43
43
|
if (list.length === 0) {
|
|
44
44
|
return binary_operation_node_js_1.BinaryOperationNode.create(value_node_js_1.ValueNode.createImmediate(1), operator_node_js_1.OperatorNode.create('='), value_node_js_1.ValueNode.createImmediate(combinator === 'and' ? 1 : 0));
|
|
@@ -47,12 +47,11 @@ function parseFilterList(list, combinator) {
|
|
|
47
47
|
for (let i = 1; i < list.length; ++i) {
|
|
48
48
|
node = combine(node, toOperationNode(list[i]));
|
|
49
49
|
}
|
|
50
|
-
if (list.length > 1) {
|
|
50
|
+
if (list.length > 1 && withParens) {
|
|
51
51
|
return parens_node_js_1.ParensNode.create(node);
|
|
52
52
|
}
|
|
53
53
|
return node;
|
|
54
54
|
}
|
|
55
|
-
exports.parseFilterList = parseFilterList;
|
|
56
55
|
function isIsOperator(operator) {
|
|
57
56
|
return operator === 'is' || operator === 'is not';
|
|
58
57
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseDataTypeExpression =
|
|
3
|
+
exports.parseDataTypeExpression = parseDataTypeExpression;
|
|
4
4
|
const data_type_node_js_1 = require("../operation-node/data-type-node.js");
|
|
5
5
|
const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
|
|
6
6
|
function parseDataTypeExpression(dataType) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
if ((0, operation_node_source_js_1.isOperationNodeSource)(dataType)) {
|
|
8
|
+
return dataType.toOperationNode();
|
|
9
|
+
}
|
|
10
|
+
if ((0, data_type_node_js_1.isColumnDataType)(dataType)) {
|
|
11
|
+
return data_type_node_js_1.DataTypeNode.create(dataType);
|
|
12
|
+
}
|
|
13
|
+
throw new Error(`invalid column data type ${JSON.stringify(dataType)}`);
|
|
10
14
|
}
|
|
11
|
-
exports.parseDataTypeExpression = parseDataTypeExpression;
|