rawsql-ts 0.11.18-beta → 0.11.20-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 (34) hide show
  1. package/README.md +62 -0
  2. package/dist/esm/index.js +3 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +25 -25
  5. package/dist/esm/index.min.js.map +4 -4
  6. package/dist/esm/src/index.d.ts +3 -0
  7. package/dist/esm/src/index.js +3 -0
  8. package/dist/esm/src/index.js.map +1 -1
  9. package/dist/esm/src/transformers/CTERenamer.d.ts +144 -0
  10. package/dist/esm/src/transformers/CTERenamer.js +342 -0
  11. package/dist/esm/src/transformers/CTERenamer.js.map +1 -0
  12. package/dist/esm/src/transformers/ColumnReferenceCollector.d.ts +162 -0
  13. package/dist/esm/src/transformers/ColumnReferenceCollector.js +464 -0
  14. package/dist/esm/src/transformers/ColumnReferenceCollector.js.map +1 -0
  15. package/dist/esm/src/transformers/SelectableColumnCollector.d.ts +94 -9
  16. package/dist/esm/src/transformers/SelectableColumnCollector.js +227 -40
  17. package/dist/esm/src/transformers/SelectableColumnCollector.js.map +1 -1
  18. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  19. package/dist/index.min.js +25 -25
  20. package/dist/index.min.js.map +4 -4
  21. package/dist/src/index.d.ts +3 -0
  22. package/dist/src/index.js +5 -1
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/transformers/CTERenamer.d.ts +144 -0
  25. package/dist/src/transformers/CTERenamer.js +346 -0
  26. package/dist/src/transformers/CTERenamer.js.map +1 -0
  27. package/dist/src/transformers/ColumnReferenceCollector.d.ts +162 -0
  28. package/dist/src/transformers/ColumnReferenceCollector.js +468 -0
  29. package/dist/src/transformers/ColumnReferenceCollector.js.map +1 -0
  30. package/dist/src/transformers/SelectableColumnCollector.d.ts +94 -9
  31. package/dist/src/transformers/SelectableColumnCollector.js +225 -38
  32. package/dist/src/transformers/SelectableColumnCollector.js.map +1 -1
  33. package/dist/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +1 -1
package/README.md CHANGED
@@ -464,6 +464,68 @@ For more details, see the [SqlPaginationInjector Usage Guide](../../docs/usage-g
464
464
 
465
465
  ---
466
466
 
467
+ ## SelectableColumnCollector Features
468
+
469
+ The `SelectableColumnCollector` class extracts all column references from SQL queries, providing essential metadata for dependency analysis, schema migration, and dynamic query building. It supports both standard column collection and upstream column collection for maximum search conditions in DynamicQuery scenarios.
470
+
471
+ Key benefits include:
472
+ - **Column Dependency Analysis**: Identify all column references used in SQL queries
473
+ - **Schema Migration Support**: Track column usage across complex queries for safe schema changes
474
+ - **DynamicQuery Integration**: Collect maximum available columns for flexible search conditions
475
+ - **Upstream Column Collection**: Gather all columns from CTEs, subqueries, and tables for comprehensive analysis
476
+ - **Duplicate Detection**: Configurable modes for handling duplicate column names (column-only vs table.column)
477
+ - **Security Analysis**: Enable column-level access control by understanding column dependencies
478
+
479
+ ```typescript
480
+ import { SelectableColumnCollector, DuplicateDetectionMode } from 'rawsql-ts';
481
+
482
+ const sql = `
483
+ WITH user_stats AS (
484
+ SELECT u.id, u.name, u.email, COUNT(p.id) as post_count
485
+ FROM users u
486
+ LEFT JOIN posts p ON u.id = p.user_id
487
+ GROUP BY u.id, u.name, u.email
488
+ )
489
+ SELECT us.name, us.post_count
490
+ FROM user_stats us
491
+ WHERE us.post_count > 5
492
+ `;
493
+
494
+ const query = SelectQueryParser.parse(sql);
495
+
496
+ // Basic column collection - only referenced columns
497
+ const collector = new SelectableColumnCollector();
498
+ const columns = collector.collect(query);
499
+ console.log(columns.map(c => c.name));
500
+ // Output: ['name', 'post_count']
501
+
502
+ // Upstream collection for DynamicQuery - all available columns
503
+ const upstreamCollector = new SelectableColumnCollector(
504
+ null, false, DuplicateDetectionMode.ColumnNameOnly,
505
+ { upstream: true }
506
+ );
507
+ const allColumns = upstreamCollector.collect(query);
508
+ console.log(allColumns.map(c => c.name));
509
+ // Output: ['name', 'post_count', 'id', 'email'] // All columns from CTE
510
+
511
+ // Duplicate detection modes
512
+ const fullNameCollector = new SelectableColumnCollector(
513
+ null, false, DuplicateDetectionMode.FullName
514
+ );
515
+ const uniqueColumns = fullNameCollector.collect(query);
516
+ // Distinguishes between u.id and p.id as separate columns
517
+ ```
518
+
519
+ ### Use Cases
520
+
521
+ - **DynamicQuery Maximum Search Conditions**: Collect all available columns from upstream sources (CTEs, subqueries, tables) to enable comprehensive filtering options
522
+ - **Schema Migration Planning**: Identify all column dependencies before making schema changes
523
+ - **Security Analysis**: Implement column-level access control by understanding which columns are accessed
524
+ - **Query Optimization**: Analyze column usage patterns to optimize query performance
525
+ - **API Generation**: Automatically generate filter and sort options based on available columns
526
+
527
+ ---
528
+
467
529
  ## DynamicQueryBuilder Features
468
530
 
469
531
  The `DynamicQueryBuilder` class is a powerful, all-in-one solution that combines SQL parsing with dynamic condition injection (filtering, sorting, pagination, and JSON serialization). It provides a unified interface for building complex queries without the need to manually chain multiple injectors, making it ideal for modern web applications that require flexible, dynamic query generation.
package/dist/esm/index.js CHANGED
@@ -13,12 +13,15 @@ export * from './transformers/CTEDisabler';
13
13
  export * from './transformers/CTEDependencyAnalyzer';
14
14
  export * from './transformers/CTEQueryDecomposer';
15
15
  export * from './transformers/CTEComposer';
16
+ export * from './transformers/CTERenamer';
17
+ export * from './transformers/ColumnReferenceCollector';
16
18
  export * from './transformers/Formatter';
17
19
  export * from './transformers/SqlFormatter';
18
20
  export * from './transformers/PostgresJsonQueryBuilder';
19
21
  export * from './transformers/QueryBuilder'; // old name:QueryConverter
20
22
  export * from './transformers/SelectValueCollector';
21
23
  export * from './transformers/SelectableColumnCollector';
24
+ export { DuplicateDetectionMode } from './transformers/SelectableColumnCollector';
22
25
  export * from './transformers/TableColumnResolver';
23
26
  export * from './transformers/TableSourceCollector';
24
27
  export * from './transformers/JsonMappingConverter';
@@ -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;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,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,0CAA0C,CAAC;AACzD,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,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AAGrC,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;AAClC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,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,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,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,0CAA0C,CAAC;AACzD,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,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AAGrC,oEAAoE"}