rawsql-ts 0.8.2-beta → 0.9.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 +167 -448
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/ValueComponent.js +1 -1
- package/dist/esm/models/ValueComponent.js.map +1 -1
- package/dist/esm/transformers/SchemaCollector.js +4 -4
- package/dist/esm/transformers/SchemaCollector.js.map +1 -1
- package/dist/esm/transformers/SelectableColumnCollector.js +57 -8
- 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/UpstreamSelectQueryFinder.js +10 -6
- package/dist/esm/transformers/UpstreamSelectQueryFinder.js.map +1 -1
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/models/ValueComponent.d.ts +1 -1
- package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +35 -4
- 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 +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/models/ValueComponent.d.ts +1 -1
- package/dist/models/ValueComponent.js +1 -1
- package/dist/models/ValueComponent.js.map +1 -1
- package/dist/transformers/SchemaCollector.js +3 -3
- package/dist/transformers/SchemaCollector.js.map +1 -1
- package/dist/transformers/SelectableColumnCollector.d.ts +35 -4
- package/dist/transformers/SelectableColumnCollector.js +58 -9
- package/dist/transformers/SelectableColumnCollector.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/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
@@ -12,17 +12,21 @@ const CTECollector_1 = require("./CTECollector");
|
|
12
12
|
* For UNION queries, it checks each branch independently.
|
13
13
|
*/
|
14
14
|
class UpstreamSelectQueryFinder {
|
15
|
-
constructor(tableColumnResolver) {
|
15
|
+
constructor(tableColumnResolver, options) {
|
16
|
+
this.options = options || {};
|
16
17
|
this.tableColumnResolver = tableColumnResolver;
|
18
|
+
// Pass the tableColumnResolver instead of options to fix type mismatch.
|
17
19
|
this.columnCollector = new SelectableColumnCollector_1.SelectableColumnCollector(this.tableColumnResolver);
|
18
20
|
}
|
19
21
|
/**
|
20
22
|
* Finds the highest SelectQuery containing all specified columns.
|
21
23
|
* @param query The root SelectQuery to search.
|
22
|
-
* @param columnNames
|
24
|
+
* @param columnNames A column name or array of column names to check for.
|
23
25
|
* @returns An array of SelectQuery objects, or an empty array if not found.
|
24
26
|
*/
|
25
27
|
find(query, columnNames) {
|
28
|
+
// Normalize columnNames to array
|
29
|
+
const namesArray = typeof columnNames === 'string' ? [columnNames] : columnNames;
|
26
30
|
// Use CTECollector to collect CTEs from the root query only once and reuse
|
27
31
|
const cteCollector = new CTECollector_1.CTECollector();
|
28
32
|
const ctes = cteCollector.collect(query);
|
@@ -30,7 +34,7 @@ class UpstreamSelectQueryFinder {
|
|
30
34
|
for (const cte of ctes) {
|
31
35
|
cteMap.set(cte.getSourceAliasName(), cte);
|
32
36
|
}
|
33
|
-
return this.findUpstream(query,
|
37
|
+
return this.findUpstream(query, namesArray, cteMap);
|
34
38
|
}
|
35
39
|
handleTableSource(src, columnNames, cteMap) {
|
36
40
|
// Handles the logic for TableSource in findUpstream
|
@@ -101,7 +105,6 @@ class UpstreamSelectQueryFinder {
|
|
101
105
|
}
|
102
106
|
findUpstream(query, columnNames, cteMap) {
|
103
107
|
if (query instanceof SelectQuery_1.SimpleSelectQuery) {
|
104
|
-
// Check upstream sources first: prioritize searching upstream branches for the required columns.
|
105
108
|
const fromClause = query.fromClause;
|
106
109
|
if (fromClause) {
|
107
110
|
const branchResult = this.processFromClauseBranches(fromClause, columnNames, cteMap);
|
@@ -109,9 +112,10 @@ class UpstreamSelectQueryFinder {
|
|
109
112
|
return branchResult;
|
110
113
|
}
|
111
114
|
}
|
112
|
-
// If not found in all upstream branches, check this query itself
|
113
115
|
const columns = this.columnCollector.collect(query).map(col => col.name);
|
114
|
-
const
|
116
|
+
const normalize = (s) => this.options.ignoreCaseAndUnderscore ? s.toLowerCase().replace(/_/g, '') : s;
|
117
|
+
// Normalize both the columns and the required names for comparison.
|
118
|
+
const hasAll = columnNames.every(name => columns.some(col => normalize(col) === normalize(name)));
|
115
119
|
if (hasAll) {
|
116
120
|
return [query];
|
117
121
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"UpstreamSelectQueryFinder.js","sourceRoot":"","sources":["../../src/transformers/UpstreamSelectQueryFinder.ts"],"names":[],"mappings":";;;AAAA,uDAAuG;AACvG,6CAAwF;AACxF,2EAAwE;AACxE,iDAA8C;AAE9C;;;;;GAKG;AACH,MAAa,yBAAyB;
|
1
|
+
{"version":3,"file":"UpstreamSelectQueryFinder.js","sourceRoot":"","sources":["../../src/transformers/UpstreamSelectQueryFinder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "rawsql-ts",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.9.0-beta",
|
4
4
|
"description": "[beta]High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"module": "dist/esm/index.js",
|
File without changes
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"SqlStaticAnalyzer.js","sourceRoot":"","sources":["../../../src/utils/SqlStaticAnalyzer.ts"],"names":[],"mappings":""}
|
File without changes
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"SqlStaticAnalyzer.js","sourceRoot":"","sources":["../../src/utils/SqlStaticAnalyzer.ts"],"names":[],"mappings":""}
|