rawsql-ts 0.1.0-beta.11 → 0.1.0-beta.12

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 (200) hide show
  1. package/README.md +22 -0
  2. package/dist/esm/index.js +17 -0
  3. package/dist/esm/index.js.map +1 -0
  4. package/dist/esm/models/BinarySelectQuery.js +137 -0
  5. package/dist/esm/models/BinarySelectQuery.js.map +1 -0
  6. package/dist/esm/models/Clause.js +289 -0
  7. package/dist/esm/models/Clause.js.map +1 -0
  8. package/dist/esm/models/KeywordTrie.js +48 -0
  9. package/dist/esm/models/KeywordTrie.js.map +1 -0
  10. package/dist/esm/models/Lexeme.js +18 -0
  11. package/dist/esm/models/Lexeme.js.map +1 -0
  12. package/dist/esm/models/SelectQuery.js +5 -0
  13. package/dist/esm/models/SelectQuery.js.map +1 -0
  14. package/dist/esm/models/SimpleSelectQuery.js +288 -0
  15. package/dist/esm/models/SimpleSelectQuery.js.map +1 -0
  16. package/dist/esm/models/SqlComponent.js +22 -0
  17. package/dist/esm/models/SqlComponent.js.map +1 -0
  18. package/dist/esm/models/ValueComponent.js +223 -0
  19. package/dist/esm/models/ValueComponent.js.map +1 -0
  20. package/dist/esm/models/ValuesQuery.js +12 -0
  21. package/dist/esm/models/ValuesQuery.js.map +1 -0
  22. package/dist/esm/parsers/CommandExpressionParser.js +120 -0
  23. package/dist/esm/parsers/CommandExpressionParser.js.map +1 -0
  24. package/dist/esm/parsers/CommonTableParser.js +58 -0
  25. package/dist/esm/parsers/CommonTableParser.js.map +1 -0
  26. package/dist/esm/parsers/ForClauseParser.js +54 -0
  27. package/dist/esm/parsers/ForClauseParser.js.map +1 -0
  28. package/dist/esm/parsers/FromClauseParser.js +43 -0
  29. package/dist/esm/parsers/FromClauseParser.js.map +1 -0
  30. package/dist/esm/parsers/FunctionExpressionParser.js +174 -0
  31. package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -0
  32. package/dist/esm/parsers/GroupByParser.js +54 -0
  33. package/dist/esm/parsers/GroupByParser.js.map +1 -0
  34. package/dist/esm/parsers/HavingParser.js +32 -0
  35. package/dist/esm/parsers/HavingParser.js.map +1 -0
  36. package/dist/esm/parsers/IdentifierParser.js +35 -0
  37. package/dist/esm/parsers/IdentifierParser.js.map +1 -0
  38. package/dist/esm/parsers/JoinClauseParser.js +101 -0
  39. package/dist/esm/parsers/JoinClauseParser.js.map +1 -0
  40. package/dist/esm/parsers/KeywordParser.js +87 -0
  41. package/dist/esm/parsers/KeywordParser.js.map +1 -0
  42. package/dist/esm/parsers/LimitClauseParser.js +46 -0
  43. package/dist/esm/parsers/LimitClauseParser.js.map +1 -0
  44. package/dist/esm/parsers/LiteralParser.js +34 -0
  45. package/dist/esm/parsers/LiteralParser.js.map +1 -0
  46. package/dist/esm/parsers/OrderByClauseParser.js +73 -0
  47. package/dist/esm/parsers/OrderByClauseParser.js.map +1 -0
  48. package/dist/esm/parsers/OverExpressionParser.js +40 -0
  49. package/dist/esm/parsers/OverExpressionParser.js.map +1 -0
  50. package/dist/esm/parsers/ParameterExpressionParser.js +11 -0
  51. package/dist/esm/parsers/ParameterExpressionParser.js.map +1 -0
  52. package/dist/esm/parsers/ParenExpressionParser.js +29 -0
  53. package/dist/esm/parsers/ParenExpressionParser.js.map +1 -0
  54. package/dist/esm/parsers/PartitionByParser.js +49 -0
  55. package/dist/esm/parsers/PartitionByParser.js.map +1 -0
  56. package/dist/esm/parsers/SelectClauseParser.js +80 -0
  57. package/dist/esm/parsers/SelectClauseParser.js.map +1 -0
  58. package/dist/esm/parsers/SelectQueryParser.js +149 -0
  59. package/dist/esm/parsers/SelectQueryParser.js.map +1 -0
  60. package/dist/esm/parsers/SourceAliasExpressionParser.js +45 -0
  61. package/dist/esm/parsers/SourceAliasExpressionParser.js.map +1 -0
  62. package/dist/esm/parsers/SourceExpressionParser.js +31 -0
  63. package/dist/esm/parsers/SourceExpressionParser.js.map +1 -0
  64. package/dist/esm/parsers/SourceParser.js +115 -0
  65. package/dist/esm/parsers/SourceParser.js.map +1 -0
  66. package/dist/esm/parsers/SqlTokenizer.js +170 -0
  67. package/dist/esm/parsers/SqlTokenizer.js.map +1 -0
  68. package/dist/esm/parsers/StringSpecifierExpressionParser.js +18 -0
  69. package/dist/esm/parsers/StringSpecifierExpressionParser.js.map +1 -0
  70. package/dist/esm/parsers/UnaryExpressionParser.js +26 -0
  71. package/dist/esm/parsers/UnaryExpressionParser.js.map +1 -0
  72. package/dist/esm/parsers/ValueParser.js +132 -0
  73. package/dist/esm/parsers/ValueParser.js.map +1 -0
  74. package/dist/esm/parsers/ValuesQueryParser.js +82 -0
  75. package/dist/esm/parsers/ValuesQueryParser.js.map +1 -0
  76. package/dist/esm/parsers/WhereClauseParser.js +32 -0
  77. package/dist/esm/parsers/WhereClauseParser.js.map +1 -0
  78. package/dist/esm/parsers/WindowClauseParser.js +41 -0
  79. package/dist/esm/parsers/WindowClauseParser.js.map +1 -0
  80. package/dist/esm/parsers/WindowExpressionParser.js +159 -0
  81. package/dist/esm/parsers/WindowExpressionParser.js.map +1 -0
  82. package/dist/esm/parsers/WithClauseParser.js +53 -0
  83. package/dist/esm/parsers/WithClauseParser.js.map +1 -0
  84. package/dist/esm/tokenReaders/BaseTokenReader.js +78 -0
  85. package/dist/esm/tokenReaders/BaseTokenReader.js.map +1 -0
  86. package/dist/esm/tokenReaders/CommandTokenReader.js +141 -0
  87. package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -0
  88. package/dist/esm/tokenReaders/FunctionTokenReader.js +41 -0
  89. package/dist/esm/tokenReaders/FunctionTokenReader.js.map +1 -0
  90. package/dist/esm/tokenReaders/IdentifierTokenReader.js +66 -0
  91. package/dist/esm/tokenReaders/IdentifierTokenReader.js.map +1 -0
  92. package/dist/esm/tokenReaders/LiteralTokenReader.js +185 -0
  93. package/dist/esm/tokenReaders/LiteralTokenReader.js.map +1 -0
  94. package/dist/esm/tokenReaders/OperatorTokenReader.js +94 -0
  95. package/dist/esm/tokenReaders/OperatorTokenReader.js.map +1 -0
  96. package/dist/esm/tokenReaders/ParameterTokenReader.js +40 -0
  97. package/dist/esm/tokenReaders/ParameterTokenReader.js.map +1 -0
  98. package/dist/esm/tokenReaders/StringSpecifierTokenReader.js +27 -0
  99. package/dist/esm/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
  100. package/dist/esm/tokenReaders/SymbolTokenReader.js +31 -0
  101. package/dist/esm/tokenReaders/SymbolTokenReader.js.map +1 -0
  102. package/dist/esm/tokenReaders/TokenReaderManager.js +106 -0
  103. package/dist/esm/tokenReaders/TokenReaderManager.js.map +1 -0
  104. package/dist/esm/tokenReaders/TypeTokenReader.js +55 -0
  105. package/dist/esm/tokenReaders/TypeTokenReader.js.map +1 -0
  106. package/dist/esm/transformers/CTEBuilder.js +184 -0
  107. package/dist/esm/transformers/CTEBuilder.js.map +1 -0
  108. package/dist/esm/transformers/CTECollector.js +380 -0
  109. package/dist/esm/transformers/CTECollector.js.map +1 -0
  110. package/dist/esm/transformers/CTEDisabler.js +321 -0
  111. package/dist/esm/transformers/CTEDisabler.js.map +1 -0
  112. package/dist/esm/transformers/CTEInjector.js +79 -0
  113. package/dist/esm/transformers/CTEInjector.js.map +1 -0
  114. package/dist/esm/transformers/CTENormalizer.js +42 -0
  115. package/dist/esm/transformers/CTENormalizer.js.map +1 -0
  116. package/dist/esm/transformers/Formatter.js +463 -0
  117. package/dist/esm/transformers/Formatter.js.map +1 -0
  118. package/dist/esm/transformers/QueryConverter.js +115 -0
  119. package/dist/esm/transformers/QueryConverter.js.map +1 -0
  120. package/dist/esm/transformers/SelectValueCollector.js +245 -0
  121. package/dist/esm/transformers/SelectValueCollector.js.map +1 -0
  122. package/dist/esm/transformers/SelectableColumnCollector.js +304 -0
  123. package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -0
  124. package/dist/esm/transformers/TableColumnResolver.js +2 -0
  125. package/dist/esm/transformers/TableColumnResolver.js.map +1 -0
  126. package/dist/esm/transformers/TableSourceCollector.js +380 -0
  127. package/dist/esm/transformers/TableSourceCollector.js.map +1 -0
  128. package/dist/esm/transformers/UpstreamSelectQueryFinder.js +125 -0
  129. package/dist/esm/transformers/UpstreamSelectQueryFinder.js.map +1 -0
  130. package/dist/esm/types/index.d.ts +14 -0
  131. package/dist/esm/types/models/BinarySelectQuery.d.ts +91 -0
  132. package/dist/esm/types/models/Clause.d.ts +189 -0
  133. package/dist/esm/types/models/KeywordTrie.d.ts +11 -0
  134. package/dist/esm/types/models/Lexeme.d.ts +25 -0
  135. package/dist/esm/types/models/SelectQuery.d.ts +5 -0
  136. package/dist/esm/types/models/SimpleSelectQuery.d.ts +167 -0
  137. package/dist/esm/types/models/SqlComponent.d.ts +18 -0
  138. package/dist/esm/types/models/ValueComponent.d.ts +158 -0
  139. package/dist/esm/types/models/ValuesQuery.d.ts +10 -0
  140. package/dist/esm/types/parsers/CommandExpressionParser.d.ts +15 -0
  141. package/dist/esm/types/parsers/CommonTableParser.d.ts +9 -0
  142. package/dist/esm/types/parsers/ForClauseParser.d.ts +9 -0
  143. package/dist/esm/types/parsers/FromClauseParser.d.ts +9 -0
  144. package/dist/esm/types/parsers/FunctionExpressionParser.d.ts +22 -0
  145. package/dist/esm/types/parsers/GroupByParser.d.ts +10 -0
  146. package/dist/esm/types/parsers/HavingParser.d.ts +9 -0
  147. package/dist/esm/types/parsers/IdentifierParser.d.ts +8 -0
  148. package/dist/esm/types/parsers/JoinClauseParser.d.ts +14 -0
  149. package/dist/esm/types/parsers/KeywordParser.d.ts +17 -0
  150. package/dist/esm/types/parsers/LimitClauseParser.d.ts +9 -0
  151. package/dist/esm/types/parsers/LiteralParser.d.ts +8 -0
  152. package/dist/esm/types/parsers/OrderByClauseParser.d.ts +10 -0
  153. package/dist/esm/types/parsers/OverExpressionParser.d.ts +9 -0
  154. package/dist/esm/types/parsers/ParameterExpressionParser.d.ts +8 -0
  155. package/dist/esm/types/parsers/ParenExpressionParser.d.ts +8 -0
  156. package/dist/esm/types/parsers/PartitionByParser.d.ts +9 -0
  157. package/dist/esm/types/parsers/SelectClauseParser.d.ts +10 -0
  158. package/dist/esm/types/parsers/SelectQueryParser.d.ts +13 -0
  159. package/dist/esm/types/parsers/SourceAliasExpressionParser.d.ts +8 -0
  160. package/dist/esm/types/parsers/SourceExpressionParser.d.ts +8 -0
  161. package/dist/esm/types/parsers/SourceParser.d.ts +13 -0
  162. package/dist/esm/types/parsers/SqlTokenizer.d.ts +64 -0
  163. package/dist/esm/types/parsers/StringSpecifierExpressionParser.d.ts +8 -0
  164. package/dist/esm/types/parsers/UnaryExpressionParser.d.ts +8 -0
  165. package/dist/esm/types/parsers/ValueParser.d.ts +14 -0
  166. package/dist/esm/types/parsers/ValuesQueryParser.d.ts +10 -0
  167. package/dist/esm/types/parsers/WhereClauseParser.d.ts +9 -0
  168. package/dist/esm/types/parsers/WindowClauseParser.d.ts +9 -0
  169. package/dist/esm/types/parsers/WindowExpressionParser.d.ts +12 -0
  170. package/dist/esm/types/parsers/WithClauseParser.d.ts +9 -0
  171. package/dist/esm/types/tokenReaders/BaseTokenReader.d.ts +43 -0
  172. package/dist/esm/types/tokenReaders/CommandTokenReader.d.ts +7 -0
  173. package/dist/esm/types/tokenReaders/FunctionTokenReader.d.ts +11 -0
  174. package/dist/esm/types/tokenReaders/IdentifierTokenReader.d.ts +15 -0
  175. package/dist/esm/types/tokenReaders/LiteralTokenReader.d.ts +23 -0
  176. package/dist/esm/types/tokenReaders/OperatorTokenReader.d.ts +5 -0
  177. package/dist/esm/types/tokenReaders/ParameterTokenReader.d.ts +11 -0
  178. package/dist/esm/types/tokenReaders/StringSpecifierTokenReader.d.ts +8 -0
  179. package/dist/esm/types/tokenReaders/SymbolTokenReader.d.ts +12 -0
  180. package/dist/esm/types/tokenReaders/TokenReaderManager.d.ts +53 -0
  181. package/dist/esm/types/tokenReaders/TypeTokenReader.d.ts +11 -0
  182. package/dist/esm/types/transformers/CTEBuilder.d.ts +52 -0
  183. package/dist/esm/types/transformers/CTECollector.d.ts +81 -0
  184. package/dist/esm/types/transformers/CTEDisabler.d.ts +77 -0
  185. package/dist/esm/types/transformers/CTEInjector.d.ts +40 -0
  186. package/dist/esm/types/transformers/CTENormalizer.d.ts +25 -0
  187. package/dist/esm/types/transformers/Formatter.d.ts +82 -0
  188. package/dist/esm/types/transformers/QueryConverter.d.ts +41 -0
  189. package/dist/esm/types/transformers/SelectValueCollector.d.ts +60 -0
  190. package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +70 -0
  191. package/dist/esm/types/transformers/TableColumnResolver.d.ts +10 -0
  192. package/dist/esm/types/transformers/TableSourceCollector.d.ts +92 -0
  193. package/dist/esm/types/transformers/UpstreamSelectQueryFinder.d.ts +27 -0
  194. package/dist/esm/types/utils/charLookupTable.d.ts +11 -0
  195. package/dist/esm/types/utils/stringUtils.d.ts +43 -0
  196. package/dist/esm/utils/charLookupTable.js +69 -0
  197. package/dist/esm/utils/charLookupTable.js.map +1 -0
  198. package/dist/esm/utils/stringUtils.js +164 -0
  199. package/dist/esm/utils/stringUtils.js.map +1 -0
  200. package/package.json +12 -1
@@ -0,0 +1,463 @@
1
+ import { BinarySelectQuery, SimpleSelectQuery, ValuesQuery } from "../models/SelectQuery";
2
+ import { LiteralValue, RawString, IdentifierString, ColumnReference, FunctionCall, UnaryExpression, BinaryExpression, ParameterExpression, ArrayExpression, CaseExpression, CastExpression, ParenExpression, BetweenExpression, SwitchCaseArgument, ValueList, StringSpecifierExpression, TypeValue, WindowFrameExpression, WindowFrameSpec, WindowFrameBound, WindowFrameBoundaryValue, WindowFrameBoundStatic, InlineQuery, TupleExpression } from "../models/ValueComponent";
3
+ import { CommonTable, Distinct, DistinctOn, FetchSpecification, FetchType, ForClause, FromClause, FunctionSource, GroupByClause, HavingClause, JoinClause, JoinOnClause, JoinUsingClause, LimitClause, NullsSortDirection, OrderByClause, OrderByItem, PartitionByClause, SelectClause, SelectItem, SortDirection, SourceAliasExpression, SourceExpression, SubQuerySource, TableSource, WhereClause, WindowFrameClause, WithClause } from "../models/Clause";
4
+ export class Formatter {
5
+ constructor() {
6
+ this.handlers = new Map();
7
+ // Default settings
8
+ this.config = {
9
+ identifierEscape: {
10
+ start: '"',
11
+ end: '"'
12
+ },
13
+ parameterSymbol: ':' // Use PostgreSQL style as default
14
+ };
15
+ // value
16
+ this.handlers.set(LiteralValue.kind, (expr) => this.visitLiteralExpression(expr));
17
+ this.handlers.set(RawString.kind, (expr) => this.visitRawString(expr));
18
+ this.handlers.set(StringSpecifierExpression.kind, (expr) => this.visitStringSpecifierExpression(expr));
19
+ this.handlers.set(IdentifierString.kind, (expr) => this.visitIdentifierString(expr));
20
+ this.handlers.set(SwitchCaseArgument.kind, (expr) => this.visitSwitchCaseArgument(expr));
21
+ this.handlers.set(ValueList.kind, (expr) => this.visitValueList(expr));
22
+ this.handlers.set(ColumnReference.kind, (expr) => this.visitColumnReference(expr));
23
+ this.handlers.set(FunctionCall.kind, (expr) => this.visitFunctionCall(expr));
24
+ this.handlers.set(UnaryExpression.kind, (expr) => this.visitUnaryExpression(expr));
25
+ this.handlers.set(BinaryExpression.kind, (expr) => this.visitBinaryExpression(expr));
26
+ this.handlers.set(ParameterExpression.kind, (expr) => this.visitParameterExpression(expr));
27
+ this.handlers.set(SelectItem.kind, (expr) => this.visitSelectExpression(expr));
28
+ this.handlers.set(ArrayExpression.kind, (expr) => this.visitArrayExpression(expr));
29
+ this.handlers.set(CaseExpression.kind, (expr) => this.visitCaseExpression(expr));
30
+ this.handlers.set(CastExpression.kind, (expr) => this.visitCastExpression(expr));
31
+ this.handlers.set(ParenExpression.kind, (expr) => this.visitBracketExpression(expr));
32
+ this.handlers.set(BetweenExpression.kind, (expr) => this.visitBetweenExpression(expr));
33
+ this.handlers.set(TypeValue.kind, (expr) => this.visitTypeValue(expr));
34
+ this.handlers.set(InlineQuery.kind, (expr) => this.visitInlineQuery(expr));
35
+ // source alias
36
+ this.handlers.set(SourceAliasExpression.kind, (expr) => this.visitSourceAliasExpression(expr));
37
+ // from
38
+ this.handlers.set(FromClause.kind, (expr) => this.visitFromClause(expr));
39
+ this.handlers.set(JoinClause.kind, (expr) => this.visitJoinClause(expr));
40
+ this.handlers.set(JoinOnClause.kind, (expr) => this.visitJoinOnClause(expr));
41
+ this.handlers.set(JoinUsingClause.kind, (expr) => this.visitJoinUsingClause(expr));
42
+ this.handlers.set(SourceExpression.kind, (expr) => this.visitSourceExpression(expr));
43
+ this.handlers.set(SubQuerySource.kind, (expr) => this.visitSubQuerySource(expr));
44
+ this.handlers.set(FunctionSource.kind, (expr) => this.visitFunctionSource(expr));
45
+ this.handlers.set(TableSource.kind, (expr) => this.visitTableSource(expr));
46
+ // order by
47
+ this.handlers.set(OrderByClause.kind, (expr) => this.visitOrderByClause(expr));
48
+ this.handlers.set(OrderByItem.kind, (expr) => this.visitOrderByItem(expr));
49
+ // partition by
50
+ this.handlers.set(PartitionByClause.kind, (expr) => this.visitPartitionByClause(expr));
51
+ // window frame
52
+ this.handlers.set(WindowFrameExpression.kind, (expr) => this.visitWindowFrameExpression(expr));
53
+ this.handlers.set(WindowFrameSpec.kind, (arg) => this.visitWindowFrameSpec(arg));
54
+ this.handlers.set(WindowFrameBoundStatic.kind, (arg) => this.visitWindowFrameBoundStatic(arg));
55
+ this.handlers.set(WindowFrameBoundaryValue.kind, (arg) => this.visitWindowFrameBoundaryValue(arg));
56
+ this.handlers.set(WindowFrameClause.kind, (arg) => this.visitWindowFrameClause(arg));
57
+ // where
58
+ this.handlers.set(WhereClause.kind, (expr) => this.visitWhereClause(expr));
59
+ // group by
60
+ this.handlers.set(GroupByClause.kind, (expr) => this.visitGroupByClause(expr));
61
+ this.handlers.set(HavingClause.kind, (expr) => this.visitHavingClause(expr));
62
+ // with
63
+ this.handlers.set(CommonTable.kind, (expr) => this.visitCommonTable(expr));
64
+ this.handlers.set(WithClause.kind, (expr) => this.visitWithClause(expr));
65
+ // select
66
+ this.handlers.set(SelectItem.kind, (expr) => this.visitSelectExpression(expr));
67
+ this.handlers.set(SelectClause.kind, (expr) => this.visitSelectClause(expr));
68
+ this.handlers.set(Distinct.kind, (expr) => this.visitDistinct(expr));
69
+ this.handlers.set(DistinctOn.kind, (expr) => this.visitDistinctOn(expr));
70
+ // row limit
71
+ this.handlers.set(LimitClause.kind, (expr) => this.visitLimitClause(expr));
72
+ this.handlers.set(FetchSpecification.kind, (expr) => this.visitFetchSpecification(expr));
73
+ // for clause
74
+ this.handlers.set(ForClause.kind, (expr) => this.visitForClause(expr));
75
+ // values clause
76
+ this.handlers.set(ValuesQuery.kind, (expr) => this.visitValuesQuery(expr));
77
+ this.handlers.set(TupleExpression.kind, (expr) => this.visitTupleExpression(expr));
78
+ // select query
79
+ this.handlers.set(SimpleSelectQuery.kind, (expr) => this.visitSelectQuery(expr));
80
+ this.handlers.set(BinarySelectQuery.kind, (expr) => this.visitBinarySelectQuery(expr));
81
+ }
82
+ /**
83
+ * Formats the given SQL AST node into a SQL string.
84
+ * This is the recommended public API for users.
85
+ * @param arg The root SQL AST node to format.
86
+ * @param config (Optional) Formatter configuration.
87
+ * @returns The formatted SQL string.
88
+ */
89
+ format(arg, config = null) {
90
+ if (config) {
91
+ this.config = config;
92
+ }
93
+ return this.visit(arg);
94
+ }
95
+ /**
96
+ * Visitor entry point for SQL AST nodes.
97
+ * Note: This method is public only for interface compatibility.
98
+ * Users should call the format() method instead of visit() directly.
99
+ * (If you call visit() directly, you are basically breaking the abstraction, so don't do it!)
100
+ * @param arg The SQL AST node to visit.
101
+ * @returns The formatted SQL string for the node.
102
+ */
103
+ visit(arg) {
104
+ var _a, _b;
105
+ const handler = this.handlers.get(arg.getKind());
106
+ if (handler) {
107
+ return handler(arg);
108
+ }
109
+ // Provide more detailed error message
110
+ const kindSymbol = ((_a = arg.getKind()) === null || _a === void 0 ? void 0 : _a.toString()) || 'unknown';
111
+ const constructor = ((_b = arg.constructor) === null || _b === void 0 ? void 0 : _b.name) || 'unknown';
112
+ throw new Error(`No handler for ${constructor} with kind ${kindSymbol}. Consider adding a handler for this type.`);
113
+ }
114
+ visitBinarySelectQuery(arg) {
115
+ const left = arg.left.accept(this);
116
+ const operator = arg.operator.accept(this);
117
+ const right = arg.right.accept(this);
118
+ return `${left} ${operator} ${right}`;
119
+ }
120
+ visitWindowFrameBoundaryValue(arg) {
121
+ const value = arg.value.accept(this);
122
+ const following = arg.isFollowing ? "following" : "preceding";
123
+ return `${value} ${following}`;
124
+ }
125
+ visitWindowFrameBoundStatic(arg) {
126
+ switch (arg.bound) {
127
+ case WindowFrameBound.UnboundedPreceding:
128
+ return "unbounded preceding";
129
+ case WindowFrameBound.CurrentRow:
130
+ return "current row";
131
+ case WindowFrameBound.UnboundedFollowing:
132
+ return "unbounded following";
133
+ default:
134
+ throw new Error(`Unknown WindowFrameBound: ${arg.bound}`);
135
+ }
136
+ }
137
+ visitWindowFrameExpression(arg) {
138
+ const partitionBy = arg.partition !== null ? arg.partition.accept(this) : null;
139
+ const orderBy = arg.order !== null ? arg.order.accept(this) : null;
140
+ const frameSpec = arg.frameSpec !== null ? arg.frameSpec.accept(this) : null;
141
+ const parts = [];
142
+ if (partitionBy)
143
+ parts.push(partitionBy);
144
+ if (orderBy)
145
+ parts.push(orderBy);
146
+ if (frameSpec)
147
+ parts.push(frameSpec);
148
+ if (parts.length > 0) {
149
+ return `(${parts.join(" ")})`;
150
+ }
151
+ return `()`;
152
+ }
153
+ visitWindowFrameSpec(arg) {
154
+ const frameType = arg.frameType;
155
+ const startBound = arg.startBound.accept(this);
156
+ if (arg.endBound === null) {
157
+ return `${frameType} ${startBound}`;
158
+ }
159
+ else {
160
+ const endBound = arg.endBound.accept(this);
161
+ return `${frameType} between ${startBound} and ${endBound}`;
162
+ }
163
+ }
164
+ visitJoinUsingClause(arg) {
165
+ return `using (${arg.condition.accept(this)})`;
166
+ }
167
+ visitJoinOnClause(arg) {
168
+ if (arg.condition !== null) {
169
+ return `on ${arg.condition.accept(this)}`;
170
+ }
171
+ return `on`;
172
+ }
173
+ visitTypeValue(arg) {
174
+ if (arg.argument !== null) {
175
+ return `${arg.type.accept(this)}(${arg.argument.accept(this)})`;
176
+ }
177
+ return `${arg.type.accept(this)}`;
178
+ }
179
+ visitStringSpecifierExpression(arg) {
180
+ return `${arg.specifier.accept(this)}${arg.value.accept(this)}`;
181
+ }
182
+ visitWithClause(arg) {
183
+ const part = arg.tables.map((e) => e.accept(this)).join(", ");
184
+ if (arg.recursive) {
185
+ return `with recursive ${part}`;
186
+ }
187
+ return `with ${part}`;
188
+ }
189
+ visitCommonTable(arg) {
190
+ const alias = arg.aliasExpression.accept(this);
191
+ const materil = arg.materialized === null
192
+ ? ''
193
+ : arg.materialized ? 'materialized' : 'not materialized';
194
+ if (alias && materil) {
195
+ return `${alias} ${materil} as (${arg.query.accept(this)})`;
196
+ }
197
+ return `${alias} as (${arg.query.accept(this)})`;
198
+ }
199
+ visitDistinctOn(arg) {
200
+ return `distinct on(${arg.value.accept(this)})`;
201
+ }
202
+ visitDistinct(arg) {
203
+ return `distinct`;
204
+ }
205
+ visitHavingClause(arg) {
206
+ return `having ${arg.condition.accept(this)}`;
207
+ }
208
+ visitGroupByClause(arg) {
209
+ const part = arg.grouping.map((e) => e.accept(this)).join(", ");
210
+ return `group by ${part}`;
211
+ }
212
+ visitFromClause(arg) {
213
+ if (arg.joins !== null && arg.joins.length > 0) {
214
+ const part = arg.joins.map((e) => e.accept(this)).join(" ");
215
+ return `from ${arg.source.accept(this)} ${part}`;
216
+ }
217
+ return `from ${arg.source.accept(this)}`;
218
+ }
219
+ visitJoinClause(arg) {
220
+ const joinType = `${arg.joinType.accept(this)}`;
221
+ const lateral = arg.lateral === true ? ` lateral` : "";
222
+ const joinSource = arg.source.accept(this);
223
+ const condition = arg.condition !== null ? ` ${arg.condition.accept(this)}` : "";
224
+ return `${joinType}${lateral} ${joinSource}${condition}`;
225
+ }
226
+ visitSourceAliasExpression(arg) {
227
+ const columnAlias = arg.columns !== null ? `(${arg.columns.map((e) => e.accept(this)).join(", ")})` : null;
228
+ const tableAlias = arg.table !== null ? `${arg.table.accept(this)}` : "";
229
+ if (columnAlias && tableAlias) {
230
+ return `${tableAlias}${columnAlias}`;
231
+ }
232
+ if (tableAlias) {
233
+ return tableAlias;
234
+ }
235
+ throw new Error("Invalid SourceAliasExpression: tableAlias is null");
236
+ }
237
+ visitSourceExpression(arg) {
238
+ let alias = arg.aliasExpression !== null ? `${arg.aliasExpression.accept(this)}` : "";
239
+ // Avoid duplicate alias if the name is the same as the alias
240
+ if (arg.datasource instanceof TableSource) {
241
+ if (arg.aliasExpression !== null && arg.datasource.identifier !== null && arg.datasource.identifier.accept(this) === arg.aliasExpression.accept(this)) {
242
+ alias = "";
243
+ }
244
+ }
245
+ if (alias) {
246
+ return `${arg.datasource.accept(this)} as ${alias}`;
247
+ }
248
+ return `${arg.datasource.accept(this)}`;
249
+ }
250
+ visitSubQuerySource(arg) {
251
+ return `(${arg.query.accept(this)})`;
252
+ }
253
+ visitFunctionSource(arg) {
254
+ if (arg.argument !== null) {
255
+ return `${arg.name.accept(this)}(${arg.argument.accept(this)})`;
256
+ }
257
+ return `${arg.name.accept(this)}()`;
258
+ }
259
+ visitTableSource(arg) {
260
+ if (arg.namespaces !== null) {
261
+ return `${arg.namespaces.map((ns) => `${ns.accept(this)}`).join(".")}.${arg.table.accept(this)}`;
262
+ }
263
+ return `${arg.table.accept(this)}`;
264
+ }
265
+ visitValueList(arg) {
266
+ return `${arg.values.map((v) => v.accept(this)).join(", ")}`;
267
+ }
268
+ visitSwitchCaseArgument(arg) {
269
+ const casePart = arg.cases.map((kv) => `when ${kv.key.accept(this)} then ${kv.value.accept(this)}`).join(" ");
270
+ const elsePart = arg.elseValue ? ` else ${arg.elseValue.accept(this)}` : "";
271
+ return `${casePart}${elsePart}`;
272
+ }
273
+ visitColumnReference(arg) {
274
+ if (arg.namespaces != null) {
275
+ return `${arg.namespaces.map((ns) => `${ns.accept(this)}`).join(".")}.${arg.column.accept(this)}`;
276
+ }
277
+ return `${arg.column.accept(this)}`;
278
+ }
279
+ visitFunctionCall(arg) {
280
+ const partArg = arg.argument !== null ? arg.argument.accept(this) : "";
281
+ if (arg.over === null) {
282
+ return `${arg.name.accept(this)}(${partArg})`;
283
+ }
284
+ else {
285
+ let partOver = arg.over !== null ? `${arg.over.accept(this)}` : "";
286
+ if (partOver) {
287
+ if (partOver.startsWith("(")) {
288
+ partOver = ` over${partOver}`;
289
+ }
290
+ else {
291
+ partOver = ` over ${partOver}`;
292
+ }
293
+ }
294
+ return `${arg.name.accept(this)}(${partArg})${partOver}`;
295
+ }
296
+ }
297
+ visitUnaryExpression(arg) {
298
+ return `${arg.operator.accept(this)} ${arg.expression.accept(this)}`;
299
+ }
300
+ visitBinaryExpression(arg) {
301
+ return `${arg.left.accept(this)} ${arg.operator.accept(this)} ${arg.right.accept(this)}`;
302
+ }
303
+ visitLiteralExpression(arg) {
304
+ if (typeof arg.value === "string") {
305
+ return `'${arg.value.replace(/'/g, "''")}'`;
306
+ }
307
+ else if (arg.value === null) {
308
+ return "null";
309
+ }
310
+ return arg.value.toString();
311
+ }
312
+ visitParameterExpression(arg) {
313
+ return `${this.config.parameterSymbol}${arg.name.accept(this)}`;
314
+ }
315
+ visitSelectExpression(arg) {
316
+ if (arg.identifier !== null) {
317
+ if (arg.value instanceof ColumnReference) {
318
+ const c = arg.value;
319
+ if (c.column.name === arg.identifier.name) {
320
+ return `${arg.value.accept(this)}`;
321
+ }
322
+ else {
323
+ return `${arg.value.accept(this)} as ${arg.identifier.accept(this)}`;
324
+ }
325
+ }
326
+ return `${arg.value.accept(this)} as ${arg.identifier.accept(this)}`;
327
+ }
328
+ return arg.value.accept(this);
329
+ }
330
+ visitSelectClause(arg) {
331
+ const distinct = arg.distinct !== null ? " " + arg.distinct.accept(this) : "";
332
+ const colum = arg.items.map((e) => e.accept(this)).join(", ");
333
+ return `select${distinct} ${colum}`;
334
+ }
335
+ visitSelectQuery(arg) {
336
+ const parts = [];
337
+ // WITH
338
+ if (arg.WithClause !== null) {
339
+ parts.push(arg.WithClause.accept(this));
340
+ }
341
+ parts.push(arg.selectClause.accept(this));
342
+ if (arg.fromClause !== null) {
343
+ parts.push(arg.fromClause.accept(this));
344
+ }
345
+ if (arg.whereClause !== null) {
346
+ parts.push(arg.whereClause.accept(this));
347
+ }
348
+ if (arg.groupByClause !== null) {
349
+ parts.push(arg.groupByClause.accept(this));
350
+ }
351
+ if (arg.havingClause !== null) {
352
+ parts.push(arg.havingClause.accept(this));
353
+ }
354
+ if (arg.windowFrameClause !== null) {
355
+ parts.push(arg.windowFrameClause.accept(this));
356
+ }
357
+ if (arg.orderByClause !== null) {
358
+ parts.push(arg.orderByClause.accept(this));
359
+ }
360
+ if (arg.rowLimitClause !== null) {
361
+ parts.push(arg.rowLimitClause.accept(this));
362
+ }
363
+ if (arg.forClause !== null) {
364
+ parts.push(arg.forClause.accept(this));
365
+ }
366
+ return parts.join(" ");
367
+ }
368
+ visitArrayExpression(arg) {
369
+ return `array[${arg.expression.accept(this)}]`;
370
+ }
371
+ visitCaseExpression(arg) {
372
+ if (arg.condition !== null) {
373
+ return `case ${arg.condition.accept(this)} ${arg.switchCase.accept(this)} end`;
374
+ }
375
+ return `case ${arg.switchCase.accept(this)} end`;
376
+ }
377
+ visitCastExpression(arg) {
378
+ return `${arg.input.accept(this)}::${arg.castType.accept(this)}`;
379
+ }
380
+ visitBracketExpression(arg) {
381
+ return `(${arg.expression.accept(this)})`;
382
+ }
383
+ visitBetweenExpression(arg) {
384
+ if (arg.negated) {
385
+ return `${arg.expression.accept(this)} not between ${arg.lower.accept(this)} and ${arg.upper.accept(this)}`;
386
+ }
387
+ return `${arg.expression.accept(this)} between ${arg.lower.accept(this)} and ${arg.upper.accept(this)}`;
388
+ }
389
+ visitPartitionByClause(arg) {
390
+ return `partition by ${arg.value.accept(this)}`;
391
+ }
392
+ visitOrderByClause(arg) {
393
+ const part = arg.order.map((e) => e.accept(this)).join(", ");
394
+ return `order by ${part}`;
395
+ }
396
+ visitOrderByItem(arg) {
397
+ const direction = arg.sortDirection === SortDirection.Ascending ? null : "desc";
398
+ const nullsOption = arg.nullsPosition !== null ? (arg.nullsPosition === NullsSortDirection.First ? "nulls first" : "nulls last") : null;
399
+ if (direction !== null && nullsOption !== null) {
400
+ return `${arg.value.accept(this)} ${direction} ${nullsOption}`;
401
+ }
402
+ else if (direction !== null) {
403
+ return `${arg.value.accept(this)} ${direction}`;
404
+ }
405
+ else if (nullsOption !== null) {
406
+ return `${arg.value.accept(this)} ${nullsOption}`;
407
+ }
408
+ return arg.value.accept(this);
409
+ }
410
+ visitWindowFrameClause(arg) {
411
+ const partExpr = arg.expression.accept(this);
412
+ return `window ${arg.name.accept(this)} as ${partExpr}`;
413
+ }
414
+ visitLimitClause(arg) {
415
+ if (arg.offset !== null) {
416
+ return `limit ${arg.limit.accept(this)} offset ${arg.offset.accept(this)}`;
417
+ }
418
+ return `limit ${arg.limit.accept(this)}`;
419
+ }
420
+ visitFetchSpecification(arg) {
421
+ const type = arg.type === FetchType.First ? 'first' : 'next';
422
+ const count = arg.count.accept(this);
423
+ if (arg.unit !== null) {
424
+ return `fetch ${type} ${count} ${arg.unit}`;
425
+ }
426
+ return `fetch ${type} ${count}`;
427
+ }
428
+ visitForClause(arg) {
429
+ return `for ${arg.lockMode}`;
430
+ }
431
+ visitWhereClause(arg) {
432
+ return `where ${arg.condition.accept(this)}`;
433
+ }
434
+ visitInlineQuery(arg) {
435
+ return `(${arg.selectQuery.accept(this)})`;
436
+ }
437
+ visitRawString(arg) {
438
+ const invalidChars = new Set(["'", '"', ",", ";", ":", ".", "--", "/*"]);
439
+ if (invalidChars.has(arg.value)) {
440
+ throw new Error(`invalid keyword: ${arg.value} `);
441
+ }
442
+ else if (arg.value.trim() === "") {
443
+ throw new Error("invalid keyword: empty string");
444
+ }
445
+ return arg.value.trim();
446
+ }
447
+ visitIdentifierString(arg) {
448
+ // No need to escape wildcards
449
+ if (arg.name === '*') {
450
+ return arg.name;
451
+ }
452
+ return `${this.config.identifierEscape.start}${arg.name}${this.config.identifierEscape.end}`;
453
+ }
454
+ visitValuesQuery(arg) {
455
+ const tuples = arg.tuples.map((tuple) => tuple.accept(this)).join(", ");
456
+ return `values ${tuples}`;
457
+ }
458
+ visitTupleExpression(arg) {
459
+ const values = arg.values.map((value) => value.accept(this)).join(", ");
460
+ return `(${values})`;
461
+ }
462
+ }
463
+ //# sourceMappingURL=Formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Formatter.js","sourceRoot":"","sources":["../../../src/transformers/Formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import { FromClause, SelectClause, SelectItem, SourceAliasExpression, SourceExpression, SubQuerySource } from "../models/Clause";
2
+ import { BinarySelectQuery, SimpleSelectQuery, ValuesQuery } from "../models/SelectQuery";
3
+ import { ColumnReference } from "../models/ValueComponent";
4
+ import { CTENormalizer } from "./CTENormalizer";
5
+ /**
6
+ * Converts various SELECT query types to a standard SimpleSelectQuery format.
7
+ * - SimpleSelectQuery is returned as-is
8
+ * - BinarySelectQuery (UNION, etc.) is wrapped in a subquery: SELECT * FROM (original) AS bq
9
+ * - ValuesQuery is wrapped with sequentially numbered columns: SELECT * FROM (original) AS vq(column1, column2, ...)
10
+ */
11
+ export class QueryConverter {
12
+ /**
13
+ * Private constructor to prevent instantiation of this utility class.
14
+ */
15
+ constructor() {
16
+ // This class is not meant to be instantiated.
17
+ }
18
+ /**
19
+ * Converts a SELECT query to a standard SimpleSelectQuery form.
20
+ *
21
+ * @param query The query to convert
22
+ * @returns A SimpleSelectQuery
23
+ */
24
+ static toSimple(query) {
25
+ if (query instanceof SimpleSelectQuery) {
26
+ // Already a simple query, just return it
27
+ return query;
28
+ }
29
+ else if (query instanceof BinarySelectQuery) {
30
+ // Convert binary queries to a simple query
31
+ return QueryConverter.toSimpleBinaryQuery(query);
32
+ }
33
+ else if (query instanceof ValuesQuery) {
34
+ // Convert VALUES queries to a simple query
35
+ return QueryConverter.toSimpleValuesQuery(query);
36
+ }
37
+ // Should not reach here with current type system
38
+ throw new Error("Unsupported query type for toSimple");
39
+ }
40
+ /**
41
+ * Converts a BinarySelectQuery (UNION, EXCEPT, etc.) to a SimpleSelectQuery
42
+ * by wrapping it in SELECT * FROM (original) AS bq
43
+ *
44
+ * @param query The binary query to convert
45
+ * @returns A SimpleSelectQuery
46
+ */
47
+ static toSimpleBinaryQuery(query) {
48
+ // Create a subquery source from the binary query
49
+ const subQuerySource = new SubQuerySource(query);
50
+ // Create a source expression with alias
51
+ const sourceExpr = new SourceExpression(subQuerySource, new SourceAliasExpression("bq", null));
52
+ // Create FROM clause with the source expression
53
+ const fromClause = new FromClause(sourceExpr, null);
54
+ // Create SELECT clause with * (all columns)
55
+ const selectClause = QueryConverter.createSelectAllClause();
56
+ // Create the final simple select query
57
+ const q = new SimpleSelectQuery(null, // No WITH clause
58
+ selectClause, fromClause, null, // No WHERE
59
+ null, // No GROUP BY
60
+ null, // No HAVING
61
+ null, // No ORDER BY
62
+ null, // No WINDOW
63
+ null, // No LIMIT
64
+ null // No FOR
65
+ );
66
+ return CTENormalizer.normalize(q);
67
+ }
68
+ /**
69
+ * Converts a ValuesQuery to a SimpleSelectQuery with sequentially numbered columns
70
+ *
71
+ * @param query The VALUES query to convert
72
+ * @returns A SimpleSelectQuery
73
+ */
74
+ static toSimpleValuesQuery(query) {
75
+ // Figure out how many columns are in the VALUES clause
76
+ // by checking the first tuple (if available)
77
+ const columnCount = query.tuples.length > 0 ? query.tuples[0].values.length : 0;
78
+ // Generate column names (column1, column2, ...)
79
+ const columnNames = [];
80
+ for (let i = 1; i <= columnCount; i++) {
81
+ columnNames.push(`column${i}`);
82
+ }
83
+ // Create a subquery source from the VALUES query
84
+ const subQuerySource = new SubQuerySource(query);
85
+ const sourceExpr = new SourceExpression(subQuerySource, new SourceAliasExpression("vq", columnNames));
86
+ // Create FROM clause with the source expression
87
+ const fromClause = new FromClause(sourceExpr, null);
88
+ // Create SELECT clause with * (all columns)
89
+ const selectClause = QueryConverter.createSelectAllClause();
90
+ // Create the final simple select query
91
+ return new SimpleSelectQuery(null, // No WITH clause
92
+ selectClause, fromClause, null, // No WHERE
93
+ null, // No GROUP BY
94
+ null, // No HAVING
95
+ null, // No ORDER BY
96
+ null, // No WINDOW
97
+ null, // No LIMIT
98
+ null // No FOR
99
+ );
100
+ }
101
+ /**
102
+ * Creates a SELECT clause with a single * (all columns) item
103
+ *
104
+ * @returns A SELECT clause with *
105
+ */
106
+ static createSelectAllClause() {
107
+ // Create a column reference for *
108
+ const columnRef = new ColumnReference(null, "*");
109
+ // Create a SelectItem with the column reference
110
+ const selectItem = new SelectItem(columnRef, "*");
111
+ // Create and return a SelectClause with the item
112
+ return new SelectClause([selectItem], null);
113
+ }
114
+ }
115
+ //# sourceMappingURL=QueryConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryConverter.js","sourceRoot":"","sources":["../../../src/transformers/QueryConverter.ts"],"names":[],"mappings":"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"}