rawsql-ts 0.8.3-beta → 0.10.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +204 -438
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/SqlPrintToken.js +2 -0
- package/dist/esm/models/SqlPrintToken.js.map +1 -1
- package/dist/esm/models/ValueComponent.js +14 -13
- package/dist/esm/models/ValueComponent.js.map +1 -1
- package/dist/esm/parsers/SqlPrintTokenParser.js +22 -6
- package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/transformers/PostgreJsonQueryBuilder.js +215 -0
- package/dist/esm/transformers/PostgreJsonQueryBuilder.js.map +1 -0
- package/dist/esm/transformers/PostgresArrayEntityCteBuilder.js +231 -0
- package/dist/esm/transformers/PostgresArrayEntityCteBuilder.js.map +1 -0
- package/dist/esm/transformers/PostgresObjectEntityCteBuilder.js +283 -0
- package/dist/esm/transformers/PostgresObjectEntityCteBuilder.js.map +1 -0
- package/dist/esm/transformers/SelectableColumnCollector.js +4 -1
- package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -1
- package/dist/esm/transformers/SqlParamInjector.js +133 -0
- package/dist/esm/transformers/SqlParamInjector.js.map +1 -0
- package/dist/esm/transformers/SqlPrinter.js +9 -3
- package/dist/esm/transformers/SqlPrinter.js.map +1 -1
- package/dist/esm/transformers/UpstreamSelectQueryFinder.js +10 -6
- package/dist/esm/transformers/UpstreamSelectQueryFinder.js.map +1 -1
- package/dist/esm/types/index.d.ts +2 -0
- package/dist/esm/types/models/SqlPrintToken.d.ts +2 -0
- package/dist/esm/types/models/ValueComponent.d.ts +3 -3
- package/dist/esm/types/transformers/PostgreJsonQueryBuilder.d.ts +78 -0
- package/dist/esm/types/transformers/PostgresArrayEntityCteBuilder.d.ts +97 -0
- package/dist/esm/types/transformers/PostgresObjectEntityCteBuilder.d.ts +140 -0
- package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +6 -1
- package/dist/esm/types/transformers/SqlParamInjector.d.ts +36 -0
- package/dist/esm/types/transformers/UpstreamSelectQueryFinder.d.ts +6 -3
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/models/SqlPrintToken.d.ts +2 -0
- package/dist/models/SqlPrintToken.js +2 -0
- package/dist/models/SqlPrintToken.js.map +1 -1
- package/dist/models/ValueComponent.d.ts +3 -3
- package/dist/models/ValueComponent.js +14 -13
- package/dist/models/ValueComponent.js.map +1 -1
- package/dist/parsers/SelectQueryParser.js +3 -14
- package/dist/parsers/SelectQueryParser.js.map +1 -1
- package/dist/parsers/SqlPrintTokenParser.js +23 -7
- package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/transformers/PostgreJsonQueryBuilder.d.ts +78 -0
- package/dist/transformers/PostgreJsonQueryBuilder.js +219 -0
- package/dist/transformers/PostgreJsonQueryBuilder.js.map +1 -0
- package/dist/transformers/PostgresArrayEntityCteBuilder.d.ts +97 -0
- package/dist/transformers/PostgresArrayEntityCteBuilder.js +235 -0
- package/dist/transformers/PostgresArrayEntityCteBuilder.js.map +1 -0
- package/dist/transformers/PostgresObjectEntityCteBuilder.d.ts +140 -0
- package/dist/transformers/PostgresObjectEntityCteBuilder.js +287 -0
- package/dist/transformers/PostgresObjectEntityCteBuilder.js.map +1 -0
- package/dist/transformers/SelectableColumnCollector.d.ts +6 -1
- package/dist/transformers/SelectableColumnCollector.js +4 -1
- package/dist/transformers/SelectableColumnCollector.js.map +1 -1
- package/dist/transformers/SqlFormatter.js +6 -1
- package/dist/transformers/SqlFormatter.js.map +1 -1
- package/dist/transformers/SqlParamInjector.d.ts +36 -0
- package/dist/transformers/SqlParamInjector.js +137 -0
- package/dist/transformers/SqlParamInjector.js.map +1 -0
- package/dist/transformers/SqlPrinter.js +9 -3
- package/dist/transformers/SqlPrinter.js.map +1 -1
- package/dist/transformers/UpstreamSelectQueryFinder.d.ts +6 -3
- package/dist/transformers/UpstreamSelectQueryFinder.js +10 -6
- package/dist/transformers/UpstreamSelectQueryFinder.js.map +1 -1
- package/package.json +1 -1
- package/dist/esm/types/utils/SqlStaticAnalyzer.d.ts +0 -0
- package/dist/esm/utils/SqlStaticAnalyzer.js +0 -2
- package/dist/esm/utils/SqlStaticAnalyzer.js.map +0 -1
- package/dist/utils/SqlStaticAnalyzer.d.ts +0 -0
- package/dist/utils/SqlStaticAnalyzer.js +0 -2
- package/dist/utils/SqlStaticAnalyzer.js.map +0 -1
@@ -0,0 +1,283 @@
|
|
1
|
+
import { CommonTable, SourceAliasExpression, SelectItem, SelectClause, FromClause, SourceExpression, TableSource } from '../models/Clause';
|
2
|
+
import { SimpleSelectQuery } from '../models/SimpleSelectQuery';
|
3
|
+
import { IdentifierString, ColumnReference, FunctionCall, ValueList, LiteralValue, BinaryExpression, CaseExpression, SwitchCaseArgument, CaseKeyValuePair, RawString } from '../models/ValueComponent';
|
4
|
+
/**
|
5
|
+
* PostgreSQL-specific builder for creating CTEs for object entities (object relationships).
|
6
|
+
* This class handles the creation of CTEs that build JSON/JSONB objects for object entities,
|
7
|
+
* processing them from the deepest level up to ensure proper dependency ordering.
|
8
|
+
*
|
9
|
+
* Features:
|
10
|
+
* - Depth-based CTE naming (cte_object_depth_N)
|
11
|
+
* - NULL handling for entity columns
|
12
|
+
* - JSONB/JSON object construction
|
13
|
+
* - Hierarchical processing of nested objects
|
14
|
+
*
|
15
|
+
* Why depth calculation is critical:
|
16
|
+
* 1. Object entities can be nested at multiple levels. We must process the deepest
|
17
|
+
* (most distant) objects first to ensure their JSON representations are available
|
18
|
+
* when building their parent entities.
|
19
|
+
* 2. Object entity processing is essentially a column compression operation. Entities
|
20
|
+
* at the same depth level can be processed simultaneously since they don't depend
|
21
|
+
* on each other.
|
22
|
+
*
|
23
|
+
* Example hierarchy:
|
24
|
+
* Order (root, depth 0)
|
25
|
+
* └─ Customer (depth 1)
|
26
|
+
* └─ Address (depth 2)
|
27
|
+
* └─ Shipping (depth 1)
|
28
|
+
* └─ Carrier (depth 2)
|
29
|
+
*
|
30
|
+
* Processing order: depth 2 → depth 1 → depth 0
|
31
|
+
*/
|
32
|
+
export class PostgresObjectEntityCteBuilder {
|
33
|
+
buildObjectEntityCtes(initialCte, allEntities, mapping) {
|
34
|
+
const ctes = [initialCte];
|
35
|
+
let previousCteAlias = initialCte.aliasExpression.table.name; // Collect and sort object entities by depth
|
36
|
+
const objectEntityInfos = this.collectAndSortObjectEntities(mapping, allEntities);
|
37
|
+
// Group entities by depth
|
38
|
+
const entitiesByDepth = this.groupEntitiesByDepth(objectEntityInfos);
|
39
|
+
// Process each depth level, starting from the deepest
|
40
|
+
const depths = Array.from(entitiesByDepth.keys()).sort((a, b) => b - a);
|
41
|
+
for (const depth of depths) {
|
42
|
+
const entitiesAtDepth = entitiesByDepth.get(depth);
|
43
|
+
const cteAlias = `${PostgresObjectEntityCteBuilder.CTE_OBJECT_PREFIX}${depth}`;
|
44
|
+
// Build CTE for all entities at this depth
|
45
|
+
const cte = this.buildDepthCte(entitiesAtDepth, previousCteAlias, cteAlias, mapping, allEntities);
|
46
|
+
ctes.push(cte);
|
47
|
+
previousCteAlias = cteAlias;
|
48
|
+
}
|
49
|
+
return { ctes, lastCteAlias: previousCteAlias };
|
50
|
+
} /**
|
51
|
+
* Collect all object entities and calculate their depth from root.
|
52
|
+
*
|
53
|
+
* Depth calculation is crucial because:
|
54
|
+
* - It determines the processing order (deepest first)
|
55
|
+
* - It ensures dependencies are resolved before an entity is processed
|
56
|
+
* - It allows parallel processing of entities at the same depth level
|
57
|
+
*
|
58
|
+
* @param mapping The JSON mapping configuration
|
59
|
+
* @param allEntities Map of all entities in the mapping
|
60
|
+
* @returns Array of object entity information with calculated depths
|
61
|
+
*/
|
62
|
+
collectAndSortObjectEntities(mapping, allEntities) {
|
63
|
+
const objectInfos = [];
|
64
|
+
// Helper function to calculate actual object nesting depth for a given OBJECT entity
|
65
|
+
const calculateActualObjectNestingDepth = (entityIdOfObject) => {
|
66
|
+
const initialEntity = allEntities.get(entityIdOfObject);
|
67
|
+
if (!initialEntity) {
|
68
|
+
throw new Error(`Entity ${entityIdOfObject} not found for depth calculation.`);
|
69
|
+
}
|
70
|
+
// If the object itself is root, its depth is 0. (This function should ideally be called for nested entities, not the root itself as a "parent CTE" subject)
|
71
|
+
if (initialEntity.isRoot)
|
72
|
+
return 0;
|
73
|
+
// If the object is not root and has no parentId, it's considered a top-level object, depth 1.
|
74
|
+
if (!initialEntity.parentId) {
|
75
|
+
return 1;
|
76
|
+
}
|
77
|
+
let currentParentIdInHierarchy = initialEntity.parentId;
|
78
|
+
let calculatedObjectDepth = 0;
|
79
|
+
const visitedInPath = new Set();
|
80
|
+
visitedInPath.add(entityIdOfObject); // Add the starting object itself to detect cycles
|
81
|
+
while (currentParentIdInHierarchy) {
|
82
|
+
if (visitedInPath.has(currentParentIdInHierarchy)) {
|
83
|
+
throw new Error(`Circular dependency detected: ${currentParentIdInHierarchy} already visited in path for ${entityIdOfObject}`);
|
84
|
+
}
|
85
|
+
visitedInPath.add(currentParentIdInHierarchy);
|
86
|
+
const parentEntityData = allEntities.get(currentParentIdInHierarchy);
|
87
|
+
if (!parentEntityData) {
|
88
|
+
throw new Error(`Parent entity ${currentParentIdInHierarchy} not found during depth calculation for ${entityIdOfObject}`);
|
89
|
+
}
|
90
|
+
let parentIsConsideredAnObjectForNesting = false;
|
91
|
+
if (parentEntityData.isRoot) {
|
92
|
+
parentIsConsideredAnObjectForNesting = true; // Root counts as an object ancestor
|
93
|
+
}
|
94
|
+
else {
|
95
|
+
// For non-root parents, find their definition in nestedEntities to check their type
|
96
|
+
const parentDefinition = mapping.nestedEntities.find(ne => ne.id === currentParentIdInHierarchy);
|
97
|
+
if (parentDefinition) {
|
98
|
+
if (parentDefinition.relationshipType === "object") {
|
99
|
+
parentIsConsideredAnObjectForNesting = true;
|
100
|
+
}
|
101
|
+
// If parentDefinition.relationshipType === "array", it's not an object ancestor for depth counting
|
102
|
+
}
|
103
|
+
else {
|
104
|
+
// This implies currentParentIdInHierarchy refers to an entity not defined as root or in nestedEntities
|
105
|
+
// This should ideally not happen with a consistent mapping.
|
106
|
+
throw new Error(`Parent entity ${currentParentIdInHierarchy} (ancestor of ${entityIdOfObject}) has no definition in mapping.nestedEntities and is not root.`);
|
107
|
+
}
|
108
|
+
}
|
109
|
+
if (parentIsConsideredAnObjectForNesting) {
|
110
|
+
calculatedObjectDepth++;
|
111
|
+
}
|
112
|
+
if (parentEntityData.isRoot) {
|
113
|
+
break; // Stop when the root is processed as the highest object ancestor
|
114
|
+
}
|
115
|
+
currentParentIdInHierarchy = parentEntityData.parentId; // Move to the next ancestor
|
116
|
+
}
|
117
|
+
return calculatedObjectDepth;
|
118
|
+
};
|
119
|
+
mapping.nestedEntities.forEach(nestedEntity => {
|
120
|
+
if (nestedEntity.relationshipType === "object") {
|
121
|
+
const entity = allEntities.get(nestedEntity.id);
|
122
|
+
// Ensure we don't process the root entity itself as a "parent" CTE,
|
123
|
+
// and that the entity actually exists.
|
124
|
+
if (entity && !entity.isRoot) {
|
125
|
+
objectInfos.push({
|
126
|
+
entity,
|
127
|
+
depth: calculateActualObjectNestingDepth(nestedEntity.id)
|
128
|
+
});
|
129
|
+
}
|
130
|
+
}
|
131
|
+
});
|
132
|
+
// The existing grouping and sorting by depth (b - a for descending) should still work correctly
|
133
|
+
// as it processes deepest levels first, regardless of the absolute depth numbers.
|
134
|
+
return objectInfos;
|
135
|
+
}
|
136
|
+
/**
|
137
|
+
* Group entities by their depth level.
|
138
|
+
*
|
139
|
+
* Grouping by depth allows us to:
|
140
|
+
* - Process all entities at the same level in a single CTE
|
141
|
+
* - Optimize query performance by reducing the number of CTEs
|
142
|
+
* - Maintain clear dependency ordering
|
143
|
+
*
|
144
|
+
* @param parentInfos Array of parent entity information with depths
|
145
|
+
* @returns Map of depth level to entities at that depth
|
146
|
+
*/ groupEntitiesByDepth(objectInfos) {
|
147
|
+
const entitiesByDepth = new Map();
|
148
|
+
objectInfos.forEach(info => {
|
149
|
+
const depth = info.depth;
|
150
|
+
if (!entitiesByDepth.has(depth)) {
|
151
|
+
entitiesByDepth.set(depth, []);
|
152
|
+
}
|
153
|
+
entitiesByDepth.get(depth).push(info);
|
154
|
+
});
|
155
|
+
return entitiesByDepth;
|
156
|
+
}
|
157
|
+
/**
|
158
|
+
* Build a CTE that processes all entities at a specific depth level
|
159
|
+
*/
|
160
|
+
buildDepthCte(entitiesAtDepth, previousCteAlias, cteAlias, mapping, allEntities) {
|
161
|
+
// Build SELECT items: * and JSON objects for all entities at this depth
|
162
|
+
const selectItems = [
|
163
|
+
// Select all columns from previous CTE
|
164
|
+
new SelectItem(new ColumnReference(null, new IdentifierString(PostgresObjectEntityCteBuilder.WILDCARD_COLUMN)))
|
165
|
+
];
|
166
|
+
// Process each entity at this depth
|
167
|
+
for (const { entity } of entitiesAtDepth) {
|
168
|
+
const jsonColumn = this.buildEntityJsonColumn(entity, mapping, allEntities);
|
169
|
+
selectItems.push(jsonColumn);
|
170
|
+
}
|
171
|
+
// Create CTE that selects from previous CTE
|
172
|
+
const cteSelect = new SimpleSelectQuery({
|
173
|
+
selectClause: new SelectClause(selectItems),
|
174
|
+
fromClause: new FromClause(new SourceExpression(new TableSource(null, new IdentifierString(previousCteAlias)), null), null)
|
175
|
+
});
|
176
|
+
return new CommonTable(cteSelect, new SourceAliasExpression(cteAlias, null), null);
|
177
|
+
}
|
178
|
+
/**
|
179
|
+
* Build JSON column for a single entity with NULL handling
|
180
|
+
*/
|
181
|
+
buildEntityJsonColumn(entity, mapping, allEntities) {
|
182
|
+
// Build JSON object arguments and NULL checks
|
183
|
+
const { jsonObjectArgs, nullChecks } = this.prepareEntityColumns(entity);
|
184
|
+
// Add child object relationships
|
185
|
+
this.addChildObjectRelationships(entity, jsonObjectArgs, mapping, allEntities);
|
186
|
+
// Create JSON object
|
187
|
+
const jsonObject = this.createJsonObject(jsonObjectArgs, mapping.useJsonb);
|
188
|
+
// Build NULL condition and CASE expression
|
189
|
+
const nullCondition = this.buildNullCondition(nullChecks);
|
190
|
+
const caseExpr = this.createCaseExpression(nullCondition, jsonObject);
|
191
|
+
// Add JSON object as named column
|
192
|
+
const jsonColumnName = `${entity.name.toLowerCase()}${PostgresObjectEntityCteBuilder.JSON_COLUMN_SUFFIX}`;
|
193
|
+
return new SelectItem(caseExpr, jsonColumnName);
|
194
|
+
}
|
195
|
+
/**
|
196
|
+
* Prepare entity columns and NULL checks.
|
197
|
+
*
|
198
|
+
* This method extracts column data and creates NULL checks for each column.
|
199
|
+
* The NULL checking is essential for handling outer joins correctly.
|
200
|
+
*
|
201
|
+
* In outer join scenarios, when there's no matching row in the joined table,
|
202
|
+
* all columns from that table will be NULL. Instead of creating an empty object
|
203
|
+
* with all NULL properties (e.g., {id: null, name: null, email: null}),
|
204
|
+
* we want to represent the absence of the entity as NULL itself.
|
205
|
+
*
|
206
|
+
* This ensures cleaner JSON output where missing relationships are represented
|
207
|
+
* as NULL rather than objects with all NULL fields.
|
208
|
+
*
|
209
|
+
* @param entity The entity whose columns are being processed
|
210
|
+
* @returns Object containing arrays of JSON object arguments and NULL check conditions
|
211
|
+
*/
|
212
|
+
prepareEntityColumns(entity) {
|
213
|
+
const jsonObjectArgs = [];
|
214
|
+
const nullChecks = [];
|
215
|
+
Object.entries(entity.columns).forEach(([jsonKey, sqlColumn]) => {
|
216
|
+
jsonObjectArgs.push(new LiteralValue(jsonKey));
|
217
|
+
jsonObjectArgs.push(new ColumnReference(null, new IdentifierString(sqlColumn)));
|
218
|
+
// Collect NULL checks for each column
|
219
|
+
nullChecks.push(new BinaryExpression(new ColumnReference(null, new IdentifierString(sqlColumn)), "is", new LiteralValue(null)));
|
220
|
+
});
|
221
|
+
return { jsonObjectArgs, nullChecks };
|
222
|
+
}
|
223
|
+
/**
|
224
|
+
* Add child object relationships to JSON object arguments.
|
225
|
+
*
|
226
|
+
* This method processes nested object-type entities that are direct children of the current entity.
|
227
|
+
* For each child entity, it adds the property name and corresponding JSON column reference
|
228
|
+
* to the arguments array that will be used to build the parent's JSON object.
|
229
|
+
*
|
230
|
+
* The child JSON columns are expected to already exist in the data source (created by deeper
|
231
|
+
* level CTEs), as we process from the deepest level up to the root.
|
232
|
+
*
|
233
|
+
* Note: In this context, "child" refers to entities that have an object relationship (0..1)
|
234
|
+
* with their parent. From a data perspective, these are typically entities referenced via
|
235
|
+
* foreign keys, representing "parent" entities in traditional database terminology.
|
236
|
+
*
|
237
|
+
* @param entity The current entity being processed
|
238
|
+
* @param jsonObjectArgs Array to which JSON object arguments will be added
|
239
|
+
* @param mapping The JSON mapping configuration
|
240
|
+
* @param allEntities Map of all entities in the mapping
|
241
|
+
*/
|
242
|
+
addChildObjectRelationships(entity, jsonObjectArgs, mapping, allEntities) {
|
243
|
+
const childEntities = mapping.nestedEntities.filter(ne => ne.parentId === entity.id && ne.relationshipType === "object");
|
244
|
+
childEntities.forEach(childEntity => {
|
245
|
+
const child = allEntities.get(childEntity.id);
|
246
|
+
if (child) {
|
247
|
+
jsonObjectArgs.push(new LiteralValue(childEntity.propertyName));
|
248
|
+
const jsonColumnName = `${child.name.toLowerCase()}${PostgresObjectEntityCteBuilder.JSON_COLUMN_SUFFIX}`;
|
249
|
+
jsonObjectArgs.push(new ColumnReference(null, new IdentifierString(jsonColumnName)));
|
250
|
+
}
|
251
|
+
});
|
252
|
+
}
|
253
|
+
/**
|
254
|
+
* Create JSON object function call
|
255
|
+
*/
|
256
|
+
createJsonObject(args, useJsonb = false) {
|
257
|
+
const jsonBuildFunction = useJsonb ? "jsonb_build_object" : "json_build_object";
|
258
|
+
return new FunctionCall(null, new RawString(jsonBuildFunction), new ValueList(args), null);
|
259
|
+
}
|
260
|
+
/**
|
261
|
+
* Build NULL condition from NULL checks
|
262
|
+
*/
|
263
|
+
buildNullCondition(nullChecks) {
|
264
|
+
return nullChecks.reduce((acc, check) => acc ? new BinaryExpression(acc, "and", check) : check);
|
265
|
+
}
|
266
|
+
/**
|
267
|
+
* Create CASE expression with NULL handling
|
268
|
+
*/
|
269
|
+
createCaseExpression(nullCondition, jsonObject) {
|
270
|
+
return new CaseExpression(null, new SwitchCaseArgument([new CaseKeyValuePair(nullCondition, new LiteralValue(null))], jsonObject // ELSE return the JSON object
|
271
|
+
));
|
272
|
+
}
|
273
|
+
}
|
274
|
+
PostgresObjectEntityCteBuilder.JSON_COLUMN_SUFFIX = '_json';
|
275
|
+
PostgresObjectEntityCteBuilder.CTE_OBJECT_PREFIX = 'cte_object_depth_';
|
276
|
+
PostgresObjectEntityCteBuilder.WILDCARD_COLUMN = '*'; /**
|
277
|
+
* Build CTEs for all object entities in the correct dependency order
|
278
|
+
* @param initialCte The starting CTE containing all raw data
|
279
|
+
* @param allEntities Map of all entities in the mapping
|
280
|
+
* @param mapping The JSON mapping configuration
|
281
|
+
* @returns Array of CTEs and the alias of the last CTE created
|
282
|
+
*/
|
283
|
+
//# sourceMappingURL=PostgresObjectEntityCteBuilder.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"PostgresObjectEntityCteBuilder.js","sourceRoot":"","sources":["../../../src/transformers/PostgresObjectEntityCteBuilder.ts"],"names":[],"mappings":"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"}
|
@@ -37,8 +37,10 @@ export class SelectableColumnCollector {
|
|
37
37
|
* @param {TableColumnResolver | null} [tableColumnResolver=null] - The resolver used to resolve column references to their respective tables.
|
38
38
|
* @param {boolean} [includeWildCard=false] - If true, wildcard columns (e.g., `*`) are included in the collection.
|
39
39
|
* @param {DuplicateDetectionMode} [duplicateDetection=DuplicateDetectionMode.ColumnNameOnly] - Specifies the duplicate detection mode: 'columnNameOnly' (default, only column name is used), or 'fullName' (table name + column name).
|
40
|
+
* @param {Object} [options={}] - Additional options for the collector.
|
41
|
+
* @param {boolean} [options.ignoreCaseAndUnderscore=false] - If true, column names are compared without considering case and underscores.
|
40
42
|
*/
|
41
|
-
constructor(tableColumnResolver, includeWildCard = false, duplicateDetection = DuplicateDetectionMode.ColumnNameOnly) {
|
43
|
+
constructor(tableColumnResolver, includeWildCard = false, duplicateDetection = DuplicateDetectionMode.ColumnNameOnly, options) {
|
42
44
|
this.selectValues = [];
|
43
45
|
this.visitedNodes = new Set();
|
44
46
|
this.isRootVisit = true;
|
@@ -49,6 +51,7 @@ export class SelectableColumnCollector {
|
|
49
51
|
this.commonTableCollector = new CTECollector();
|
50
52
|
this.commonTables = [];
|
51
53
|
this.duplicateDetection = duplicateDetection;
|
54
|
+
this.options = options || {};
|
52
55
|
this.handlers = new Map();
|
53
56
|
// Main entry point is the SimpleSelectQuery
|
54
57
|
this.handlers.set(SimpleSelectQuery.kind, (expr) => this.visitSimpleSelectQuery(expr));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SelectableColumnCollector.js","sourceRoot":"","sources":["../../../src/transformers/SelectableColumnCollector.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"SelectableColumnCollector.js","sourceRoot":"","sources":["../../../src/transformers/SelectableColumnCollector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAN,IAAY,sBAaX;AAbD,WAAY,sBAAsB;IAC9B;;;;OAIG;IACH,2DAAiC,CAAA;IACjC;;;;OAIG;IACH,+CAAqB,CAAA;AACzB,CAAC,EAbW,sBAAsB,KAAtB,sBAAsB,QAajC;AACD,OAAO,EAA0B,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAA6B,YAAY,EAAE,eAAe,EAA6D,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChV,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAe,eAAe,EAAE,eAAe,EAAkB,SAAS,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAChQ,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D;;;;;;;GAOG;AACH,MAAM,OAAO,yBAAyB;IAYlC;;;;;;;;OAQG;IACH,YACI,mBAAgD,EAChD,kBAA2B,KAAK,EAChC,qBAA6C,sBAAsB,CAAC,cAAc,EAClF,OAA+C;QAvB3C,iBAAY,GAA8C,EAAE,CAAC;QAC7D,iBAAY,GAAsB,IAAI,GAAG,EAAE,CAAC;QAC5C,gBAAW,GAAY,IAAI,CAAC;QAC5B,wBAAmB,GAA+B,IAAI,CAAC;QAEvD,iBAAY,GAAkB,EAAE,CAAC;QAoBrC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,IAAI,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QAE7B,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;QAEtD,4CAA4C;QAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAyB,CAAC,CAAC,CAAC;QAE5G,qEAAqE;QACrE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAoB,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAkB,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAmB,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAqB,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAoB,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAqB,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAyB,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAmB,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAoB,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAmB,CAAC,CAAC,CAAC;QAE1F,mCAAmC;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAoB,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAuB,CAAC,CAAC,CAAC;QAEtG,4DAA4D;QAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAuB,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAwB,CAAC,CAAC,CAAC;QACzG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAuB,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAoB,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAuB,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAsB,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAsB,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAyB,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAuB,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAiB,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAyB,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAA6B,CAAC,CAAC,CAAC;QACxH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAyB,CAAC,CAAC,CAAC;IAChH,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAEM,OAAO,CAAC,GAAiB;QAC5B,4DAA4D;QAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,yBAAyB;QACvC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK;QACT,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAAC,IAAY,EAAE,KAAqB;QAC9D,IAAI,IAAI,CAAC,kBAAkB,KAAK,sBAAsB,CAAC,cAAc,EAAE,CAAC;YACpE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,kBAAkB,KAAK,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YACrE,wDAAwD;YACxD,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IAAI,KAAK,IAAI,OAAQ,KAAa,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;gBAC7D,SAAS,GAAI,KAAa,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;YACpD,CAAC;YACD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC/B,IAAI,SAAS,GAAG,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,KAAK,IAAI,OAAQ,IAAI,CAAC,KAAa,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;oBACvE,SAAS,GAAI,IAAI,CAAC,KAAa,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;gBACzD,CAAC;gBACD,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpE,OAAO,OAAO,KAAK,GAAG,CAAC;YAC3B,CAAC,CAAC,EAAE,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,GAAiB;QAC1B,sDAAsD;QACtD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,CAAC,GAAG,YAAY,iBAAiB,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QAED,sDAAsD;QACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE3D,IAAI,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;gBAAS,CAAC;YACP,8DAA8D;YAC9D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC5B,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,SAAS,CAAC,GAAiB;QAC/B,wEAAwE;QACxE,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO;QACX,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,CAAC;YACb,OAAO;QACX,CAAC;QAED,8DAA8D;IAClE,CAAC;IAED;;QAEI;IACI,sBAAsB,CAAC,KAAwB;QACnD,yDAAyD;QACzD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACrB,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACnB,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACrB,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACrB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC3C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACrB,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,oEAAoE;IACxE,CAAC;IAED,kBAAkB;IACV,iBAAiB,CAAC,MAAoB;QAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,MAAkB;QACtC,uBAAuB;QACvB,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxF,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAC9B,qDAAqD;YACrD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,MAAmB;QACxC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,MAAqB;QAC5C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACL,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,MAAoB;QAC1C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,MAAqB;QAC5C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACL,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,MAAyB;QACpD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAEO,0BAA0B,CAAC,IAA2B;QAC1D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,MAAmB;QACxC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,MAAoB;QACrC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,MAAmB;QACxC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,YAA0B;QAChD,2BAA2B;QAC3B,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YACzB,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,eAAgC;QACzD,wCAAwC;QACxC,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC;YAC5B,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAED,2BAA2B;IACnB,oBAAoB,CAAC,SAA0B;QACnD,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClE,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/B,OAAO;QACX,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAEO,qBAAqB,CAAC,IAAsB;QAChD,qCAAqC;QACrC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,IAAqB;QAC9C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,IAAkB;QACxC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,IAAqB;QAC9C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,IAAoB;QAC5C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,IAAoB;QAC5C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,IAAuB;QAClD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,IAAqB;QAC9C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,IAAe;QAClC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,MAAyB;QACpD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACJ"}
|
@@ -0,0 +1,133 @@
|
|
1
|
+
import { SelectableColumnCollector } from "./SelectableColumnCollector";
|
2
|
+
import { BinaryExpression, FunctionCall, ParameterExpression, ParenExpression, ValueList } from "../models/ValueComponent";
|
3
|
+
import { UpstreamSelectQueryFinder } from "./UpstreamSelectQueryFinder";
|
4
|
+
import { SelectQueryParser } from "../parsers/SelectQueryParser";
|
5
|
+
/**
|
6
|
+
* SqlParamInjector injects state parameters into a SelectQuery model,
|
7
|
+
* creating WHERE conditions and setting parameter values.
|
8
|
+
*/
|
9
|
+
export class SqlParamInjector {
|
10
|
+
constructor(optionsOrResolver, options) {
|
11
|
+
// Type-check to decide which argument was provided
|
12
|
+
if (typeof optionsOrResolver === 'function') {
|
13
|
+
this.tableColumnResolver = optionsOrResolver;
|
14
|
+
this.options = options || {};
|
15
|
+
}
|
16
|
+
else {
|
17
|
+
this.tableColumnResolver = undefined;
|
18
|
+
this.options = optionsOrResolver || {};
|
19
|
+
}
|
20
|
+
}
|
21
|
+
/**
|
22
|
+
* Injects parameters as WHERE conditions into the given query model.
|
23
|
+
* @param query The SelectQuery to modify
|
24
|
+
* @param state A record of parameter names and values
|
25
|
+
* @returns The modified SelectQuery
|
26
|
+
*/
|
27
|
+
inject(query, state) {
|
28
|
+
// Convert string query to SimpleSelectQuery using SelectQueryParser if needed
|
29
|
+
if (typeof query === 'string') {
|
30
|
+
query = SelectQueryParser.parse(query);
|
31
|
+
}
|
32
|
+
// Pass tableColumnResolver to finder and collector
|
33
|
+
const finder = new UpstreamSelectQueryFinder(this.tableColumnResolver, this.options);
|
34
|
+
const collector = new SelectableColumnCollector(this.tableColumnResolver);
|
35
|
+
// Normalization is handled locally below.
|
36
|
+
const normalize = (s) => this.options.ignoreCaseAndUnderscore ? s.toLowerCase().replace(/_/g, '') : s;
|
37
|
+
const allowedOps = ['min', 'max', 'like', 'in', 'any', '=', '<', '>', '!=', '<>', '<=', '>='];
|
38
|
+
for (const [name, stateValue] of Object.entries(state)) {
|
39
|
+
// skip undefined values
|
40
|
+
if (stateValue === undefined)
|
41
|
+
continue;
|
42
|
+
const queries = finder.find(query, name);
|
43
|
+
if (queries.length === 0) {
|
44
|
+
throw new Error(`Column '${name}' not found in query`);
|
45
|
+
}
|
46
|
+
for (const q of queries) {
|
47
|
+
const columns = collector.collect(q);
|
48
|
+
const entry = columns.find(item => normalize(item.name) === normalize(name));
|
49
|
+
if (!entry) {
|
50
|
+
throw new Error(`Column '${name}' not found in query`);
|
51
|
+
}
|
52
|
+
const columnRef = entry.value;
|
53
|
+
// if object, validate its keys
|
54
|
+
if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && Object.getPrototypeOf(stateValue) === Object.prototype) {
|
55
|
+
validateOperators(stateValue, allowedOps, name);
|
56
|
+
}
|
57
|
+
if (stateValue === null ||
|
58
|
+
typeof stateValue !== 'object' ||
|
59
|
+
Array.isArray(stateValue) ||
|
60
|
+
stateValue instanceof Date) {
|
61
|
+
injectSimpleCondition(q, columnRef, name, stateValue);
|
62
|
+
}
|
63
|
+
else {
|
64
|
+
injectComplexConditions(q, columnRef, name, stateValue);
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
68
|
+
function validateOperators(stateValue, allowedOps, name) {
|
69
|
+
Object.keys(stateValue).forEach(op => {
|
70
|
+
if (!allowedOps.includes(op)) {
|
71
|
+
throw new Error(`Unsupported operator '${op}' for state key '${name}'`);
|
72
|
+
}
|
73
|
+
});
|
74
|
+
}
|
75
|
+
function injectSimpleCondition(q, columnRef, name, stateValue) {
|
76
|
+
const paramExpr = new ParameterExpression(name, stateValue);
|
77
|
+
q.appendWhere(new BinaryExpression(columnRef, "=", paramExpr));
|
78
|
+
}
|
79
|
+
function injectComplexConditions(q, columnRef, name, stateValue) {
|
80
|
+
if ('=' in stateValue) {
|
81
|
+
const paramEq = new ParameterExpression(name, stateValue['=']);
|
82
|
+
q.appendWhere(new BinaryExpression(columnRef, "=", paramEq));
|
83
|
+
}
|
84
|
+
if ('min' in stateValue) {
|
85
|
+
const paramMin = new ParameterExpression(name + "_min", stateValue.min);
|
86
|
+
q.appendWhere(new BinaryExpression(columnRef, ">=", paramMin));
|
87
|
+
}
|
88
|
+
if ('max' in stateValue) {
|
89
|
+
const paramMax = new ParameterExpression(name + "_max", stateValue.max);
|
90
|
+
q.appendWhere(new BinaryExpression(columnRef, "<=", paramMax));
|
91
|
+
}
|
92
|
+
if ('like' in stateValue) {
|
93
|
+
const paramLike = new ParameterExpression(name + "_like", stateValue.like);
|
94
|
+
q.appendWhere(new BinaryExpression(columnRef, "like", paramLike));
|
95
|
+
}
|
96
|
+
if ('in' in stateValue) {
|
97
|
+
const arr = stateValue['in'];
|
98
|
+
const prms = arr.map((v, i) => new ParameterExpression(`${name}_in_${i}`, v));
|
99
|
+
q.appendWhere(new BinaryExpression(columnRef, "in", new ParenExpression(new ValueList(prms))));
|
100
|
+
}
|
101
|
+
if ('any' in stateValue) {
|
102
|
+
const paramAny = new ParameterExpression(name + "_any", stateValue.any);
|
103
|
+
q.appendWhere(new BinaryExpression(columnRef, "=", new FunctionCall(null, "any", paramAny, null)));
|
104
|
+
}
|
105
|
+
if ('<' in stateValue) {
|
106
|
+
const paramLT = new ParameterExpression(name + "_lt", stateValue['<']);
|
107
|
+
q.appendWhere(new BinaryExpression(columnRef, "<", paramLT));
|
108
|
+
}
|
109
|
+
if ('>' in stateValue) {
|
110
|
+
const paramGT = new ParameterExpression(name + "_gt", stateValue['>']);
|
111
|
+
q.appendWhere(new BinaryExpression(columnRef, ">", paramGT));
|
112
|
+
}
|
113
|
+
if ('!=' in stateValue) {
|
114
|
+
const paramNEQ = new ParameterExpression(name + "_neq", stateValue['!=']);
|
115
|
+
q.appendWhere(new BinaryExpression(columnRef, "!=", paramNEQ));
|
116
|
+
}
|
117
|
+
if ('<>' in stateValue) {
|
118
|
+
const paramNE = new ParameterExpression(name + "_ne", stateValue['<>']);
|
119
|
+
q.appendWhere(new BinaryExpression(columnRef, "<>", paramNE));
|
120
|
+
}
|
121
|
+
if ('<=' in stateValue) {
|
122
|
+
const paramLE = new ParameterExpression(name + "_le", stateValue['<=']);
|
123
|
+
q.appendWhere(new BinaryExpression(columnRef, "<=", paramLE));
|
124
|
+
}
|
125
|
+
if ('>=' in stateValue) {
|
126
|
+
const paramGE = new ParameterExpression(name + "_ge", stateValue['>=']);
|
127
|
+
q.appendWhere(new BinaryExpression(columnRef, ">=", paramGE));
|
128
|
+
}
|
129
|
+
}
|
130
|
+
return query;
|
131
|
+
}
|
132
|
+
}
|
133
|
+
//# sourceMappingURL=SqlParamInjector.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SqlParamInjector.js","sourceRoot":"","sources":["../../../src/transformers/SqlParamInjector.ts"],"names":[],"mappings":"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"}
|
@@ -32,9 +32,15 @@ export class SqlPrinter {
|
|
32
32
|
SqlPrintTokenContainerType.LimitClause,
|
33
33
|
SqlPrintTokenContainerType.OffsetClause,
|
34
34
|
SqlPrintTokenContainerType.SubQuerySource,
|
35
|
-
SqlPrintTokenContainerType.BinarySelectQueryOperator,
|
36
|
-
SqlPrintTokenContainerType.
|
37
|
-
SqlPrintTokenContainerType.
|
35
|
+
SqlPrintTokenContainerType.BinarySelectQueryOperator, SqlPrintTokenContainerType.Values,
|
36
|
+
SqlPrintTokenContainerType.WithClause,
|
37
|
+
SqlPrintTokenContainerType.SwitchCaseArgument,
|
38
|
+
SqlPrintTokenContainerType.CaseKeyValuePair,
|
39
|
+
SqlPrintTokenContainerType.CaseThenValue,
|
40
|
+
SqlPrintTokenContainerType.ElseClause,
|
41
|
+
SqlPrintTokenContainerType.CaseElseValue
|
42
|
+
// CaseExpression, SwitchCaseArgument, CaseKeyValuePair, and ElseClause
|
43
|
+
// are not included by default to maintain backward compatibility with tests
|
38
44
|
//SqlPrintTokenContainerType.CommonTable
|
39
45
|
]);
|
40
46
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SqlPrinter.js","sourceRoot":"","sources":["../../../src/transformers/SqlPrinter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAoB,WAAW,EAAiB,MAAM,eAAe,CAAC;AAkB7E;;GAEG;AACH,MAAM,OAAO,UAAU;IAkBnB;;OAEG;IACH,YAAY,OAQX;;QACG,IAAI,CAAC,UAAU,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,CAAC,CAAC;QAE3C,8FAA8F;QAC9F,0EAA0E;QAC1E,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,GAAG,CAAC;QAEvC,IAAI,CAAC,UAAU,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,MAAM,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,MAAM,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,MAAM,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnF,aAAa;QACb,IAAI,CAAC,yBAAyB,GAAG,IAAI,GAAG,CACpC,MAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,6BAA0E,mCAAI;YACpF,0BAA0B,CAAC,YAAY;YACvC,0BAA0B,CAAC,UAAU;YACrC,0BAA0B,CAAC,WAAW;YACtC,0BAA0B,CAAC,aAAa;YACxC,0BAA0B,CAAC,YAAY;YACvC,0BAA0B,CAAC,qBAAqB;YAChD,0BAA0B,CAAC,iBAAiB;YAC5C,0BAA0B,CAAC,aAAa;YACxC,0BAA0B,CAAC,YAAY;YACvC,0BAA0B,CAAC,WAAW;YACtC,0BAA0B,CAAC,YAAY;YACvC,0BAA0B,CAAC,cAAc;YACzC,0BAA0B,CAAC,yBAAyB
|
1
|
+
{"version":3,"file":"SqlPrinter.js","sourceRoot":"","sources":["../../../src/transformers/SqlPrinter.ts"],"names":[],"mappings":"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"}
|
@@ -9,17 +9,21 @@ import { CTECollector } from "./CTECollector";
|
|
9
9
|
* For UNION queries, it checks each branch independently.
|
10
10
|
*/
|
11
11
|
export class UpstreamSelectQueryFinder {
|
12
|
-
constructor(tableColumnResolver) {
|
12
|
+
constructor(tableColumnResolver, options) {
|
13
|
+
this.options = options || {};
|
13
14
|
this.tableColumnResolver = tableColumnResolver;
|
15
|
+
// Pass the tableColumnResolver instead of options to fix type mismatch.
|
14
16
|
this.columnCollector = new SelectableColumnCollector(this.tableColumnResolver);
|
15
17
|
}
|
16
18
|
/**
|
17
19
|
* Finds the highest SelectQuery containing all specified columns.
|
18
20
|
* @param query The root SelectQuery to search.
|
19
|
-
* @param columnNames
|
21
|
+
* @param columnNames A column name or array of column names to check for.
|
20
22
|
* @returns An array of SelectQuery objects, or an empty array if not found.
|
21
23
|
*/
|
22
24
|
find(query, columnNames) {
|
25
|
+
// Normalize columnNames to array
|
26
|
+
const namesArray = typeof columnNames === 'string' ? [columnNames] : columnNames;
|
23
27
|
// Use CTECollector to collect CTEs from the root query only once and reuse
|
24
28
|
const cteCollector = new CTECollector();
|
25
29
|
const ctes = cteCollector.collect(query);
|
@@ -27,7 +31,7 @@ export class UpstreamSelectQueryFinder {
|
|
27
31
|
for (const cte of ctes) {
|
28
32
|
cteMap.set(cte.getSourceAliasName(), cte);
|
29
33
|
}
|
30
|
-
return this.findUpstream(query,
|
34
|
+
return this.findUpstream(query, namesArray, cteMap);
|
31
35
|
}
|
32
36
|
handleTableSource(src, columnNames, cteMap) {
|
33
37
|
// Handles the logic for TableSource in findUpstream
|
@@ -98,7 +102,6 @@ export class UpstreamSelectQueryFinder {
|
|
98
102
|
}
|
99
103
|
findUpstream(query, columnNames, cteMap) {
|
100
104
|
if (query instanceof SimpleSelectQuery) {
|
101
|
-
// Check upstream sources first: prioritize searching upstream branches for the required columns.
|
102
105
|
const fromClause = query.fromClause;
|
103
106
|
if (fromClause) {
|
104
107
|
const branchResult = this.processFromClauseBranches(fromClause, columnNames, cteMap);
|
@@ -106,9 +109,10 @@ export class UpstreamSelectQueryFinder {
|
|
106
109
|
return branchResult;
|
107
110
|
}
|
108
111
|
}
|
109
|
-
// If not found in all upstream branches, check this query itself
|
110
112
|
const columns = this.columnCollector.collect(query).map(col => col.name);
|
111
|
-
const
|
113
|
+
const normalize = (s) => this.options.ignoreCaseAndUnderscore ? s.toLowerCase().replace(/_/g, '') : s;
|
114
|
+
// Normalize both the columns and the required names for comparison.
|
115
|
+
const hasAll = columnNames.every(name => columns.some(col => normalize(col) === normalize(name)));
|
112
116
|
if (hasAll) {
|
113
117
|
return [query];
|
114
118
|
}
|