rawsql-ts 0.11.1-beta → 0.11.3-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 (112) hide show
  1. package/README.md +735 -682
  2. package/dist/esm/index.js +8 -2
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +46 -12
  5. package/dist/esm/index.min.js.map +4 -4
  6. package/dist/esm/src/index.js +8 -2
  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/SelectQuery.js +1 -0
  13. package/dist/esm/src/models/SelectQuery.js.map +1 -1
  14. package/dist/esm/src/models/SimpleSelectQuery.js +229 -0
  15. package/dist/esm/src/models/SimpleSelectQuery.js.map +1 -1
  16. package/dist/esm/src/models/ValuesQuery.js +1 -1
  17. package/dist/esm/src/models/ValuesQuery.js.map +1 -1
  18. package/dist/esm/src/parsers/ValueParser.js +86 -4
  19. package/dist/esm/src/parsers/ValueParser.js.map +1 -1
  20. package/dist/esm/src/transformers/DynamicQueryBuilder.js.map +1 -1
  21. package/dist/esm/src/transformers/EnhancedJsonMapping.js +217 -0
  22. package/dist/esm/src/transformers/EnhancedJsonMapping.js.map +1 -0
  23. package/dist/esm/src/transformers/JsonMappingConverter.js +388 -0
  24. package/dist/esm/src/transformers/JsonMappingConverter.js.map +1 -0
  25. package/dist/esm/src/transformers/JsonMappingUnifier.js +36 -46
  26. package/dist/esm/src/transformers/JsonMappingUnifier.js.map +1 -1
  27. package/dist/esm/src/transformers/ModelDrivenJsonMapping.js +14 -2
  28. package/dist/esm/src/transformers/ModelDrivenJsonMapping.js.map +1 -1
  29. package/dist/esm/src/transformers/PostgresArrayEntityCteBuilder.js +132 -97
  30. package/dist/esm/src/transformers/PostgresArrayEntityCteBuilder.js.map +1 -1
  31. package/dist/esm/src/transformers/PostgresJsonQueryBuilder.js +21 -11
  32. package/dist/esm/src/transformers/PostgresJsonQueryBuilder.js.map +1 -1
  33. package/dist/esm/src/transformers/PostgresObjectEntityCteBuilder.js +71 -14
  34. package/dist/esm/src/transformers/PostgresObjectEntityCteBuilder.js.map +1 -1
  35. package/dist/esm/src/transformers/QueryBuilder.js +2 -0
  36. package/dist/esm/src/transformers/QueryBuilder.js.map +1 -1
  37. package/dist/esm/src/transformers/SqlParamInjector.js +189 -108
  38. package/dist/esm/src/transformers/SqlParamInjector.js.map +1 -1
  39. package/dist/esm/src/transformers/UpstreamSelectQueryFinder.js +43 -2
  40. package/dist/esm/src/transformers/UpstreamSelectQueryFinder.js.map +1 -1
  41. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  42. package/dist/esm/types/src/index.d.ts +8 -2
  43. package/dist/esm/types/src/models/BinarySelectQuery.d.ts +7 -0
  44. package/dist/esm/types/src/models/CTEError.d.ts +21 -0
  45. package/dist/esm/types/src/models/SelectQuery.d.ts +12 -0
  46. package/dist/esm/types/src/models/SimpleSelectQuery.d.ts +166 -2
  47. package/dist/esm/types/src/models/ValuesQuery.d.ts +1 -1
  48. package/dist/esm/types/src/parsers/ValueParser.d.ts +8 -0
  49. package/dist/esm/types/src/transformers/DynamicQueryBuilder.d.ts +6 -0
  50. package/dist/esm/types/src/transformers/EnhancedJsonMapping.d.ts +194 -0
  51. package/dist/esm/types/src/transformers/JsonMappingConverter.d.ts +200 -0
  52. package/dist/esm/types/src/transformers/JsonMappingUnifier.d.ts +5 -0
  53. package/dist/esm/types/src/transformers/PostgresArrayEntityCteBuilder.d.ts +39 -77
  54. package/dist/esm/types/src/transformers/PostgresJsonQueryBuilder.d.ts +3 -2
  55. package/dist/esm/types/src/transformers/PostgresObjectEntityCteBuilder.d.ts +31 -6
  56. package/dist/esm/types/src/transformers/SqlParamInjector.d.ts +48 -0
  57. package/dist/esm/types/src/transformers/UpstreamSelectQueryFinder.d.ts +8 -0
  58. package/dist/index.min.js +46 -12
  59. package/dist/index.min.js.map +4 -4
  60. package/dist/src/index.d.ts +8 -2
  61. package/dist/src/index.js +8 -3
  62. package/dist/src/index.js.map +1 -1
  63. package/dist/src/models/BinarySelectQuery.d.ts +7 -0
  64. package/dist/src/models/BinarySelectQuery.js +9 -0
  65. package/dist/src/models/BinarySelectQuery.js.map +1 -1
  66. package/dist/src/models/CTEError.d.ts +21 -0
  67. package/dist/src/models/CTEError.js +37 -0
  68. package/dist/src/models/CTEError.js.map +1 -0
  69. package/dist/src/models/SelectQuery.d.ts +12 -0
  70. package/dist/src/models/SelectQuery.js +5 -1
  71. package/dist/src/models/SelectQuery.js.map +1 -1
  72. package/dist/src/models/SimpleSelectQuery.d.ts +166 -2
  73. package/dist/src/models/SimpleSelectQuery.js +229 -0
  74. package/dist/src/models/SimpleSelectQuery.js.map +1 -1
  75. package/dist/src/models/ValuesQuery.d.ts +1 -1
  76. package/dist/src/models/ValuesQuery.js +1 -1
  77. package/dist/src/models/ValuesQuery.js.map +1 -1
  78. package/dist/src/parsers/ValueParser.d.ts +8 -0
  79. package/dist/src/parsers/ValueParser.js +86 -4
  80. package/dist/src/parsers/ValueParser.js.map +1 -1
  81. package/dist/src/transformers/DynamicQueryBuilder.d.ts +6 -0
  82. package/dist/src/transformers/DynamicQueryBuilder.js.map +1 -1
  83. package/dist/src/transformers/EnhancedJsonMapping.d.ts +194 -0
  84. package/dist/src/transformers/EnhancedJsonMapping.js +223 -0
  85. package/dist/src/transformers/EnhancedJsonMapping.js.map +1 -0
  86. package/dist/src/transformers/JsonMappingConverter.d.ts +200 -0
  87. package/dist/src/transformers/JsonMappingConverter.js +392 -0
  88. package/dist/src/transformers/JsonMappingConverter.js.map +1 -0
  89. package/dist/src/transformers/JsonMappingUnifier.d.ts +5 -0
  90. package/dist/src/transformers/JsonMappingUnifier.js +36 -46
  91. package/dist/src/transformers/JsonMappingUnifier.js.map +1 -1
  92. package/dist/src/transformers/ModelDrivenJsonMapping.js +14 -2
  93. package/dist/src/transformers/ModelDrivenJsonMapping.js.map +1 -1
  94. package/dist/src/transformers/PostgresArrayEntityCteBuilder.d.ts +39 -77
  95. package/dist/src/transformers/PostgresArrayEntityCteBuilder.js +132 -97
  96. package/dist/src/transformers/PostgresArrayEntityCteBuilder.js.map +1 -1
  97. package/dist/src/transformers/PostgresJsonQueryBuilder.d.ts +3 -2
  98. package/dist/src/transformers/PostgresJsonQueryBuilder.js +21 -11
  99. package/dist/src/transformers/PostgresJsonQueryBuilder.js.map +1 -1
  100. package/dist/src/transformers/PostgresObjectEntityCteBuilder.d.ts +31 -6
  101. package/dist/src/transformers/PostgresObjectEntityCteBuilder.js +71 -14
  102. package/dist/src/transformers/PostgresObjectEntityCteBuilder.js.map +1 -1
  103. package/dist/src/transformers/QueryBuilder.js +2 -0
  104. package/dist/src/transformers/QueryBuilder.js.map +1 -1
  105. package/dist/src/transformers/SqlParamInjector.d.ts +48 -0
  106. package/dist/src/transformers/SqlParamInjector.js +189 -108
  107. package/dist/src/transformers/SqlParamInjector.js.map +1 -1
  108. package/dist/src/transformers/UpstreamSelectQueryFinder.d.ts +8 -0
  109. package/dist/src/transformers/UpstreamSelectQueryFinder.js +43 -2
  110. package/dist/src/transformers/UpstreamSelectQueryFinder.js.map +1 -1
  111. package/dist/tsconfig.tsbuildinfo +1 -1
  112. package/package.json +2 -2
@@ -14,6 +14,23 @@ export interface ProcessableEntity {
14
14
  parentId?: string;
15
15
  relationshipType?: "object" | "array";
16
16
  }
17
+ /**
18
+ * JSON column mapping information
19
+ */
20
+ export interface JsonColumnMapping {
21
+ entityId: string;
22
+ entityName: string;
23
+ generatedColumnName: string;
24
+ depth: number;
25
+ }
26
+ /**
27
+ * Result from CTE builder including column mappings
28
+ */
29
+ export interface CteBuilderResult {
30
+ ctes: CommonTable[];
31
+ lastCteAlias: string;
32
+ columnMappings: JsonColumnMapping[];
33
+ }
17
34
  /**
18
35
  * PostgreSQL-specific builder for creating CTEs for object entities (object relationships).
19
36
  * This class handles the creation of CTEs that build JSON/JSONB objects for object entities,
@@ -43,19 +60,23 @@ export interface ProcessableEntity {
43
60
  * Processing order: depth 2 → depth 1 → depth 0
44
61
  */
45
62
  export declare class PostgresObjectEntityCteBuilder {
46
- private static readonly JSON_COLUMN_SUFFIX;
47
63
  private static readonly CTE_OBJECT_PREFIX;
48
- private static readonly WILDCARD_COLUMN; /**
64
+ private static readonly WILDCARD_COLUMN;
65
+ private jsonColumnCounter;
66
+ private entityToJsonColumnMap;
67
+ private columnMappings;
68
+ /**
49
69
  * Build CTEs for all object entities in the correct dependency order
50
70
  * @param initialCte The starting CTE containing all raw data
51
71
  * @param allEntities Map of all entities in the mapping
52
72
  * @param mapping The JSON mapping configuration
53
73
  * @returns Array of CTEs and the alias of the last CTE created
54
74
  */
55
- buildObjectEntityCtes(initialCte: CommonTable, allEntities: Map<string, ProcessableEntity>, mapping: JsonMapping): {
56
- ctes: CommonTable[];
57
- lastCteAlias: string;
58
- }; /**
75
+ buildObjectEntityCtes(initialCte: CommonTable, allEntities: Map<string, ProcessableEntity>, mapping: JsonMapping): CteBuilderResult;
76
+ /**
77
+ * Generate unique JSON column name with entity name and counter
78
+ */
79
+ private generateUniqueJsonColumnName; /**
59
80
  * Collect all object entities and calculate their depth from root.
60
81
  *
61
82
  * Depth calculation is crucial because:
@@ -87,6 +108,10 @@ export declare class PostgresObjectEntityCteBuilder {
87
108
  * Build JSON column for a single entity with NULL handling
88
109
  */
89
110
  private buildEntityJsonColumn;
111
+ /**
112
+ * Calculate approximate depth for an entity (for mapping purposes)
113
+ */
114
+ private calculateApproximateDepth;
90
115
  /**
91
116
  * Prepare entity columns and NULL checks.
92
117
  *
@@ -24,6 +24,54 @@ export declare class SqlParamInjector {
24
24
  * @throws Error when all parameters are undefined and allowAllUndefined is not set to true
25
25
  */
26
26
  inject(query: SimpleSelectQuery | string, state: Record<string, number | string | boolean | Date | null | undefined | Condition>): SelectQuery;
27
+ /**
28
+ * Type guard for OR conditions
29
+ */
30
+ private isOrCondition;
31
+ /**
32
+ * Type guard for AND conditions
33
+ */
34
+ private isAndCondition;
35
+ /**
36
+ * Type guard for explicit column mapping without OR
37
+ */
38
+ private isExplicitColumnMapping;
39
+ /**
40
+ * Type guard for objects that need operator validation
41
+ */
42
+ private isValidatableObject;
43
+ /**
44
+ * Type guard for column mapping presence
45
+ */
46
+ private hasColumnMapping;
47
+ /**
48
+ * Type guard for simple values (non-object conditions)
49
+ */
50
+ private isSimpleValue;
51
+ /**
52
+ * Processes a single state parameter
53
+ */
54
+ private processStateParameter;
55
+ /**
56
+ * Processes regular column conditions (non-logical, non-explicit)
57
+ */
58
+ private processRegularColumnCondition;
59
+ /**
60
+ * Finds target query for logical conditions (AND/OR)
61
+ */
62
+ private findTargetQueryForLogicalCondition;
63
+ /**
64
+ * Collects all available columns from a query including CTE columns
65
+ */
66
+ private getAllAvailableColumns;
67
+ /**
68
+ * Collects column names and references from CTE definitions
69
+ */
70
+ private collectCTEColumns;
71
+ /**
72
+ * Recursively collects columns from any SelectQuery type
73
+ */
74
+ private collectColumnsFromSelectQuery;
27
75
  }
28
76
  type BaseCondition = {
29
77
  '='?: number | string | boolean | Date;
@@ -31,4 +31,12 @@ export declare class UpstreamSelectQueryFinder {
31
31
  */
32
32
  private processFromClauseBranches;
33
33
  private findUpstream;
34
+ /**
35
+ * Collects columns defined in CTEs
36
+ */
37
+ private collectCTEColumns;
38
+ /**
39
+ * Recursively collects columns from SelectQuery
40
+ */
41
+ private collectColumnsFromSelectQuery;
34
42
  }