rawsql-ts 0.11.2-beta → 0.11.4-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 +53 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +14 -14
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/src/index.js +2 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/models/BinarySelectQuery.js +9 -0
- package/dist/esm/src/models/BinarySelectQuery.js.map +1 -1
- package/dist/esm/src/models/CTEError.js +31 -0
- package/dist/esm/src/models/CTEError.js.map +1 -0
- package/dist/esm/src/models/Clause.js +2 -1
- package/dist/esm/src/models/Clause.js.map +1 -1
- package/dist/esm/src/models/HintClause.js +37 -0
- package/dist/esm/src/models/HintClause.js.map +1 -0
- package/dist/esm/src/models/SelectQuery.js +1 -0
- package/dist/esm/src/models/SelectQuery.js.map +1 -1
- package/dist/esm/src/models/SimpleSelectQuery.js +229 -0
- package/dist/esm/src/models/SimpleSelectQuery.js.map +1 -1
- package/dist/esm/src/models/ValuesQuery.js +1 -1
- package/dist/esm/src/models/ValuesQuery.js.map +1 -1
- package/dist/esm/src/parsers/FromClauseParser.js +7 -0
- package/dist/esm/src/parsers/FromClauseParser.js.map +1 -1
- package/dist/esm/src/parsers/SelectClauseParser.js +13 -1
- package/dist/esm/src/parsers/SelectClauseParser.js.map +1 -1
- package/dist/esm/src/parsers/SelectQueryParser.js +10 -0
- package/dist/esm/src/parsers/SelectQueryParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlPrintTokenParser.js +39 -4
- package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/src/parsers/WhereClauseParser.js +5 -0
- package/dist/esm/src/parsers/WhereClauseParser.js.map +1 -1
- package/dist/esm/src/transformers/DynamicQueryBuilder.js +16 -5
- package/dist/esm/src/transformers/DynamicQueryBuilder.js.map +1 -1
- package/dist/esm/src/transformers/QueryBuilder.js +2 -0
- package/dist/esm/src/transformers/QueryBuilder.js.map +1 -1
- package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/esm/src/transformers/SqlParameterBinder.js +63 -0
- package/dist/esm/src/transformers/SqlParameterBinder.js.map +1 -0
- package/dist/esm/src/transformers/SqlPrinter.js +12 -2
- package/dist/esm/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/esm/src/utils/CommentUtils.js +65 -0
- package/dist/esm/src/utils/CommentUtils.js.map +1 -0
- package/dist/esm/src/utils/ParameterDetector.js +49 -0
- package/dist/esm/src/utils/ParameterDetector.js.map +1 -0
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/esm/types/src/index.d.ts +3 -0
- package/dist/esm/types/src/models/BinarySelectQuery.d.ts +7 -0
- package/dist/esm/types/src/models/CTEError.d.ts +21 -0
- package/dist/esm/types/src/models/Clause.d.ts +3 -1
- package/dist/esm/types/src/models/HintClause.d.ts +24 -0
- package/dist/esm/types/src/models/SelectQuery.d.ts +12 -0
- package/dist/esm/types/src/models/SimpleSelectQuery.d.ts +166 -2
- package/dist/esm/types/src/models/ValuesQuery.d.ts +1 -1
- package/dist/esm/types/src/parsers/SqlPrintTokenParser.d.ts +5 -0
- package/dist/esm/types/src/transformers/SqlFormatter.d.ts +2 -0
- package/dist/esm/types/src/transformers/SqlParameterBinder.d.ts +36 -0
- package/dist/esm/types/src/transformers/SqlPrinter.d.ts +6 -0
- package/dist/esm/types/src/utils/CommentUtils.d.ts +21 -0
- package/dist/esm/types/src/utils/ParameterDetector.d.ts +32 -0
- package/dist/index.min.js +14 -14
- package/dist/index.min.js.map +4 -4
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +4 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/BinarySelectQuery.d.ts +7 -0
- package/dist/src/models/BinarySelectQuery.js +9 -0
- package/dist/src/models/BinarySelectQuery.js.map +1 -1
- package/dist/src/models/CTEError.d.ts +21 -0
- package/dist/src/models/CTEError.js +37 -0
- package/dist/src/models/CTEError.js.map +1 -0
- package/dist/src/models/Clause.d.ts +3 -1
- package/dist/src/models/Clause.js +2 -1
- package/dist/src/models/Clause.js.map +1 -1
- package/dist/src/models/HintClause.d.ts +24 -0
- package/dist/src/models/HintClause.js +41 -0
- package/dist/src/models/HintClause.js.map +1 -0
- package/dist/src/models/SelectQuery.d.ts +12 -0
- package/dist/src/models/SelectQuery.js +5 -1
- package/dist/src/models/SelectQuery.js.map +1 -1
- package/dist/src/models/SimpleSelectQuery.d.ts +166 -2
- package/dist/src/models/SimpleSelectQuery.js +229 -0
- package/dist/src/models/SimpleSelectQuery.js.map +1 -1
- package/dist/src/models/ValuesQuery.d.ts +1 -1
- package/dist/src/models/ValuesQuery.js +1 -1
- package/dist/src/models/ValuesQuery.js.map +1 -1
- package/dist/src/parsers/FromClauseParser.js +7 -0
- package/dist/src/parsers/FromClauseParser.js.map +1 -1
- package/dist/src/parsers/SelectClauseParser.js +13 -1
- package/dist/src/parsers/SelectClauseParser.js.map +1 -1
- package/dist/src/parsers/SelectQueryParser.js +10 -0
- package/dist/src/parsers/SelectQueryParser.js.map +1 -1
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +5 -0
- package/dist/src/parsers/SqlPrintTokenParser.js +39 -4
- package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/src/parsers/WhereClauseParser.js +5 -0
- package/dist/src/parsers/WhereClauseParser.js.map +1 -1
- package/dist/src/transformers/DynamicQueryBuilder.js +16 -5
- package/dist/src/transformers/DynamicQueryBuilder.js.map +1 -1
- package/dist/src/transformers/QueryBuilder.js +2 -0
- package/dist/src/transformers/QueryBuilder.js.map +1 -1
- package/dist/src/transformers/SqlFormatter.d.ts +2 -0
- package/dist/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/src/transformers/SqlParameterBinder.d.ts +36 -0
- package/dist/src/transformers/SqlParameterBinder.js +70 -0
- package/dist/src/transformers/SqlParameterBinder.js.map +1 -0
- package/dist/src/transformers/SqlPrinter.d.ts +6 -0
- package/dist/src/transformers/SqlPrinter.js +12 -2
- package/dist/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/src/utils/CommentUtils.d.ts +21 -0
- package/dist/src/utils/CommentUtils.js +69 -0
- package/dist/src/utils/CommentUtils.js.map +1 -0
- package/dist/src/utils/ParameterDetector.d.ts +32 -0
- package/dist/src/utils/ParameterDetector.js +53 -0
- package/dist/src/utils/ParameterDetector.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -23,6 +23,7 @@ It is designed for extensibility and advanced SQL analysis, with initial focus o
|
|
|
23
23
|
- High-speed SQL parsing and AST analysis (over 3x faster than major libraries)
|
|
24
24
|
- Rich utilities for SQL structure transformation and analysis
|
|
25
25
|
- Advanced SQL formatting capabilities, including multi-line formatting and customizable styles
|
|
26
|
+
- **Programmatic CTE Management** - Add, remove, and manipulate Common Table Expressions (CTEs) programmatically with support for PostgreSQL MATERIALIZED/NOT MATERIALIZED hints
|
|
26
27
|
- **JSON-to-TypeScript type transformation** - Automatically convert JSON-ified SQL results (dates as strings, BigInts) back to proper TypeScript types with configurable transformation rules
|
|
27
28
|
- **All-in-one dynamic query building with `DynamicQueryBuilder`** - combines filtering, sorting, pagination, and JSON serialization in a single, type-safe interface
|
|
28
29
|
- Dynamic SQL parameter injection for building flexible search queries with `SqlParamInjector` (supports like, ilike, in, any, range queries, OR/AND conditions and more)
|
|
@@ -121,6 +122,58 @@ console.log(params);
|
|
|
121
122
|
|
|
122
123
|
---
|
|
123
124
|
|
|
125
|
+
## CTE Management API
|
|
126
|
+
|
|
127
|
+
The CTE Management API provides programmatic control over Common Table Expressions (CTEs), allowing you to build and manipulate WITH clauses dynamically. This is particularly useful for building complex analytical queries, data transformation pipelines, and hierarchical data structures.
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
import { SelectQueryParser, SqlFormatter } from 'rawsql-ts';
|
|
131
|
+
|
|
132
|
+
// Build a multi-step data pipeline with CTEs
|
|
133
|
+
const pipeline = SelectQueryParser.parse('SELECT * FROM final_results').toSimpleQuery();
|
|
134
|
+
|
|
135
|
+
// Step 1: Add raw data CTE with PostgreSQL MATERIALIZED hint
|
|
136
|
+
const salesData = SelectQueryParser.parse(`
|
|
137
|
+
SELECT customer_id, order_date, amount, product_category
|
|
138
|
+
FROM sales WHERE order_date >= '2024-01-01'
|
|
139
|
+
`);
|
|
140
|
+
pipeline.addCTE('raw_sales', salesData.toSimpleQuery(), { materialized: true });
|
|
141
|
+
|
|
142
|
+
// Step 2: Add aggregation CTE
|
|
143
|
+
const monthlyStats = SelectQueryParser.parse(`
|
|
144
|
+
SELECT customer_id, DATE_TRUNC('month', order_date) as month,
|
|
145
|
+
SUM(amount) as total, COUNT(*) as orders
|
|
146
|
+
FROM raw_sales
|
|
147
|
+
GROUP BY customer_id, DATE_TRUNC('month', order_date)
|
|
148
|
+
`);
|
|
149
|
+
pipeline.addCTE('monthly_stats', monthlyStats.toSimpleQuery());
|
|
150
|
+
|
|
151
|
+
// Manage CTEs programmatically
|
|
152
|
+
console.log(pipeline.getCTENames()); // ['raw_sales', 'monthly_stats']
|
|
153
|
+
console.log(pipeline.hasCTE('raw_sales')); // true
|
|
154
|
+
|
|
155
|
+
// Replace the final query to use the CTEs
|
|
156
|
+
const finalQuery = SelectQueryParser.parse(`
|
|
157
|
+
SELECT * FROM monthly_stats WHERE total > 10000
|
|
158
|
+
`);
|
|
159
|
+
pipeline.replaceCTE('final_results', finalQuery.toSimpleQuery());
|
|
160
|
+
|
|
161
|
+
// Format and execute
|
|
162
|
+
const formatter = new SqlFormatter();
|
|
163
|
+
const { formattedSql } = formatter.format(pipeline);
|
|
164
|
+
// Output: WITH "raw_sales" AS MATERIALIZED (...), "monthly_stats" AS (...) SELECT * FROM monthly_stats WHERE total > 10000
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Key features include:
|
|
168
|
+
- **Dynamic CTE Management**: Add, remove, replace, and query CTEs programmatically
|
|
169
|
+
- **PostgreSQL MATERIALIZED Support**: Control query optimization with MATERIALIZED/NOT MATERIALIZED hints
|
|
170
|
+
- **Type Safety**: Full TypeScript support with error handling for duplicate names and invalid operations
|
|
171
|
+
- **Performance Optimized**: O(1) CTE name lookups for efficient operations
|
|
172
|
+
|
|
173
|
+
For comprehensive examples and advanced usage patterns, see the [CTE Management API Usage Guide](../../docs/usage-guides/cte-management-api-usage-guide.md).
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
124
177
|
## SelectQueryParser & Query Types
|
|
125
178
|
|
|
126
179
|
rawsql-ts provides robust parsers for `SELECT`, `INSERT`, and `UPDATE` statements, automatically handling SQL comments and providing detailed error messages. By converting SQL into a generic Abstract Syntax Tree (AST), it enables a wide variety of transformation processes.
|
package/dist/esm/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export * from './models/BinarySelectQuery';
|
|
|
5
5
|
export * from './models/SelectQuery';
|
|
6
6
|
export * from './models/ValueComponent';
|
|
7
7
|
export * from './models/ValuesQuery';
|
|
8
|
+
export * from './models/CTEError';
|
|
8
9
|
export * from './transformers/CTECollector';
|
|
9
10
|
export * from './transformers/CTENormalizer';
|
|
10
11
|
export * from './transformers/Formatter';
|
|
@@ -33,5 +34,6 @@ export * from './transformers/DynamicQueryBuilder';
|
|
|
33
34
|
export * from './utils/SqlSchemaValidator';
|
|
34
35
|
export * from './utils/JsonSchemaValidator';
|
|
35
36
|
export * from './utils/SchemaManager';
|
|
37
|
+
export { convertUnifiedMapping } from './transformers/UnifiedJsonMapping';
|
|
36
38
|
// Add more exports here if you want to expose additional public API
|
|
37
39
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAElC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC,CAAC,0BAA0B;AACvE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAEH,yBAAyB,EACzB,0BAA0B,EAK7B,MAAM,uCAAuC,CAAC;AAC/C,OAAO;AACH,6DAA6D;AAC7D,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACjB,MAAM,mCAAmC,CAAC;AAE3C,qEAAqE;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAE/D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AAItC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,oEAAoE"}
|