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.
Files changed (116) hide show
  1. package/README.md +53 -0
  2. package/dist/esm/index.js +2 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +14 -14
  5. package/dist/esm/index.min.js.map +4 -4
  6. package/dist/esm/src/index.js +2 -0
  7. package/dist/esm/src/index.js.map +1 -1
  8. package/dist/esm/src/models/BinarySelectQuery.js +9 -0
  9. package/dist/esm/src/models/BinarySelectQuery.js.map +1 -1
  10. package/dist/esm/src/models/CTEError.js +31 -0
  11. package/dist/esm/src/models/CTEError.js.map +1 -0
  12. package/dist/esm/src/models/Clause.js +2 -1
  13. package/dist/esm/src/models/Clause.js.map +1 -1
  14. package/dist/esm/src/models/HintClause.js +37 -0
  15. package/dist/esm/src/models/HintClause.js.map +1 -0
  16. package/dist/esm/src/models/SelectQuery.js +1 -0
  17. package/dist/esm/src/models/SelectQuery.js.map +1 -1
  18. package/dist/esm/src/models/SimpleSelectQuery.js +229 -0
  19. package/dist/esm/src/models/SimpleSelectQuery.js.map +1 -1
  20. package/dist/esm/src/models/ValuesQuery.js +1 -1
  21. package/dist/esm/src/models/ValuesQuery.js.map +1 -1
  22. package/dist/esm/src/parsers/FromClauseParser.js +7 -0
  23. package/dist/esm/src/parsers/FromClauseParser.js.map +1 -1
  24. package/dist/esm/src/parsers/SelectClauseParser.js +13 -1
  25. package/dist/esm/src/parsers/SelectClauseParser.js.map +1 -1
  26. package/dist/esm/src/parsers/SelectQueryParser.js +10 -0
  27. package/dist/esm/src/parsers/SelectQueryParser.js.map +1 -1
  28. package/dist/esm/src/parsers/SqlPrintTokenParser.js +39 -4
  29. package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
  30. package/dist/esm/src/parsers/WhereClauseParser.js +5 -0
  31. package/dist/esm/src/parsers/WhereClauseParser.js.map +1 -1
  32. package/dist/esm/src/transformers/DynamicQueryBuilder.js +16 -5
  33. package/dist/esm/src/transformers/DynamicQueryBuilder.js.map +1 -1
  34. package/dist/esm/src/transformers/QueryBuilder.js +2 -0
  35. package/dist/esm/src/transformers/QueryBuilder.js.map +1 -1
  36. package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
  37. package/dist/esm/src/transformers/SqlParameterBinder.js +63 -0
  38. package/dist/esm/src/transformers/SqlParameterBinder.js.map +1 -0
  39. package/dist/esm/src/transformers/SqlPrinter.js +12 -2
  40. package/dist/esm/src/transformers/SqlPrinter.js.map +1 -1
  41. package/dist/esm/src/utils/CommentUtils.js +65 -0
  42. package/dist/esm/src/utils/CommentUtils.js.map +1 -0
  43. package/dist/esm/src/utils/ParameterDetector.js +49 -0
  44. package/dist/esm/src/utils/ParameterDetector.js.map +1 -0
  45. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  46. package/dist/esm/types/src/index.d.ts +3 -0
  47. package/dist/esm/types/src/models/BinarySelectQuery.d.ts +7 -0
  48. package/dist/esm/types/src/models/CTEError.d.ts +21 -0
  49. package/dist/esm/types/src/models/Clause.d.ts +3 -1
  50. package/dist/esm/types/src/models/HintClause.d.ts +24 -0
  51. package/dist/esm/types/src/models/SelectQuery.d.ts +12 -0
  52. package/dist/esm/types/src/models/SimpleSelectQuery.d.ts +166 -2
  53. package/dist/esm/types/src/models/ValuesQuery.d.ts +1 -1
  54. package/dist/esm/types/src/parsers/SqlPrintTokenParser.d.ts +5 -0
  55. package/dist/esm/types/src/transformers/SqlFormatter.d.ts +2 -0
  56. package/dist/esm/types/src/transformers/SqlParameterBinder.d.ts +36 -0
  57. package/dist/esm/types/src/transformers/SqlPrinter.d.ts +6 -0
  58. package/dist/esm/types/src/utils/CommentUtils.d.ts +21 -0
  59. package/dist/esm/types/src/utils/ParameterDetector.d.ts +32 -0
  60. package/dist/index.min.js +14 -14
  61. package/dist/index.min.js.map +4 -4
  62. package/dist/src/index.d.ts +3 -0
  63. package/dist/src/index.js +4 -1
  64. package/dist/src/index.js.map +1 -1
  65. package/dist/src/models/BinarySelectQuery.d.ts +7 -0
  66. package/dist/src/models/BinarySelectQuery.js +9 -0
  67. package/dist/src/models/BinarySelectQuery.js.map +1 -1
  68. package/dist/src/models/CTEError.d.ts +21 -0
  69. package/dist/src/models/CTEError.js +37 -0
  70. package/dist/src/models/CTEError.js.map +1 -0
  71. package/dist/src/models/Clause.d.ts +3 -1
  72. package/dist/src/models/Clause.js +2 -1
  73. package/dist/src/models/Clause.js.map +1 -1
  74. package/dist/src/models/HintClause.d.ts +24 -0
  75. package/dist/src/models/HintClause.js +41 -0
  76. package/dist/src/models/HintClause.js.map +1 -0
  77. package/dist/src/models/SelectQuery.d.ts +12 -0
  78. package/dist/src/models/SelectQuery.js +5 -1
  79. package/dist/src/models/SelectQuery.js.map +1 -1
  80. package/dist/src/models/SimpleSelectQuery.d.ts +166 -2
  81. package/dist/src/models/SimpleSelectQuery.js +229 -0
  82. package/dist/src/models/SimpleSelectQuery.js.map +1 -1
  83. package/dist/src/models/ValuesQuery.d.ts +1 -1
  84. package/dist/src/models/ValuesQuery.js +1 -1
  85. package/dist/src/models/ValuesQuery.js.map +1 -1
  86. package/dist/src/parsers/FromClauseParser.js +7 -0
  87. package/dist/src/parsers/FromClauseParser.js.map +1 -1
  88. package/dist/src/parsers/SelectClauseParser.js +13 -1
  89. package/dist/src/parsers/SelectClauseParser.js.map +1 -1
  90. package/dist/src/parsers/SelectQueryParser.js +10 -0
  91. package/dist/src/parsers/SelectQueryParser.js.map +1 -1
  92. package/dist/src/parsers/SqlPrintTokenParser.d.ts +5 -0
  93. package/dist/src/parsers/SqlPrintTokenParser.js +39 -4
  94. package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
  95. package/dist/src/parsers/WhereClauseParser.js +5 -0
  96. package/dist/src/parsers/WhereClauseParser.js.map +1 -1
  97. package/dist/src/transformers/DynamicQueryBuilder.js +16 -5
  98. package/dist/src/transformers/DynamicQueryBuilder.js.map +1 -1
  99. package/dist/src/transformers/QueryBuilder.js +2 -0
  100. package/dist/src/transformers/QueryBuilder.js.map +1 -1
  101. package/dist/src/transformers/SqlFormatter.d.ts +2 -0
  102. package/dist/src/transformers/SqlFormatter.js.map +1 -1
  103. package/dist/src/transformers/SqlParameterBinder.d.ts +36 -0
  104. package/dist/src/transformers/SqlParameterBinder.js +70 -0
  105. package/dist/src/transformers/SqlParameterBinder.js.map +1 -0
  106. package/dist/src/transformers/SqlPrinter.d.ts +6 -0
  107. package/dist/src/transformers/SqlPrinter.js +12 -2
  108. package/dist/src/transformers/SqlPrinter.js.map +1 -1
  109. package/dist/src/utils/CommentUtils.d.ts +21 -0
  110. package/dist/src/utils/CommentUtils.js +69 -0
  111. package/dist/src/utils/CommentUtils.js.map +1 -0
  112. package/dist/src/utils/ParameterDetector.d.ts +32 -0
  113. package/dist/src/utils/ParameterDetector.js +53 -0
  114. package/dist/src/utils/ParameterDetector.js.map +1 -0
  115. package/dist/tsconfig.tsbuildinfo +1 -1
  116. 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
@@ -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;AAErC,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;AACtC,oEAAoE"}
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"}