rawsql-ts 0.9.0-beta → 0.10.1-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 (56) hide show
  1. package/README.md +90 -7
  2. package/dist/esm/index.js +2 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/models/SqlPrintToken.js +2 -0
  5. package/dist/esm/models/SqlPrintToken.js.map +1 -1
  6. package/dist/esm/models/ValueComponent.js +13 -12
  7. package/dist/esm/models/ValueComponent.js.map +1 -1
  8. package/dist/esm/parsers/SqlPrintTokenParser.js +24 -6
  9. package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -1
  10. package/dist/esm/transformers/PostgresArrayEntityCteBuilder.js +231 -0
  11. package/dist/esm/transformers/PostgresArrayEntityCteBuilder.js.map +1 -0
  12. package/dist/esm/transformers/PostgresJsonQueryBuilder.js +226 -0
  13. package/dist/esm/transformers/PostgresJsonQueryBuilder.js.map +1 -0
  14. package/dist/esm/transformers/PostgresObjectEntityCteBuilder.js +283 -0
  15. package/dist/esm/transformers/PostgresObjectEntityCteBuilder.js.map +1 -0
  16. package/dist/esm/transformers/SqlPrinter.js +9 -3
  17. package/dist/esm/transformers/SqlPrinter.js.map +1 -1
  18. package/dist/esm/types/index.d.ts +2 -0
  19. package/dist/esm/types/models/SqlPrintToken.d.ts +2 -0
  20. package/dist/esm/types/models/ValueComponent.d.ts +2 -2
  21. package/dist/esm/types/transformers/PostgresArrayEntityCteBuilder.d.ts +97 -0
  22. package/dist/esm/types/transformers/PostgresJsonQueryBuilder.d.ts +86 -0
  23. package/dist/esm/types/transformers/PostgresObjectEntityCteBuilder.d.ts +140 -0
  24. package/dist/esm/types/utils/SchemaManager.d.ts +132 -0
  25. package/dist/esm/utils/SchemaManager.js +194 -0
  26. package/dist/esm/utils/SchemaManager.js.map +1 -0
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.js +2 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/models/SqlPrintToken.d.ts +2 -0
  31. package/dist/models/SqlPrintToken.js +2 -0
  32. package/dist/models/SqlPrintToken.js.map +1 -1
  33. package/dist/models/ValueComponent.d.ts +2 -2
  34. package/dist/models/ValueComponent.js +13 -12
  35. package/dist/models/ValueComponent.js.map +1 -1
  36. package/dist/parsers/SelectQueryParser.js +3 -14
  37. package/dist/parsers/SelectQueryParser.js.map +1 -1
  38. package/dist/parsers/SqlPrintTokenParser.js +25 -7
  39. package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
  40. package/dist/transformers/PostgresArrayEntityCteBuilder.d.ts +97 -0
  41. package/dist/transformers/PostgresArrayEntityCteBuilder.js +235 -0
  42. package/dist/transformers/PostgresArrayEntityCteBuilder.js.map +1 -0
  43. package/dist/transformers/PostgresJsonQueryBuilder.d.ts +86 -0
  44. package/dist/transformers/PostgresJsonQueryBuilder.js +230 -0
  45. package/dist/transformers/PostgresJsonQueryBuilder.js.map +1 -0
  46. package/dist/transformers/PostgresObjectEntityCteBuilder.d.ts +140 -0
  47. package/dist/transformers/PostgresObjectEntityCteBuilder.js +287 -0
  48. package/dist/transformers/PostgresObjectEntityCteBuilder.js.map +1 -0
  49. package/dist/transformers/SqlFormatter.js +6 -1
  50. package/dist/transformers/SqlFormatter.js.map +1 -1
  51. package/dist/transformers/SqlPrinter.js +9 -3
  52. package/dist/transformers/SqlPrinter.js.map +1 -1
  53. package/dist/utils/SchemaManager.d.ts +132 -0
  54. package/dist/utils/SchemaManager.js +201 -0
  55. package/dist/utils/SchemaManager.js.map +1 -0
  56. package/package.json +1 -1
package/README.md CHANGED
@@ -24,6 +24,7 @@ It is designed for extensibility and advanced SQL analysis, with initial focus o
24
24
  - Rich utilities for SQL structure transformation and analysis
25
25
  - Advanced SQL formatting capabilities, including multi-line formatting and customizable styles
26
26
  - Dynamic SQL parameter injection for building flexible search queries with `SqlParamInjector`
27
+ - Type-safe schema management and JSON mapping conversion with full TypeScript support
27
28
  - Static query validation and regression testing against your database schema with `SqlSchemaValidator`, enabling early error detection and robust unit tests for schema changes.
28
29
 
29
30
  ![Benchmark Results](https://quickchart.io/chart?c={type:'bar',data:{labels:['Tokens20','Tokens70','Tokens140','Tokens230'],datasets:[{label:'rawsql-ts',data:[0.029,0.075,0.137,0.239],backgroundColor:'rgba(54,162,235,0.8)',borderColor:'rgba(54,162,235,1)',borderWidth:1},{label:'node-sql-parser',data:[0.210,0.223,0.420,0.871],backgroundColor:'rgba(255,206,86,0.8)',borderColor:'rgba(255,206,86,1)',borderWidth:1},{label:'sql-formatter',data:[0.228,0.547,1.057,1.906],backgroundColor:'rgba(255,99,132,0.8)',borderColor:'rgba(255,99,132,1)',borderWidth:1}]},options:{plugins:{legend:{labels:{color:'black'}}},scales:{x:{ticks:{color:'black'}},y:{ticks:{color:'black'}}},backgroundColor:'white'}}&width=700&height=450)
@@ -104,7 +105,7 @@ console.log(params);
104
105
 
105
106
  ---
106
107
 
107
- ## SQL Parsing Features
108
+ ## SelectQueryParser Features
108
109
 
109
110
  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.
110
111
 
@@ -116,11 +117,11 @@ const query = SelectQueryParser.parse(sql);
116
117
  // query object now holds the AST of the SQL
117
118
  ```
118
119
 
119
- For more details on `SelectQueryParser`, see the [SelectQueryParser Usage Guide](./docs/class-SelectQueryParser-usage-guide.md).
120
+ For more details on `SelectQueryParser`, see the [SelectQueryParser Usage Guide](./docs/usage-guides/class-SelectQueryParser-usage-guide.md).
120
121
 
121
122
  ---
122
123
 
123
- ## SQL Formatter Features
124
+ ## SqlFormatter Features
124
125
 
125
126
  The `SqlFormatter` class is the recommended way to format SQL queries, offering advanced capabilities like indentation, keyword casing, and multi-line formatting.
126
127
  It also allows for detailed style customization. For example, you can define your own formatting rules:
@@ -162,7 +163,7 @@ order by
162
163
  */
163
164
  ```
164
165
 
165
- For more details, see the [SqlFormatter Usage Guide](./docs/class-SqlFormatter-usage-guide.md).
166
+ For more details, see the [SqlFormatter Usage Guide](./docs/usage-guides/class-SqlFormatter-usage-guide.md).
166
167
 
167
168
  ---
168
169
 
@@ -194,7 +195,54 @@ console.log(params);
194
195
  // Output: { user_id: 42, user_name: 'Alice' }
195
196
  ```
196
197
 
197
- For more details, see the [SqlParamInjector Usage Guide](./docs/class-SqlParamInjector-usage-guide.md).
198
+ For more details, see the [SqlParamInjector Usage Guide](./docs/usage-guides/class-SqlParamInjector-usage-guide.md).
199
+
200
+ ---
201
+
202
+ ## PostgresJsonQueryBuilder Features
203
+
204
+ The `PostgresJsonQueryBuilder` class transforms relational SQL queries into PostgreSQL JSON queries that return hierarchical JSON structures. It automatically handles complex relationships between entities and generates optimized Common Table Expressions (CTEs) for efficient JSON aggregation, making it perfect for building APIs, reports, and data exports.
205
+
206
+ Key benefits include:
207
+ - **Hierarchical JSON Generation**: Transforms flat relational data into nested JSON objects and arrays
208
+ - **Automatic CTE Management**: Generates optimized CTEs with proper dependency ordering
209
+ - **Flexible Relationship Types**: Supports both object (0..1) and array (1..N) relationships
210
+ - **NULL Handling**: Properly represents missing relationships as NULL instead of empty objects
211
+ - **Performance Optimized**: Uses depth-based processing and JSONB for optimal PostgreSQL performance
212
+ - **Zero Manual Serialization**: Eliminates the need for manual object mapping and JSON construction
213
+
214
+ ```typescript
215
+ import { SelectQueryParser, PostgresJsonQueryBuilder } from 'rawsql-ts';
216
+
217
+ // Parse your base SQL query
218
+ const baseQuery = SelectQueryParser.parse(`
219
+ SELECT o.order_id, o.order_date, c.customer_name, i.product_name, i.quantity
220
+ FROM orders o
221
+ LEFT JOIN customers c ON o.customer_id = c.customer_id
222
+ LEFT JOIN order_items i ON o.order_id = i.order_id
223
+ `) as SimpleSelectQuery;
224
+
225
+ // Define JSON mapping configuration
226
+ const mapping = {
227
+ rootName: "order",
228
+ rootEntity: { id: "order", name: "Order", columns: { "id": "order_id", "date": "order_date" }},
229
+ nestedEntities: [
230
+ { id: "customer", parentId: "order", propertyName: "customer", relationshipType: "object",
231
+ columns: { "name": "customer_name" }},
232
+ { id: "items", parentId: "order", propertyName: "items", relationshipType: "array",
233
+ columns: { "product": "product_name", "qty": "quantity" }}
234
+ ],
235
+ useJsonb: true
236
+ };
237
+
238
+ // Transform to JSON query
239
+ const builder = new PostgresJsonQueryBuilder();
240
+ const jsonQuery = builder.buildJson(baseQuery, mapping);
241
+ // Returns optimized PostgreSQL query with CTEs that produces:
242
+ // [{ "id": 1, "date": "2024-01-15", "customer": {"name": "John"}, "items": [{"product": "Widget", "qty": 2}] }]
243
+ ```
244
+
245
+ For more details, see the [PostgresJsonQueryBuilder Usage Guide](./docs/usage-guides/class-PostgresJsonQueryBuilder-usage-guide.md).
198
246
 
199
247
  ---
200
248
 
@@ -246,7 +294,7 @@ try {
246
294
  }
247
295
  ```
248
296
 
249
- For more details on `SqlSchemaValidator`, see the [SqlSchemaValidator Usage Guide](./docs/class-SqlSchemaValidator-usage-guide.md).
297
+ For more details on `SqlSchemaValidator`, see the [SqlSchemaValidator Usage Guide](./docs/usage-guides/class-SqlSchemaValidator-usage-guide.md).
250
298
 
251
299
  ---
252
300
 
@@ -282,7 +330,42 @@ console.log(updateSql);
282
330
  // update "users" set "email" = "d"."email", "last_login" = "d"."last_login" from (SELECT id, new_email AS email, last_login FROM user_updates_source WHERE needs_update = TRUE) as "d" where "users"."id" = "d"."id"
283
331
  ```
284
332
 
285
- For more details on `QueryBuilder`, see the [QueryBuilder Usage Guide](./docs/class-QueryBuilder-usage-guide.md).
333
+ For more details on `QueryBuilder`, see the [QueryBuilder Usage Guide](./docs/usage-guides/class-QueryBuilder-usage-guide.md).
334
+
335
+ ---
336
+
337
+ ## SchemaManager Features
338
+
339
+ The `SchemaManager` class provides unified schema definition and type-safe conversion to various formats, eliminating code duplication for rawsql-ts. It serves as a central hub for managing database schema definitions and converting them to formats required by different components like `SqlParamInjector` and `PostgresJsonQueryBuilder`.
340
+
341
+ Key benefits include:
342
+ - **Unified Schema Definition**: Define your database schema once and generate JSON mappings, table column resolvers, and other formats for multiple rawsql-ts components
343
+ - **Type-Safe JSON Mapping**: Fully typed conversion without using `any` types
344
+ - **Schema Validation**: Built-in validation ensures schema consistency and integrity
345
+ - **Relationship Management**: Supports complex table relationships with object and array outputs
346
+
347
+ ```typescript
348
+ import { SchemaManager, createSchemaManager } from 'rawsql-ts';
349
+
350
+ // Define your database schema once
351
+ const schemas = {
352
+ users: {
353
+ name: 'users',
354
+ columns: {
355
+ user_id: { name: 'user_id', isPrimaryKey: true },
356
+ user_name: { name: 'user_name' },
357
+ email: { name: 'email' }
358
+ }
359
+ }
360
+ };
361
+
362
+ // Create SchemaManager and use with other components
363
+ const schemaManager = createSchemaManager(schemas);
364
+ const tableColumnResolver = schemaManager.createTableColumnResolver();
365
+ const injector = new SqlParamInjector({ tableColumnResolver });
366
+ ```
367
+
368
+ For more details on `SchemaManager`, see the [SchemaManager Usage Guide](./docs/usage-guides/class-SchemaManager-usage-guide.md).
286
369
 
287
370
  ---
288
371
 
package/dist/esm/index.js CHANGED
@@ -9,6 +9,7 @@ export * from './transformers/CTECollector';
9
9
  export * from './transformers/CTENormalizer';
10
10
  export * from './transformers/Formatter';
11
11
  export * from './transformers/SqlFormatter';
12
+ export * from './transformers/PostgresJsonQueryBuilder';
12
13
  export * from './transformers/QueryBuilder'; // old name:QueryConverter
13
14
  export * from './transformers/SelectValueCollector';
14
15
  export * from './transformers/SelectableColumnCollector';
@@ -18,5 +19,6 @@ export * from './transformers/UpstreamSelectQueryFinder';
18
19
  export * from './transformers/SchemaCollector';
19
20
  export * from './transformers/SqlParamInjector';
20
21
  export * from './utils/SqlSchemaValidator';
22
+ export * from './utils/SchemaManager';
21
23
  // Add more exports here if you want to expose additional public API
22
24
  //# 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,6BAA6B,CAAC,CAAC,0BAA0B;AACvE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAEhD,cAAc,4BAA4B,CAAC;AAC3C,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;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,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAEhD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,oEAAoE"}
@@ -30,6 +30,8 @@ export var SqlPrintTokenContainerType;
30
30
  SqlPrintTokenContainerType["SwitchCaseArgument"] = "SwitchCaseArgument";
31
31
  SqlPrintTokenContainerType["ElseClause"] = "ElseClause";
32
32
  SqlPrintTokenContainerType["CaseKeyValuePair"] = "CaseKeyValuePair";
33
+ SqlPrintTokenContainerType["CaseThenValue"] = "CaseThenValue";
34
+ SqlPrintTokenContainerType["CaseElseValue"] = "CaseElseValue";
33
35
  SqlPrintTokenContainerType["ParenExpression"] = "ParenExpression";
34
36
  SqlPrintTokenContainerType["CastExpression"] = "CastExpression";
35
37
  SqlPrintTokenContainerType["CaseExpression"] = "CaseExpression";
@@ -1 +1 @@
1
- {"version":3,"file":"SqlPrintToken.js","sourceRoot":"","sources":["../../../src/models/SqlPrintToken.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAaX;AAbD,WAAY,iBAAiB;IACzB,mEAAa,CAAA;IACb,+DAAO,CAAA;IACP,2DAAK,CAAA;IACL,2DAAK,CAAA;IACL,uEAAW,CAAA;IACX,iEAAQ,CAAA;IACR,+DAAO,CAAA;IACP,mEAAS,CAAA;IACT,uDAAG,CAAA;IACH,yDAAI,CAAA;IACJ,4DAAK,CAAA;IACL,kFAAgB,CAAA;AACpB,CAAC,EAbW,iBAAiB,KAAjB,iBAAiB,QAa5B;AAED,2DAA2D;AAC3D,MAAM,CAAN,IAAY,0BAgEX;AAhED,WAAY,0BAA0B;IAClC,iEAAmC,CAAA;IACnC,2DAA6B,CAAA;IAC7B,mEAAqC,CAAA;IACrC,yDAA2B,CAAA;IAC3B,qFAAuD,CAAA;IACvD,uCAAS,CAAA;IACT,qDAAuB,CAAA;IACvB,yDAA2B,CAAA;IAC3B,2DAA6B,CAAA;IAC7B,iEAAmC,CAAA;IACnC,mEAAqC,CAAA;IACrC,uEAAyC,CAAA;IACzC,uDAAyB,CAAA;IACzB,mEAAqC,CAAA;IACrC,iEAAmC,CAAA;IACnC,+DAAiC,CAAA;IACjC,+DAAiC,CAAA;IACjC,iEAAmC,CAAA;IACnC,qEAAuC,CAAA;IACvC,qDAAuB,CAAA;IACvB,iEAAmC,CAAA;IACnC,6EAA+C,CAAA;IAC/C,uDAAyB,CAAA;IACzB,2DAA6B,CAAA;IAC7B,uDAAyB,CAAA;IACzB,mEAAqC,CAAA;IACrC,uDAAyB,CAAA;IACzB,uDAAyB,CAAA;IACzB,2DAA6B,CAAA;IAC7B,iEAAmC,CAAA;IACnC,+DAAiC,CAAA;IACjC,6EAA+C,CAAA;IAC/C,qDAAuB,CAAA;IACvB,6DAA+B,CAAA;IAC/B,yDAA2B,CAAA;IAC3B,qEAAuC,CAAA;IACvC,6DAA+B,CAAA;IAC/B,6DAA+B,CAAA;IAC/B,2DAA6B,CAAA;IAC7B,+DAAiC,CAAA;IACjC,qEAAuC,CAAA;IACvC,qEAAuC,CAAA;IACvC,yDAA2B,CAAA;IAC3B,2DAA6B,CAAA;IAC7B,qDAAuB,CAAA;IACvB,2DAA6B,CAAA;IAC7B,qFAAuD,CAAA;IACvD,+CAAiB,CAAA;IACjB,yDAA2B,CAAA;IAC3B,uDAAyB,CAAA;IACzB,yDAA2B,CAAA;IAC3B,iEAAmC,CAAA;IACnC,+EAAiD,CAAA;IACjD,mFAAqD,CAAA;IACrD,yDAA2B,CAAA;IAC3B,iEAAmC,CAAA;IACnC,yDAA2B,CAAA;IAC3B,yDAA2B,CAAA;IAC3B,2DAA6B,CAAA;IAC7B,iEAAmC,CAAA;IACnC,6DAA+B,CAAA;IAC/B,mEAAqC,CAAA;IACrC,qBAAqB;AACzB,CAAC,EAhEW,0BAA0B,KAA1B,0BAA0B,QAgErC;AAED,MAAM,OAAO,aAAa;IAyBtB,YAAY,IAAuB,EAAE,OAAe,EAAE,EAAE,gBAA4C,0BAA0B,CAAC,IAAI;QALnI;;WAEG;QACH,gBAAW,GAAoB,EAAE,CAAC;QAG9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;CACJ"}
1
+ {"version":3,"file":"SqlPrintToken.js","sourceRoot":"","sources":["../../../src/models/SqlPrintToken.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAaX;AAbD,WAAY,iBAAiB;IACzB,mEAAa,CAAA;IACb,+DAAO,CAAA;IACP,2DAAK,CAAA;IACL,2DAAK,CAAA;IACL,uEAAW,CAAA;IACX,iEAAQ,CAAA;IACR,+DAAO,CAAA;IACP,mEAAS,CAAA;IACT,uDAAG,CAAA;IACH,yDAAI,CAAA;IACJ,4DAAK,CAAA;IACL,kFAAgB,CAAA;AACpB,CAAC,EAbW,iBAAiB,KAAjB,iBAAiB,QAa5B;AAED,2DAA2D;AAC3D,MAAM,CAAN,IAAY,0BAkEX;AAlED,WAAY,0BAA0B;IAClC,iEAAmC,CAAA;IACnC,2DAA6B,CAAA;IAC7B,mEAAqC,CAAA;IACrC,yDAA2B,CAAA;IAC3B,qFAAuD,CAAA;IACvD,uCAAS,CAAA;IACT,qDAAuB,CAAA;IACvB,yDAA2B,CAAA;IAC3B,2DAA6B,CAAA;IAC7B,iEAAmC,CAAA;IACnC,mEAAqC,CAAA;IACrC,uEAAyC,CAAA;IACzC,uDAAyB,CAAA;IACzB,mEAAqC,CAAA;IACrC,6DAA+B,CAAA;IAC/B,6DAA+B,CAAA;IAC/B,iEAAmC,CAAA;IACnC,+DAAiC,CAAA;IACjC,+DAAiC,CAAA;IACjC,iEAAmC,CAAA;IACnC,qEAAuC,CAAA;IACvC,qDAAuB,CAAA;IACvB,iEAAmC,CAAA;IACnC,6EAA+C,CAAA;IAC/C,uDAAyB,CAAA;IACzB,2DAA6B,CAAA;IAC7B,uDAAyB,CAAA;IACzB,mEAAqC,CAAA;IACrC,uDAAyB,CAAA;IACzB,uDAAyB,CAAA;IACzB,2DAA6B,CAAA;IAC7B,iEAAmC,CAAA;IACnC,+DAAiC,CAAA;IACjC,6EAA+C,CAAA;IAC/C,qDAAuB,CAAA;IACvB,6DAA+B,CAAA;IAC/B,yDAA2B,CAAA;IAC3B,qEAAuC,CAAA;IACvC,6DAA+B,CAAA;IAC/B,6DAA+B,CAAA;IAC/B,2DAA6B,CAAA;IAC7B,+DAAiC,CAAA;IACjC,qEAAuC,CAAA;IACvC,qEAAuC,CAAA;IACvC,yDAA2B,CAAA;IAC3B,2DAA6B,CAAA;IAC7B,qDAAuB,CAAA;IACvB,2DAA6B,CAAA;IAC7B,qFAAuD,CAAA;IACvD,+CAAiB,CAAA;IACjB,yDAA2B,CAAA;IAC3B,uDAAyB,CAAA;IACzB,yDAA2B,CAAA;IAC3B,iEAAmC,CAAA;IACnC,+EAAiD,CAAA;IACjD,mFAAqD,CAAA;IACrD,yDAA2B,CAAA;IAC3B,iEAAmC,CAAA;IACnC,yDAA2B,CAAA;IAC3B,yDAA2B,CAAA;IAC3B,2DAA6B,CAAA;IAC7B,iEAAmC,CAAA;IACnC,6DAA+B,CAAA;IAC/B,mEAAqC,CAAA;IACrC,qBAAqB;AACzB,CAAC,EAlEW,0BAA0B,KAA1B,0BAA0B,QAkErC;AAED,MAAM,OAAO,aAAa;IAyBtB,YAAY,IAAuB,EAAE,OAAe,EAAE,EAAE,gBAA4C,0BAA0B,CAAC,IAAI;QALnI;;WAEG;QACH,gBAAW,GAAoB,EAAE,CAAC;QAG9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;CACJ"}
@@ -34,15 +34,8 @@ export class ColumnReference extends SqlComponent {
34
34
  }
35
35
  constructor(namespaces, column) {
36
36
  super();
37
- let nsArr;
38
- if (typeof namespaces === "string") {
39
- nsArr = [namespaces];
40
- }
41
- else {
42
- nsArr = namespaces;
43
- }
44
37
  const col = typeof column === "string" ? new IdentifierString(column) : column;
45
- this.qualifiedName = new QualifiedName(nsArr, col);
38
+ this.qualifiedName = new QualifiedName(toIdentifierStringArray(namespaces), col);
46
39
  }
47
40
  toString() {
48
41
  return this.qualifiedName.toString();
@@ -278,14 +271,22 @@ TupleExpression.kind = Symbol("TupleExpression");
278
271
  function toIdentifierStringArray(input) {
279
272
  if (input == null)
280
273
  return null;
281
- if (typeof input === "string")
282
- return [new IdentifierString(input)];
274
+ if (typeof input === "string") {
275
+ // Empty string should be treated as null
276
+ return input.trim() === "" ? null : [new IdentifierString(input)];
277
+ }
283
278
  if (Array.isArray(input)) {
279
+ if (input.length === 0)
280
+ return null;
284
281
  if (typeof input[0] === "string") {
285
- return input.map(ns => new IdentifierString(ns));
282
+ // Filter out empty strings from string array
283
+ const filteredStrings = input.filter(ns => ns.trim() !== "");
284
+ return filteredStrings.length === 0 ? null : filteredStrings.map(ns => new IdentifierString(ns));
286
285
  }
287
286
  else {
288
- return input;
287
+ // Filter out empty IdentifierStrings from IdentifierString array
288
+ const filteredIdentifiers = input.filter(ns => ns.name.trim() !== "");
289
+ return filteredIdentifiers.length === 0 ? null : filteredIdentifiers;
289
290
  }
290
291
  }
291
292
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"ValueComponent.js","sourceRoot":"","sources":["../../../src/models/ValueComponent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAuB9C,MAAM,OAAO,WAAY,SAAQ,YAAY;IAGzC,YAAY,WAAwB;QAChC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;;AALM,gBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAQxC,MAAM,OAAO,SAAU,SAAQ,YAAY;IAGvC,YAAY,MAAwB;QAChC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;;AALM,cAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAQtC,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC7C;;OAEG;IACH,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;IACzC,CAAC;IACD;;OAEG;IACH,IAAI,MAAM;QACN,0EAA0E;QAC1E,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,gBAAgB,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QACnC,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAGD,YAAY,UAAyD,EAAE,MAAiC;QACpG,KAAK,EAAE,CAAC;QACR,IAAI,KAA2C,CAAC;QAChD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACjC,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,UAAU,CAAC;QACvB,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/E,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC;IACM,YAAY;QACf,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACJ,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;;AAvBM,oBAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AA0B5C,MAAM,OAAO,YAAa,SAAQ,YAAY;IAM1C,YACI,UAAgD,EAChD,IAA2C,EAC3C,QAA+B,EAC/B,IAA2B;QAE3B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;IACzC,CAAC;IACD;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IACnC,CAAC;;AA5BM,iBAAI,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAiCzC,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACvB,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;AACrB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,8DAA0C,CAAA;IAC1C,8DAA0C,CAAA;IAC1C,8CAA0B,CAAA;AAC9B,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAID,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IAGpD,YAAY,KAAuB;QAC/B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;;AALM,2BAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAQnD,MAAM,OAAO,wBAAyB,SAAQ,YAAY;IAItD,YAAY,KAAqB,EAAE,WAAoB;QACnD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;;AAPM,6BAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAUhD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAK7C,YAAY,SAA0B,EAAE,UAAkC,EAAE,QAAuC;QAC/G,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;;AATM,oBAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAY5C,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IAKnD,YAAY,SAAmC,EAAE,KAA2B,EAAE,YAAoC,IAAI;QAClH,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;;AATM,0BAAI,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAYlD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAI7C,YAAY,QAAgB,EAAE,UAA0B;QACpD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;;AAPM,oBAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAU5C,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAK9C,YAAY,IAAoB,EAAE,QAAgB,EAAE,KAAqB;QACrE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;;AATM,qBAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAY7C,MAAM,OAAO,YAAa,SAAQ,YAAY;IAI1C,YAAY,KAAuC;QAC/C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;;AANM,iBAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAS9C,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IASjD,YAAY,IAAY,EAAE,QAAoB,IAAI;QAC9C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,wDAAwD;QAC5E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;;AAbM,wBAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAgBhD,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAIhD,YAAY,KAAyB,EAAE,YAAmC,IAAI;QAC1E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;;AAPM,uBAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAU/C,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAI9C,YAAY,GAAmB,EAAE,KAAqB;QAClD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;;AAPM,qBAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAU7C;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,YAAY;IAGvC,YAAY,KAAa;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;;AALM,cAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAQtC,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAG9C,YAAY,KAAa;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;;AALM,qBAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAQ7C,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAG7C,YAAY,UAA0B;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;;AALM,oBAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAQ5C,MAAM,OAAO,cAAe,SAAQ,YAAY;IAI5C,YAAY,KAAqB,EAAE,QAAmB;QAClD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;;AAPM,mBAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAU3C,MAAM,OAAO,cAAe,SAAQ,YAAY;IAK5C,YAAY,SAAgC,EAAE,UAA8B;QACxE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;;AARM,mBAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAW3C,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAG7C,YAAY,UAA0B;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;;AALM,oBAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAQ5C,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAM/C,YAAY,UAA0B,EAAE,KAAqB,EAAE,KAAqB,EAAE,OAAgB;QAClG,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;;AAXM,sBAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAc9C,MAAM,OAAO,yBAA0B,SAAQ,YAAY;IAKvD,YAAY,SAAiB,EAAE,KAAa;QACxC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;;AARM,8BAAI,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAWtD,QAAQ;AAER,MAAM,OAAO,SAAU,SAAQ,YAAY;IAIvC,YAAY,UAAgD,EAAE,IAA2C,EAAE,WAAkC,IAAI;QAC7I,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IACD;;OAEG;IACH,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;IACzC,CAAC;IACD;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IACnC,CAAC;IACM,WAAW;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9H,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC;QACxF,CAAC;aAAM,CAAC;YACJ,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;;AA3BM,cAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AA8BtC,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAG7C,YAAY,MAAwB;QAChC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;;AALM,oBAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAQ5C,SAAS,uBAAuB,CAAC,KAAoD;IACjF,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAQ,KAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACJ,OAAO,KAA2B,CAAC;QACvC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,YAAY;IAQ3C,YAAY,UAAgD,EAAE,IAA2C;QACrG,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;IACL,CAAC;IAED,kEAAkE;IAClE,QAAQ;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACpF,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC;QAC1E,CAAC;aAAM,CAAC;YACJ,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;;AAzBM,kBAAI,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"ValueComponent.js","sourceRoot":"","sources":["../../../src/models/ValueComponent.ts"],"names":[],"mappings":"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"}
@@ -283,6 +283,8 @@ export class SqlPrintTokenParser {
283
283
  return token;
284
284
  }
285
285
  parse(arg) {
286
+ // reset parameter index before parsing
287
+ this.index = 1;
286
288
  const token = this.visit(arg);
287
289
  const paramsRaw = ParameterCollector.collect(arg).sort((a, b) => { var _a, _b; return ((_a = a.index) !== null && _a !== void 0 ? _a : 0) - ((_b = b.index) !== null && _b !== void 0 ? _b : 0); });
288
290
  const style = this.parameterDecorator.style;
@@ -399,10 +401,13 @@ export class SqlPrintTokenParser {
399
401
  }
400
402
  visitSwitchCaseArgument(arg) {
401
403
  const token = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.SwitchCaseArgument);
404
+ // Add each WHEN/THEN clause
402
405
  for (const kv of arg.cases) {
406
+ // Create a new line for each WHEN clause
403
407
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
404
408
  token.innerTokens.push(kv.accept(this));
405
409
  }
410
+ // Add ELSE clause if present
406
411
  if (arg.elseValue) {
407
412
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
408
413
  token.innerTokens.push(this.createElseToken(arg.elseValue));
@@ -411,21 +416,28 @@ export class SqlPrintTokenParser {
411
416
  }
412
417
  createElseToken(elseValue) {
413
418
  // Creates a token for the ELSE clause in a CASE expression.
414
- const elseToken = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.ElseClause);
419
+ const elseToken = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.ElseClause); // Add the ELSE keyword
415
420
  elseToken.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'else'));
421
+ // Create a container for the ELSE value to enable proper indentation
416
422
  elseToken.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
417
- elseToken.innerTokens.push(this.visit(elseValue));
423
+ const elseValueContainer = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.CaseElseValue);
424
+ elseValueContainer.innerTokens.push(this.visit(elseValue));
425
+ elseToken.innerTokens.push(elseValueContainer);
418
426
  return elseToken;
419
427
  }
420
428
  visitCaseKeyValuePair(arg) {
421
429
  const token = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.CaseKeyValuePair);
430
+ // Create WHEN clause
422
431
  token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'when'));
423
432
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
424
- token.innerTokens.push(this.visit(arg.key));
433
+ token.innerTokens.push(this.visit(arg.key)); // Create THEN clause
425
434
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
426
435
  token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'then'));
436
+ // Create a container for the THEN value to enable proper indentation
427
437
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
428
- token.innerTokens.push(this.visit(arg.value));
438
+ const thenValueContainer = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.CaseThenValue);
439
+ thenValueContainer.innerTokens.push(this.visit(arg.value));
440
+ token.innerTokens.push(thenValueContainer);
429
441
  return token;
430
442
  }
431
443
  visitRawString(arg) {
@@ -454,12 +466,16 @@ export class SqlPrintTokenParser {
454
466
  }
455
467
  visitCaseExpression(arg) {
456
468
  const token = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.CaseExpression);
469
+ // Add the CASE keyword
457
470
  token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'case'));
471
+ // Add the condition if exists
458
472
  if (arg.condition) {
459
473
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
460
474
  token.innerTokens.push(this.visit(arg.condition));
461
475
  }
476
+ // Add the WHEN/THEN pairs and ELSE
462
477
  token.innerTokens.push(this.visit(arg.switchCase));
478
+ // Add the END keyword
463
479
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
464
480
  token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'end'));
465
481
  return token;
@@ -941,9 +957,11 @@ export class SqlPrintTokenParser {
941
957
  return token;
942
958
  }
943
959
  visitInlineQuery(arg) {
944
- const token = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.InlineQuery);
960
+ const token = new SqlPrintToken(SqlPrintTokenType.container, '');
945
961
  token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
946
- token.innerTokens.push(arg.selectQuery.accept(this));
962
+ const queryToken = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.InlineQuery);
963
+ queryToken.innerTokens.push(arg.selectQuery.accept(this));
964
+ token.innerTokens.push(queryToken);
947
965
  token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
948
966
  return token;
949
967
  }