rawsql-ts 0.11.42-beta → 0.11.44-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 (278) hide show
  1. package/README.md +12 -13
  2. package/dist/esm/index.js +18 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +23 -18
  5. package/dist/esm/index.min.js.map +4 -4
  6. package/dist/esm/src/index.d.ts +18 -0
  7. package/dist/esm/src/index.js +18 -0
  8. package/dist/esm/src/index.js.map +1 -1
  9. package/dist/esm/src/models/BinarySelectQuery.d.ts +25 -1
  10. package/dist/esm/src/models/BinarySelectQuery.js +28 -0
  11. package/dist/esm/src/models/BinarySelectQuery.js.map +1 -1
  12. package/dist/esm/src/models/Clause.d.ts +14 -2
  13. package/dist/esm/src/models/Clause.js +26 -1
  14. package/dist/esm/src/models/Clause.js.map +1 -1
  15. package/dist/esm/src/models/CreateTableQuery.d.ts +99 -5
  16. package/dist/esm/src/models/CreateTableQuery.js +85 -10
  17. package/dist/esm/src/models/CreateTableQuery.js.map +1 -1
  18. package/dist/esm/src/models/DDLStatements.d.ts +157 -0
  19. package/dist/esm/src/models/DDLStatements.js +141 -0
  20. package/dist/esm/src/models/DDLStatements.js.map +1 -0
  21. package/dist/esm/src/models/DeleteQuery.d.ts +17 -0
  22. package/dist/esm/src/models/DeleteQuery.js +16 -0
  23. package/dist/esm/src/models/DeleteQuery.js.map +1 -0
  24. package/dist/esm/src/models/InsertQuery.d.ts +7 -1
  25. package/dist/esm/src/models/InsertQuery.js +6 -2
  26. package/dist/esm/src/models/InsertQuery.js.map +1 -1
  27. package/dist/esm/src/models/MergeQuery.d.ts +63 -0
  28. package/dist/esm/src/models/MergeQuery.js +94 -0
  29. package/dist/esm/src/models/MergeQuery.js.map +1 -0
  30. package/dist/esm/src/models/SelectQuery.d.ts +37 -1
  31. package/dist/esm/src/models/SelectQuery.js +4 -1
  32. package/dist/esm/src/models/SelectQuery.js.map +1 -1
  33. package/dist/esm/src/models/SimpleSelectQuery.d.ts +29 -1
  34. package/dist/esm/src/models/SimpleSelectQuery.js +32 -0
  35. package/dist/esm/src/models/SimpleSelectQuery.js.map +1 -1
  36. package/dist/esm/src/models/SqlComponent.d.ts +2 -1
  37. package/dist/esm/src/models/SqlComponent.js +1 -1
  38. package/dist/esm/src/models/SqlComponent.js.map +1 -1
  39. package/dist/esm/src/models/SqlPrintToken.d.ts +33 -0
  40. package/dist/esm/src/models/SqlPrintToken.js +32 -0
  41. package/dist/esm/src/models/SqlPrintToken.js.map +1 -1
  42. package/dist/esm/src/models/ValuesQuery.d.ts +25 -1
  43. package/dist/esm/src/models/ValuesQuery.js +28 -0
  44. package/dist/esm/src/models/ValuesQuery.js.map +1 -1
  45. package/dist/esm/src/parsers/AlterTableParser.d.ts +25 -0
  46. package/dist/esm/src/parsers/AlterTableParser.js +428 -0
  47. package/dist/esm/src/parsers/AlterTableParser.js.map +1 -0
  48. package/dist/esm/src/parsers/CreateIndexParser.d.ts +16 -0
  49. package/dist/esm/src/parsers/CreateIndexParser.js +237 -0
  50. package/dist/esm/src/parsers/CreateIndexParser.js.map +1 -0
  51. package/dist/esm/src/parsers/CreateTableParser.d.ts +41 -0
  52. package/dist/esm/src/parsers/CreateTableParser.js +734 -0
  53. package/dist/esm/src/parsers/CreateTableParser.js.map +1 -0
  54. package/dist/esm/src/parsers/DeleteClauseParser.d.ts +11 -0
  55. package/dist/esm/src/parsers/DeleteClauseParser.js +33 -0
  56. package/dist/esm/src/parsers/DeleteClauseParser.js.map +1 -0
  57. package/dist/esm/src/parsers/DeleteQueryParser.d.ts +16 -0
  58. package/dist/esm/src/parsers/DeleteQueryParser.js +73 -0
  59. package/dist/esm/src/parsers/DeleteQueryParser.js.map +1 -0
  60. package/dist/esm/src/parsers/DropConstraintParser.d.ts +12 -0
  61. package/dist/esm/src/parsers/DropConstraintParser.js +47 -0
  62. package/dist/esm/src/parsers/DropConstraintParser.js.map +1 -0
  63. package/dist/esm/src/parsers/DropIndexParser.d.ts +12 -0
  64. package/dist/esm/src/parsers/DropIndexParser.js +69 -0
  65. package/dist/esm/src/parsers/DropIndexParser.js.map +1 -0
  66. package/dist/esm/src/parsers/DropTableParser.d.ts +12 -0
  67. package/dist/esm/src/parsers/DropTableParser.js +59 -0
  68. package/dist/esm/src/parsers/DropTableParser.js.map +1 -0
  69. package/dist/esm/src/parsers/FunctionExpressionParser.d.ts +4 -0
  70. package/dist/esm/src/parsers/FunctionExpressionParser.js +25 -8
  71. package/dist/esm/src/parsers/FunctionExpressionParser.js.map +1 -1
  72. package/dist/esm/src/parsers/InsertQueryParser.js +103 -31
  73. package/dist/esm/src/parsers/InsertQueryParser.js.map +1 -1
  74. package/dist/esm/src/parsers/MergeQueryParser.d.ts +26 -0
  75. package/dist/esm/src/parsers/MergeQueryParser.js +479 -0
  76. package/dist/esm/src/parsers/MergeQueryParser.js.map +1 -0
  77. package/dist/esm/src/parsers/ReturningClauseParser.js +50 -7
  78. package/dist/esm/src/parsers/ReturningClauseParser.js.map +1 -1
  79. package/dist/esm/src/parsers/SelectClauseParser.js +3 -3
  80. package/dist/esm/src/parsers/SelectClauseParser.js.map +1 -1
  81. package/dist/esm/src/parsers/SelectQueryParser.d.ts +4 -0
  82. package/dist/esm/src/parsers/SelectQueryParser.js +4 -0
  83. package/dist/esm/src/parsers/SelectQueryParser.js.map +1 -1
  84. package/dist/esm/src/parsers/SetClauseParser.js +97 -15
  85. package/dist/esm/src/parsers/SetClauseParser.js.map +1 -1
  86. package/dist/esm/src/parsers/SqlParser.d.ts +38 -0
  87. package/dist/esm/src/parsers/SqlParser.js +344 -0
  88. package/dist/esm/src/parsers/SqlParser.js.map +1 -0
  89. package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +68 -21
  90. package/dist/esm/src/parsers/SqlPrintTokenParser.js +1145 -254
  91. package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
  92. package/dist/esm/src/parsers/SqlTokenizer.d.ts +24 -2
  93. package/dist/esm/src/parsers/SqlTokenizer.js +135 -74
  94. package/dist/esm/src/parsers/SqlTokenizer.js.map +1 -1
  95. package/dist/esm/src/parsers/UpdateQueryParser.js +11 -1
  96. package/dist/esm/src/parsers/UpdateQueryParser.js.map +1 -1
  97. package/dist/esm/src/parsers/UsingClauseParser.d.ts +11 -0
  98. package/dist/esm/src/parsers/UsingClauseParser.js +29 -0
  99. package/dist/esm/src/parsers/UsingClauseParser.js.map +1 -0
  100. package/dist/esm/src/parsers/ValueParser.js +5 -1
  101. package/dist/esm/src/parsers/ValueParser.js.map +1 -1
  102. package/dist/esm/src/parsers/ValuesQueryParser.d.ts +0 -2
  103. package/dist/esm/src/parsers/ValuesQueryParser.js +5 -45
  104. package/dist/esm/src/parsers/ValuesQueryParser.js.map +1 -1
  105. package/dist/esm/src/parsers/utils/LexemeCommentUtils.d.ts +6 -0
  106. package/dist/esm/src/parsers/utils/LexemeCommentUtils.js +26 -0
  107. package/dist/esm/src/parsers/utils/LexemeCommentUtils.js.map +1 -0
  108. package/dist/esm/src/tokenReaders/CommandTokenReader.js +49 -2
  109. package/dist/esm/src/tokenReaders/CommandTokenReader.js.map +1 -1
  110. package/dist/esm/src/tokenReaders/LiteralTokenReader.js +8 -5
  111. package/dist/esm/src/tokenReaders/LiteralTokenReader.js.map +1 -1
  112. package/dist/esm/src/tokenReaders/OperatorTokenReader.js +10 -1
  113. package/dist/esm/src/tokenReaders/OperatorTokenReader.js.map +1 -1
  114. package/dist/esm/src/tokenReaders/TypeTokenReader.js +11 -1
  115. package/dist/esm/src/tokenReaders/TypeTokenReader.js.map +1 -1
  116. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.d.ts +18 -0
  117. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js +118 -0
  118. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -0
  119. package/dist/esm/src/transformers/LinePrinter.d.ts +2 -0
  120. package/dist/esm/src/transformers/LinePrinter.js +34 -1
  121. package/dist/esm/src/transformers/LinePrinter.js.map +1 -1
  122. package/dist/esm/src/transformers/OnelineFormattingHelper.d.ts +29 -0
  123. package/dist/esm/src/transformers/OnelineFormattingHelper.js +88 -0
  124. package/dist/esm/src/transformers/OnelineFormattingHelper.js.map +1 -0
  125. package/dist/esm/src/transformers/QueryBuilder.d.ts +47 -13
  126. package/dist/esm/src/transformers/QueryBuilder.js +424 -62
  127. package/dist/esm/src/transformers/QueryBuilder.js.map +1 -1
  128. package/dist/esm/src/transformers/SqlFormatter.d.ts +13 -3
  129. package/dist/esm/src/transformers/SqlFormatter.js +13 -4
  130. package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
  131. package/dist/esm/src/transformers/SqlPrinter.d.ts +63 -10
  132. package/dist/esm/src/transformers/SqlPrinter.js +954 -64
  133. package/dist/esm/src/transformers/SqlPrinter.js.map +1 -1
  134. package/dist/esm/src/types/Formatting.d.ts +8 -0
  135. package/dist/esm/src/types/Formatting.js +2 -0
  136. package/dist/esm/src/types/Formatting.js.map +1 -0
  137. package/dist/esm/src/utils/ParserStringUtils.d.ts +6 -0
  138. package/dist/esm/src/utils/ParserStringUtils.js +28 -0
  139. package/dist/esm/src/utils/ParserStringUtils.js.map +1 -0
  140. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  141. package/dist/index.min.js +22 -17
  142. package/dist/index.min.js.map +4 -4
  143. package/dist/src/index.d.ts +18 -0
  144. package/dist/src/index.js +18 -0
  145. package/dist/src/index.js.map +1 -1
  146. package/dist/src/models/BinarySelectQuery.d.ts +25 -1
  147. package/dist/src/models/BinarySelectQuery.js +28 -0
  148. package/dist/src/models/BinarySelectQuery.js.map +1 -1
  149. package/dist/src/models/Clause.d.ts +14 -2
  150. package/dist/src/models/Clause.js +29 -2
  151. package/dist/src/models/Clause.js.map +1 -1
  152. package/dist/src/models/CreateTableQuery.d.ts +99 -5
  153. package/dist/src/models/CreateTableQuery.js +90 -11
  154. package/dist/src/models/CreateTableQuery.js.map +1 -1
  155. package/dist/src/models/DDLStatements.d.ts +157 -0
  156. package/dist/src/models/DDLStatements.js +153 -0
  157. package/dist/src/models/DDLStatements.js.map +1 -0
  158. package/dist/src/models/DeleteQuery.d.ts +17 -0
  159. package/dist/src/models/DeleteQuery.js +20 -0
  160. package/dist/src/models/DeleteQuery.js.map +1 -0
  161. package/dist/src/models/InsertQuery.d.ts +7 -1
  162. package/dist/src/models/InsertQuery.js +6 -2
  163. package/dist/src/models/InsertQuery.js.map +1 -1
  164. package/dist/src/models/MergeQuery.d.ts +63 -0
  165. package/dist/src/models/MergeQuery.js +104 -0
  166. package/dist/src/models/MergeQuery.js.map +1 -0
  167. package/dist/src/models/SelectQuery.d.ts +37 -1
  168. package/dist/src/models/SelectQuery.js +7 -1
  169. package/dist/src/models/SelectQuery.js.map +1 -1
  170. package/dist/src/models/SimpleSelectQuery.d.ts +29 -1
  171. package/dist/src/models/SimpleSelectQuery.js +32 -0
  172. package/dist/src/models/SimpleSelectQuery.js.map +1 -1
  173. package/dist/src/models/SqlComponent.d.ts +2 -1
  174. package/dist/src/models/SqlComponent.js +1 -1
  175. package/dist/src/models/SqlComponent.js.map +1 -1
  176. package/dist/src/models/SqlPrintToken.d.ts +33 -0
  177. package/dist/src/models/SqlPrintToken.js +32 -0
  178. package/dist/src/models/SqlPrintToken.js.map +1 -1
  179. package/dist/src/models/ValuesQuery.d.ts +25 -1
  180. package/dist/src/models/ValuesQuery.js +28 -0
  181. package/dist/src/models/ValuesQuery.js.map +1 -1
  182. package/dist/src/parsers/AlterTableParser.d.ts +25 -0
  183. package/dist/src/parsers/AlterTableParser.js +432 -0
  184. package/dist/src/parsers/AlterTableParser.js.map +1 -0
  185. package/dist/src/parsers/CreateIndexParser.d.ts +16 -0
  186. package/dist/src/parsers/CreateIndexParser.js +241 -0
  187. package/dist/src/parsers/CreateIndexParser.js.map +1 -0
  188. package/dist/src/parsers/CreateTableParser.d.ts +41 -0
  189. package/dist/src/parsers/CreateTableParser.js +738 -0
  190. package/dist/src/parsers/CreateTableParser.js.map +1 -0
  191. package/dist/src/parsers/DeleteClauseParser.d.ts +11 -0
  192. package/dist/src/parsers/DeleteClauseParser.js +37 -0
  193. package/dist/src/parsers/DeleteClauseParser.js.map +1 -0
  194. package/dist/src/parsers/DeleteQueryParser.d.ts +16 -0
  195. package/dist/src/parsers/DeleteQueryParser.js +77 -0
  196. package/dist/src/parsers/DeleteQueryParser.js.map +1 -0
  197. package/dist/src/parsers/DropConstraintParser.d.ts +12 -0
  198. package/dist/src/parsers/DropConstraintParser.js +51 -0
  199. package/dist/src/parsers/DropConstraintParser.js.map +1 -0
  200. package/dist/src/parsers/DropIndexParser.d.ts +12 -0
  201. package/dist/src/parsers/DropIndexParser.js +73 -0
  202. package/dist/src/parsers/DropIndexParser.js.map +1 -0
  203. package/dist/src/parsers/DropTableParser.d.ts +12 -0
  204. package/dist/src/parsers/DropTableParser.js +63 -0
  205. package/dist/src/parsers/DropTableParser.js.map +1 -0
  206. package/dist/src/parsers/FunctionExpressionParser.d.ts +4 -0
  207. package/dist/src/parsers/FunctionExpressionParser.js +25 -8
  208. package/dist/src/parsers/FunctionExpressionParser.js.map +1 -1
  209. package/dist/src/parsers/InsertQueryParser.js +103 -31
  210. package/dist/src/parsers/InsertQueryParser.js.map +1 -1
  211. package/dist/src/parsers/MergeQueryParser.d.ts +26 -0
  212. package/dist/src/parsers/MergeQueryParser.js +483 -0
  213. package/dist/src/parsers/MergeQueryParser.js.map +1 -0
  214. package/dist/src/parsers/ReturningClauseParser.js +50 -7
  215. package/dist/src/parsers/ReturningClauseParser.js.map +1 -1
  216. package/dist/src/parsers/SelectClauseParser.js +2 -2
  217. package/dist/src/parsers/SelectClauseParser.js.map +1 -1
  218. package/dist/src/parsers/SelectQueryParser.d.ts +4 -0
  219. package/dist/src/parsers/SelectQueryParser.js +4 -0
  220. package/dist/src/parsers/SelectQueryParser.js.map +1 -1
  221. package/dist/src/parsers/SetClauseParser.js +97 -15
  222. package/dist/src/parsers/SetClauseParser.js.map +1 -1
  223. package/dist/src/parsers/SqlParser.d.ts +38 -0
  224. package/dist/src/parsers/SqlParser.js +353 -0
  225. package/dist/src/parsers/SqlParser.js.map +1 -0
  226. package/dist/src/parsers/SqlPrintTokenParser.d.ts +68 -21
  227. package/dist/src/parsers/SqlPrintTokenParser.js +1143 -252
  228. package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
  229. package/dist/src/parsers/SqlTokenizer.d.ts +24 -2
  230. package/dist/src/parsers/SqlTokenizer.js +139 -74
  231. package/dist/src/parsers/SqlTokenizer.js.map +1 -1
  232. package/dist/src/parsers/UpdateQueryParser.js +11 -1
  233. package/dist/src/parsers/UpdateQueryParser.js.map +1 -1
  234. package/dist/src/parsers/UsingClauseParser.d.ts +11 -0
  235. package/dist/src/parsers/UsingClauseParser.js +33 -0
  236. package/dist/src/parsers/UsingClauseParser.js.map +1 -0
  237. package/dist/src/parsers/ValueParser.js +5 -1
  238. package/dist/src/parsers/ValueParser.js.map +1 -1
  239. package/dist/src/parsers/ValuesQueryParser.d.ts +0 -2
  240. package/dist/src/parsers/ValuesQueryParser.js +5 -45
  241. package/dist/src/parsers/ValuesQueryParser.js.map +1 -1
  242. package/dist/src/parsers/utils/LexemeCommentUtils.d.ts +6 -0
  243. package/dist/src/parsers/utils/LexemeCommentUtils.js +29 -0
  244. package/dist/src/parsers/utils/LexemeCommentUtils.js.map +1 -0
  245. package/dist/src/tokenReaders/CommandTokenReader.js +49 -2
  246. package/dist/src/tokenReaders/CommandTokenReader.js.map +1 -1
  247. package/dist/src/tokenReaders/LiteralTokenReader.js +8 -5
  248. package/dist/src/tokenReaders/LiteralTokenReader.js.map +1 -1
  249. package/dist/src/tokenReaders/OperatorTokenReader.js +10 -1
  250. package/dist/src/tokenReaders/OperatorTokenReader.js.map +1 -1
  251. package/dist/src/tokenReaders/TypeTokenReader.js +11 -1
  252. package/dist/src/tokenReaders/TypeTokenReader.js.map +1 -1
  253. package/dist/src/transformers/InsertQuerySelectValuesConverter.d.ts +18 -0
  254. package/dist/src/transformers/InsertQuerySelectValuesConverter.js +122 -0
  255. package/dist/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -0
  256. package/dist/src/transformers/LinePrinter.d.ts +2 -0
  257. package/dist/src/transformers/LinePrinter.js +34 -1
  258. package/dist/src/transformers/LinePrinter.js.map +1 -1
  259. package/dist/src/transformers/OnelineFormattingHelper.d.ts +29 -0
  260. package/dist/src/transformers/OnelineFormattingHelper.js +92 -0
  261. package/dist/src/transformers/OnelineFormattingHelper.js.map +1 -0
  262. package/dist/src/transformers/QueryBuilder.d.ts +47 -13
  263. package/dist/src/transformers/QueryBuilder.js +433 -60
  264. package/dist/src/transformers/QueryBuilder.js.map +1 -1
  265. package/dist/src/transformers/SqlFormatter.d.ts +13 -3
  266. package/dist/src/transformers/SqlFormatter.js +20 -6
  267. package/dist/src/transformers/SqlFormatter.js.map +1 -1
  268. package/dist/src/transformers/SqlPrinter.d.ts +63 -10
  269. package/dist/src/transformers/SqlPrinter.js +954 -64
  270. package/dist/src/transformers/SqlPrinter.js.map +1 -1
  271. package/dist/src/types/Formatting.d.ts +8 -0
  272. package/dist/src/types/Formatting.js +3 -0
  273. package/dist/src/types/Formatting.js.map +1 -0
  274. package/dist/src/utils/ParserStringUtils.d.ts +6 -0
  275. package/dist/src/utils/ParserStringUtils.js +31 -0
  276. package/dist/src/utils/ParserStringUtils.js.map +1 -0
  277. package/dist/tsconfig.tsbuildinfo +1 -1
  278. package/package.json +1 -1
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.QueryBuilder = void 0;
4
4
  const Clause_1 = require("../models/Clause");
5
5
  const UpdateQuery_1 = require("../models/UpdateQuery");
6
+ const DeleteQuery_1 = require("../models/DeleteQuery");
7
+ const MergeQuery_1 = require("../models/MergeQuery");
6
8
  const ValueComponent_1 = require("../models/ValueComponent");
7
9
  const SelectValueCollector_1 = require("./SelectValueCollector");
8
10
  const SelectQuery_1 = require("../models/SelectQuery");
@@ -12,6 +14,7 @@ const CreateTableQuery_1 = require("../models/CreateTableQuery");
12
14
  const InsertQuery_1 = require("../models/InsertQuery");
13
15
  const CTEDisabler_1 = require("./CTEDisabler");
14
16
  const SourceExpressionParser_1 = require("../parsers/SourceExpressionParser");
17
+ const InsertQuerySelectValuesConverter_1 = require("./InsertQuerySelectValuesConverter");
15
18
  /**
16
19
  * QueryBuilder provides static methods to build or convert various SQL query objects.
17
20
  */
@@ -176,84 +179,454 @@ class QueryBuilder {
176
179
  * @param isTemporary If true, creates a temporary table
177
180
  * @returns A CreateTableQuery instance
178
181
  */
179
- static buildCreateTableQuery(query, tableName, isTemporary = false) {
182
+ static buildCreateTableQuery(query, tableName, isTemporary = false, ifNotExists = false) {
180
183
  return new CreateTableQuery_1.CreateTableQuery({
181
184
  tableName,
182
185
  isTemporary,
186
+ ifNotExists,
183
187
  asSelectQuery: query
184
188
  });
185
189
  }
186
190
  /**
187
- * Converts a SELECT query to an INSERT query (INSERT INTO ... SELECT ...)
188
- * @param selectQuery The SELECT query to use as the source
189
- * @param tableName The name of the table to insert into
190
- * @param columns Optional: array of column names. If omitted, columns are inferred from the selectQuery
191
- * @returns An InsertQuery instance
191
+ * Converts a SELECT query to an INSERT query (INSERT INTO ... SELECT ...).
192
192
  */
193
- static buildInsertQuery(selectQuery, tableName) {
194
- let cols;
195
- const count = selectQuery.selectClause.items.length;
196
- // Try to infer columns from the selectQuery
197
- const collector = new SelectValueCollector_1.SelectValueCollector();
198
- const items = collector.collect(selectQuery);
199
- cols = items.map(item => item.name);
200
- if (!cols.length || count !== cols.length) {
201
- throw new Error(`Columns cannot be inferred from the selectQuery. ` +
202
- `Make sure you are not using wildcards or unnamed columns.\n` +
203
- `Select clause column count: ${count}, ` +
204
- `Columns with valid names: ${cols.length}\n` +
205
- `Detected column names: [${cols.join(", ")}]`);
206
- }
207
- // Generate SourceExpression (supports only table name, does not support alias or schema)
208
- const sourceExpr = SourceExpressionParser_1.SourceExpressionParser.parse(tableName);
193
+ static buildInsertQuery(selectQuery, targetOrOptions, explicitColumns) {
194
+ var _a;
195
+ // Derive normalized options while preserving the legacy signature for backward compatibility.
196
+ const options = QueryBuilder.normalizeInsertOptions(targetOrOptions, explicitColumns);
197
+ // Determine the final column order either from user-provided options or by inferring from the select list.
198
+ const columnNames = QueryBuilder.prepareInsertColumns(selectQuery, (_a = options.columns) !== null && _a !== void 0 ? _a : null);
199
+ // Promote WITH clauses to the INSERT statement so the SELECT body remains self-contained.
200
+ const withClause = QueryBuilder.extractWithClause(selectQuery);
201
+ const sourceExpr = SourceExpressionParser_1.SourceExpressionParser.parse(options.target);
209
202
  return new InsertQuery_1.InsertQuery({
210
- insertClause: new Clause_1.InsertClause(sourceExpr, cols),
211
- selectQuery: selectQuery
203
+ withClause: withClause !== null && withClause !== void 0 ? withClause : undefined,
204
+ insertClause: new Clause_1.InsertClause(sourceExpr, columnNames),
205
+ selectQuery
212
206
  });
213
207
  }
214
208
  /**
215
- * Builds an UPDATE query from a SELECT query, table name, and primary key(s).
216
- * @param selectQuery The SELECT query providing new values (must select all columns to update and PKs)
217
- * @param updateTableExprRaw The table name to update
218
- * @param primaryKeys The primary key column name(s)
219
- * @returns UpdateQuery instance
209
+ * Converts an INSERT ... VALUES query into INSERT ... SELECT form using UNION ALL.
210
+ * @param insertQuery The VALUES-based InsertQuery to convert.
211
+ * @returns A new InsertQuery that selects rows instead of using VALUES.
212
+ */
213
+ static convertInsertValuesToSelect(insertQuery) {
214
+ return InsertQuerySelectValuesConverter_1.InsertQuerySelectValuesConverter.toSelectUnion(insertQuery);
215
+ }
216
+ /**
217
+ * Converts an INSERT ... SELECT (optionally with UNION ALL) into INSERT ... VALUES form.
218
+ * @param insertQuery The SELECT-based InsertQuery to convert.
219
+ * @returns A new InsertQuery that uses VALUES tuples.
220
+ */
221
+ static convertInsertSelectToValues(insertQuery) {
222
+ return InsertQuerySelectValuesConverter_1.InsertQuerySelectValuesConverter.toValues(insertQuery);
223
+ }
224
+ /**
225
+ * Builds an UPDATE query from a SELECT query and conversion options.
220
226
  */
221
- static buildUpdateQuery(selectQuery, selectSourceName, updateTableExprRaw, primaryKeys) {
222
- const updateClause = new Clause_1.UpdateClause(SourceExpressionParser_1.SourceExpressionParser.parse(updateTableExprRaw));
223
- const pkArray = Array.isArray(primaryKeys) ? primaryKeys : [primaryKeys];
224
- const selectCollector = new SelectValueCollector_1.SelectValueCollector();
225
- const selectItems = selectCollector.collect(selectQuery);
227
+ static buildUpdateQuery(selectQuery, selectSourceOrOptions, updateTableExprRaw, primaryKeys) {
228
+ var _a;
229
+ // Normalize the function arguments into a single configuration object.
230
+ const options = QueryBuilder.normalizeUpdateOptions(selectSourceOrOptions, updateTableExprRaw, primaryKeys);
231
+ // Collect select-list metadata and align columns before mutating the query during WITH extraction.
232
+ const updateColumns = QueryBuilder.prepareUpdateColumns(selectQuery, options.primaryKeys, (_a = options.columns) !== null && _a !== void 0 ? _a : null);
233
+ const updateClause = new Clause_1.UpdateClause(SourceExpressionParser_1.SourceExpressionParser.parse(options.target));
234
+ const targetAlias = updateClause.getSourceAliasName();
235
+ if (!targetAlias) {
236
+ throw new Error(`Source expression does not have an alias. Please provide an alias for the source expression.`);
237
+ }
238
+ // Move CTE definitions to the UPDATE statement for cleaner SQL.
239
+ const withClause = QueryBuilder.extractWithClause(selectQuery);
240
+ const setItems = updateColumns.map(column => new Clause_1.SetClauseItem(column, QueryBuilder.toColumnReference(options.sourceAlias, column)));
241
+ if (setItems.length === 0) {
242
+ throw new Error(`No updatable columns found. Ensure the select list contains at least one column other than the specified primary keys.`);
243
+ }
244
+ const setClause = new Clause_1.SetClause(setItems);
245
+ const fromClause = new Clause_1.FromClause(selectQuery.toSource(options.sourceAlias), null);
246
+ const whereClause = new Clause_1.WhereClause(QueryBuilder.buildEqualityPredicate(targetAlias, options.sourceAlias, options.primaryKeys));
247
+ return new UpdateQuery_1.UpdateQuery({
248
+ updateClause,
249
+ setClause,
250
+ fromClause,
251
+ whereClause,
252
+ withClause: withClause !== null && withClause !== void 0 ? withClause : undefined
253
+ });
254
+ }
255
+ /**
256
+ * Builds a DELETE query that deletes the rows matched by the SELECT query output.
257
+ */
258
+ static buildDeleteQuery(selectQuery, options) {
259
+ var _a;
260
+ // Normalise options to guarantee arrays and alias defaults.
261
+ const normalized = QueryBuilder.normalizeDeleteOptions(options);
262
+ const predicateColumns = QueryBuilder.prepareDeleteColumns(selectQuery, normalized.primaryKeys, (_a = normalized.columns) !== null && _a !== void 0 ? _a : null);
263
+ const deleteClause = new Clause_1.DeleteClause(SourceExpressionParser_1.SourceExpressionParser.parse(normalized.target));
264
+ const targetAlias = deleteClause.getSourceAliasName();
265
+ if (!targetAlias) {
266
+ throw new Error(`Source expression does not have an alias. Please provide an alias for the delete target.`);
267
+ }
268
+ const withClause = QueryBuilder.extractWithClause(selectQuery);
269
+ // Build correlated EXISTS predicate instead of Postgres-specific USING clause.
270
+ const predicate = QueryBuilder.buildEqualityPredicate(targetAlias, normalized.sourceAlias, predicateColumns);
271
+ const sourceExpression = selectQuery.toSource(normalized.sourceAlias);
272
+ const existsSelectClause = new Clause_1.SelectClause([new Clause_1.SelectItem(new ValueComponent_1.LiteralValue(1))]);
273
+ const existsSubquery = new SelectQuery_1.SimpleSelectQuery({
274
+ selectClause: existsSelectClause,
275
+ fromClause: new Clause_1.FromClause(sourceExpression, null),
276
+ whereClause: new Clause_1.WhereClause(predicate)
277
+ });
278
+ const whereClause = new Clause_1.WhereClause(new ValueComponent_1.UnaryExpression('exists', new ValueComponent_1.InlineQuery(existsSubquery)));
279
+ return new DeleteQuery_1.DeleteQuery({
280
+ deleteClause,
281
+ whereClause,
282
+ withClause: withClause !== null && withClause !== void 0 ? withClause : undefined
283
+ });
284
+ }
285
+ /**
286
+ * Builds a MERGE query (upsert) that coordinates actions based on row matches.
287
+ */
288
+ static buildMergeQuery(selectQuery, options) {
289
+ var _a, _b, _c, _d, _e, _f, _g;
290
+ // Ensure the configuration is fully expanded before inspection.
291
+ const normalized = QueryBuilder.normalizeMergeOptions(options);
292
+ const mergeColumnPlan = QueryBuilder.prepareMergeColumns(selectQuery, normalized.primaryKeys, (_a = normalized.updateColumns) !== null && _a !== void 0 ? _a : null, (_b = normalized.insertColumns) !== null && _b !== void 0 ? _b : null, (_c = normalized.matchedAction) !== null && _c !== void 0 ? _c : 'update', (_d = normalized.notMatchedAction) !== null && _d !== void 0 ? _d : 'insert');
293
+ const targetExpression = SourceExpressionParser_1.SourceExpressionParser.parse(normalized.target);
294
+ const targetAlias = targetExpression.getAliasName();
295
+ if (!targetAlias) {
296
+ throw new Error(`Source expression does not have an alias. Please provide an alias for the merge target.`);
297
+ }
298
+ const withClause = QueryBuilder.extractWithClause(selectQuery);
299
+ const onCondition = QueryBuilder.buildEqualityPredicate(targetAlias, normalized.sourceAlias, normalized.primaryKeys);
300
+ const sourceExpression = selectQuery.toSource(normalized.sourceAlias);
301
+ const whenClauses = [];
302
+ const matchedAction = (_e = normalized.matchedAction) !== null && _e !== void 0 ? _e : 'update';
303
+ if (matchedAction === 'update') {
304
+ if (mergeColumnPlan.updateColumns.length === 0) {
305
+ throw new Error(`No columns available for MERGE update action. Provide updateColumns or ensure the select list includes non-key columns.`);
306
+ }
307
+ const setItems = mergeColumnPlan.updateColumns.map(column => new Clause_1.SetClauseItem(column, QueryBuilder.toColumnReference(normalized.sourceAlias, column)));
308
+ whenClauses.push(new MergeQuery_1.MergeWhenClause("matched", new MergeQuery_1.MergeUpdateAction(new Clause_1.SetClause(setItems))));
309
+ }
310
+ else if (matchedAction === 'delete') {
311
+ whenClauses.push(new MergeQuery_1.MergeWhenClause("matched", new MergeQuery_1.MergeDeleteAction()));
312
+ }
313
+ else if (matchedAction === 'doNothing') {
314
+ whenClauses.push(new MergeQuery_1.MergeWhenClause("matched", new MergeQuery_1.MergeDoNothingAction()));
315
+ }
316
+ const notMatchedAction = (_f = normalized.notMatchedAction) !== null && _f !== void 0 ? _f : 'insert';
317
+ if (notMatchedAction === 'insert') {
318
+ if (mergeColumnPlan.insertColumns.length === 0) {
319
+ throw new Error('Unable to infer MERGE insert columns. Provide insertColumns explicitly.');
320
+ }
321
+ const insertValues = new ValueComponent_1.ValueList(mergeColumnPlan.insertColumns.map(column => QueryBuilder.toColumnReference(normalized.sourceAlias, column)));
322
+ whenClauses.push(new MergeQuery_1.MergeWhenClause("not_matched", new MergeQuery_1.MergeInsertAction({
323
+ columns: mergeColumnPlan.insertColumns,
324
+ values: insertValues
325
+ })));
326
+ }
327
+ else if (notMatchedAction === 'doNothing') {
328
+ whenClauses.push(new MergeQuery_1.MergeWhenClause("not_matched", new MergeQuery_1.MergeDoNothingAction()));
329
+ }
330
+ const notMatchedBySourceAction = (_g = normalized.notMatchedBySourceAction) !== null && _g !== void 0 ? _g : 'doNothing';
331
+ if (notMatchedBySourceAction === 'delete') {
332
+ whenClauses.push(new MergeQuery_1.MergeWhenClause("not_matched_by_source", new MergeQuery_1.MergeDeleteAction()));
333
+ }
334
+ else if (notMatchedBySourceAction === 'doNothing') {
335
+ whenClauses.push(new MergeQuery_1.MergeWhenClause("not_matched_by_source", new MergeQuery_1.MergeDoNothingAction()));
336
+ }
337
+ if (whenClauses.length === 0) {
338
+ throw new Error(`At least one MERGE action must be generated. Adjust the merge conversion options.`);
339
+ }
340
+ return new MergeQuery_1.MergeQuery({
341
+ withClause: withClause !== null && withClause !== void 0 ? withClause : undefined,
342
+ target: targetExpression,
343
+ source: sourceExpression,
344
+ onCondition,
345
+ whenClauses
346
+ });
347
+ }
348
+ static normalizeInsertOptions(targetOrOptions, explicitColumns) {
349
+ if (typeof targetOrOptions === 'string') {
350
+ return {
351
+ target: targetOrOptions,
352
+ columns: explicitColumns
353
+ };
354
+ }
355
+ if (explicitColumns && explicitColumns.length > 0) {
356
+ return {
357
+ ...targetOrOptions,
358
+ columns: explicitColumns
359
+ };
360
+ }
361
+ return { ...targetOrOptions };
362
+ }
363
+ static normalizeUpdateOptions(selectSourceOrOptions, updateTableExprRaw, primaryKeys) {
364
+ var _a;
365
+ if (typeof selectSourceOrOptions === 'string') {
366
+ if (!updateTableExprRaw) {
367
+ throw new Error('updateTableExprRaw is required when using the legacy buildUpdateQuery signature.');
368
+ }
369
+ if (primaryKeys === undefined) {
370
+ throw new Error('primaryKeys are required when using the legacy buildUpdateQuery signature.');
371
+ }
372
+ return {
373
+ target: updateTableExprRaw,
374
+ primaryKeys: QueryBuilder.normalizeColumnArray(primaryKeys),
375
+ sourceAlias: selectSourceOrOptions
376
+ };
377
+ }
378
+ return {
379
+ target: selectSourceOrOptions.target,
380
+ primaryKeys: QueryBuilder.normalizeColumnArray(selectSourceOrOptions.primaryKeys),
381
+ sourceAlias: (_a = selectSourceOrOptions.sourceAlias) !== null && _a !== void 0 ? _a : 'src',
382
+ columns: selectSourceOrOptions.columns
383
+ };
384
+ }
385
+ static normalizeDeleteOptions(options) {
386
+ var _a;
387
+ return {
388
+ ...options,
389
+ primaryKeys: QueryBuilder.normalizeColumnArray(options.primaryKeys),
390
+ sourceAlias: (_a = options.sourceAlias) !== null && _a !== void 0 ? _a : 'src'
391
+ };
392
+ }
393
+ static normalizeMergeOptions(options) {
394
+ var _a;
395
+ return {
396
+ ...options,
397
+ primaryKeys: QueryBuilder.normalizeColumnArray(options.primaryKeys),
398
+ sourceAlias: (_a = options.sourceAlias) !== null && _a !== void 0 ? _a : 'src'
399
+ };
400
+ }
401
+ static normalizeColumnArray(columns) {
402
+ const array = Array.isArray(columns) ? columns : [columns];
403
+ const normalized = array.map(col => col.trim()).filter(col => col.length > 0);
404
+ if (!normalized.length) {
405
+ throw new Error('At least one column must be specified.');
406
+ }
407
+ return normalized;
408
+ }
409
+ static collectSelectItems(selectQuery) {
410
+ const collector = new SelectValueCollector_1.SelectValueCollector();
411
+ return collector.collect(selectQuery);
412
+ }
413
+ static collectSelectColumnNames(selectQuery) {
414
+ const items = QueryBuilder.collectSelectItems(selectQuery);
415
+ const names = [];
416
+ for (const item of items) {
417
+ if (!item.name || item.name === '*') {
418
+ throw new Error(`Columns cannot be inferred from the selectQuery. ` +
419
+ `Make sure you are not using wildcards or unnamed columns.`);
420
+ }
421
+ if (!names.includes(item.name)) {
422
+ names.push(item.name);
423
+ }
424
+ }
425
+ if (!names.length) {
426
+ throw new Error('Unable to determine any column names from selectQuery.');
427
+ }
428
+ return names;
429
+ }
430
+ static ensurePrimaryKeys(selectColumns, primaryKeys) {
431
+ const available = new Set(selectColumns);
432
+ for (const pk of primaryKeys) {
433
+ if (!available.has(pk)) {
434
+ throw new Error(`Primary key column '${pk}' is not present in selectQuery select list.`);
435
+ }
436
+ }
437
+ }
438
+ static prepareInsertColumns(selectQuery, optionColumns) {
439
+ const selectColumns = QueryBuilder.collectSelectColumnNames(selectQuery);
440
+ if (optionColumns && optionColumns.length > 0) {
441
+ const normalized = QueryBuilder.normalizeColumnArray(optionColumns);
442
+ const uniqueNormalized = normalized.filter((name, idx) => normalized.indexOf(name) === idx);
443
+ const missing = uniqueNormalized.filter(name => !selectColumns.includes(name));
444
+ if (missing.length > 0) {
445
+ throw new Error(`Columns specified in conversion options were not found in selectQuery select list: [${missing.join(', ')}].`);
446
+ }
447
+ QueryBuilder.rebuildSelectClause(selectQuery, uniqueNormalized);
448
+ QueryBuilder.ensureSelectClauseSize(selectQuery, uniqueNormalized.length);
449
+ return uniqueNormalized;
450
+ }
451
+ QueryBuilder.ensureSelectClauseSize(selectQuery, selectColumns.length);
452
+ return selectColumns;
453
+ }
454
+ static prepareUpdateColumns(selectQuery, primaryKeys, explicitColumns) {
455
+ const selectColumns = QueryBuilder.collectSelectColumnNames(selectQuery);
456
+ QueryBuilder.ensurePrimaryKeys(selectColumns, primaryKeys);
457
+ const primaryKeySet = new Set(primaryKeys);
458
+ const updateCandidates = selectColumns.filter(name => !primaryKeySet.has(name));
459
+ let updateColumnsOrdered;
460
+ if (explicitColumns && explicitColumns.length > 0) {
461
+ const normalized = QueryBuilder.normalizeColumnArray(explicitColumns);
462
+ const uniqueNormalized = normalized.filter((name, idx) => normalized.indexOf(name) === idx);
463
+ const missing = uniqueNormalized.filter(name => primaryKeySet.has(name) || !updateCandidates.includes(name));
464
+ if (missing.length > 0) {
465
+ throw new Error(`Provided update columns were not found in selectQuery output or are primary keys: [${missing.join(', ')}].`);
466
+ }
467
+ updateColumnsOrdered = uniqueNormalized;
468
+ }
469
+ else {
470
+ updateColumnsOrdered = Array.from(new Set(updateCandidates));
471
+ }
472
+ const desiredOrder = Array.from(new Set([
473
+ ...primaryKeys,
474
+ ...updateColumnsOrdered
475
+ ]));
476
+ QueryBuilder.rebuildSelectClause(selectQuery, desiredOrder);
477
+ QueryBuilder.ensureSelectClauseSize(selectQuery, desiredOrder.length);
478
+ return updateColumnsOrdered;
479
+ }
480
+ static prepareDeleteColumns(selectQuery, primaryKeys, explicitColumns) {
481
+ const selectColumns = QueryBuilder.collectSelectColumnNames(selectQuery);
482
+ QueryBuilder.ensurePrimaryKeys(selectColumns, primaryKeys);
483
+ const primaryKeySet = new Set(primaryKeys);
484
+ let matchColumns = [];
485
+ if (explicitColumns && explicitColumns.length > 0) {
486
+ const normalized = QueryBuilder.normalizeColumnArray(explicitColumns);
487
+ const preferred = new Set(normalized);
488
+ matchColumns = selectColumns.filter(name => preferred.has(name) && !primaryKeySet.has(name));
489
+ }
490
+ const requiredColumns = new Set();
491
+ primaryKeys.forEach(key => requiredColumns.add(key));
492
+ matchColumns.forEach(col => requiredColumns.add(col));
493
+ const desiredOrder = selectColumns.filter(name => requiredColumns.has(name));
494
+ QueryBuilder.rebuildSelectClause(selectQuery, desiredOrder);
495
+ QueryBuilder.ensureSelectClauseSize(selectQuery, desiredOrder.length);
496
+ return desiredOrder;
497
+ }
498
+ static prepareMergeColumns(selectQuery, primaryKeys, explicitUpdateColumns, explicitInsertColumns, matchedAction, notMatchedAction) {
499
+ const selectColumns = QueryBuilder.collectSelectColumnNames(selectQuery);
500
+ QueryBuilder.ensurePrimaryKeys(selectColumns, primaryKeys);
501
+ const primaryKeySet = new Set(primaryKeys);
502
+ let updateColumnsOrdered = [];
503
+ if (matchedAction === 'update') {
504
+ const candidates = selectColumns.filter(name => !primaryKeySet.has(name));
505
+ if (explicitUpdateColumns && explicitUpdateColumns.length > 0) {
506
+ const normalized = QueryBuilder.normalizeColumnArray(explicitUpdateColumns);
507
+ const uniqueNormalized = normalized.filter((name, idx) => normalized.indexOf(name) === idx);
508
+ const missing = uniqueNormalized.filter(name => primaryKeySet.has(name) || !candidates.includes(name));
509
+ if (missing.length > 0) {
510
+ throw new Error(`Provided update columns were not found in selectQuery output or are primary keys: [${missing.join(', ')}].`);
511
+ }
512
+ updateColumnsOrdered = uniqueNormalized;
513
+ }
514
+ else {
515
+ updateColumnsOrdered = Array.from(new Set(candidates));
516
+ }
517
+ }
518
+ let insertColumnsOrdered = [];
519
+ if (notMatchedAction === 'insert') {
520
+ if (explicitInsertColumns && explicitInsertColumns.length > 0) {
521
+ const normalized = QueryBuilder.normalizeColumnArray(explicitInsertColumns);
522
+ const uniqueNormalized = normalized.filter((name, idx) => normalized.indexOf(name) === idx);
523
+ const missing = uniqueNormalized.filter(name => !selectColumns.includes(name));
524
+ if (missing.length > 0) {
525
+ throw new Error(`Provided insert columns were not found in selectQuery output: [${missing.join(', ')}].`);
526
+ }
527
+ insertColumnsOrdered = uniqueNormalized;
528
+ }
529
+ else {
530
+ insertColumnsOrdered = Array.from(new Set(selectColumns));
531
+ }
532
+ }
533
+ const desiredOrder = Array.from(new Set([
534
+ ...primaryKeys,
535
+ ...updateColumnsOrdered,
536
+ ...insertColumnsOrdered,
537
+ ...selectColumns
538
+ ])).filter(name => selectColumns.includes(name));
539
+ QueryBuilder.rebuildSelectClause(selectQuery, desiredOrder);
540
+ QueryBuilder.ensureSelectClauseSize(selectQuery, desiredOrder.length);
541
+ const finalUpdateColumns = matchedAction === 'update'
542
+ ? updateColumnsOrdered
543
+ : [];
544
+ const finalInsertColumns = notMatchedAction === 'insert'
545
+ ? insertColumnsOrdered
546
+ : [];
547
+ return {
548
+ updateColumns: finalUpdateColumns,
549
+ insertColumns: finalInsertColumns
550
+ };
551
+ }
552
+ static rebuildSelectClause(selectQuery, desiredColumns) {
553
+ const itemMap = new Map();
554
+ for (const item of selectQuery.selectClause.items) {
555
+ const name = QueryBuilder.getSelectItemName(item);
556
+ if (!name) {
557
+ continue;
558
+ }
559
+ if (!itemMap.has(name)) {
560
+ itemMap.set(name, item);
561
+ }
562
+ }
563
+ const rebuiltItems = [];
564
+ const seen = new Set();
565
+ for (const column of desiredColumns) {
566
+ if (seen.has(column)) {
567
+ continue;
568
+ }
569
+ const item = itemMap.get(column);
570
+ if (!item) {
571
+ throw new Error(`Column '${column}' not found in select clause.`);
572
+ }
573
+ rebuiltItems.push(item);
574
+ seen.add(column);
575
+ }
576
+ if (!rebuiltItems.length) {
577
+ throw new Error('Unable to rebuild select clause with the requested columns.');
578
+ }
579
+ selectQuery.selectClause.items = rebuiltItems;
580
+ }
581
+ static getSelectItemName(item) {
582
+ if (item.identifier) {
583
+ return item.identifier.name;
584
+ }
585
+ if (item.value instanceof ValueComponent_1.ColumnReference) {
586
+ return item.value.column.name;
587
+ }
588
+ return null;
589
+ }
590
+ static ensureSelectClauseSize(selectQuery, expected) {
591
+ if (selectQuery.selectClause.items.length !== expected) {
592
+ throw new Error(`Select clause column count (${selectQuery.selectClause.items.length}) does not match expected count (${expected}).`);
593
+ }
594
+ }
595
+ static extractWithClause(selectQuery) {
226
596
  const cteCollector = new CTECollector_1.CTECollector();
227
- const collectedCTEs = cteCollector.collect(selectQuery);
597
+ const collected = cteCollector.collect(selectQuery);
598
+ if (collected.length === 0) {
599
+ return null;
600
+ }
228
601
  const cteDisabler = new CTEDisabler_1.CTEDisabler();
229
602
  cteDisabler.execute(selectQuery);
230
- for (const pk of pkArray) {
231
- if (!selectItems.some(item => item.name === pk)) {
232
- throw new Error(`Primary key column '${pk}' is not present in selectQuery select list.`);
233
- }
603
+ return new Clause_1.WithClause(false, collected);
604
+ }
605
+ static buildEqualityPredicate(leftAlias, rightAlias, columns) {
606
+ const uniqueColumns = QueryBuilder.mergeUniqueColumns(columns);
607
+ if (!uniqueColumns.length) {
608
+ throw new Error('At least one column is required to build a comparison predicate.');
234
609
  }
235
- const updateSourceName = updateClause.getSourceAliasName();
236
- if (!updateSourceName) {
237
- throw new Error(`Source expression does not have an alias. Please provide an alias for the source expression.`);
610
+ let predicate = null;
611
+ for (const column of uniqueColumns) {
612
+ const comparison = new ValueComponent_1.BinaryExpression(QueryBuilder.toColumnReference(leftAlias, column), '=', QueryBuilder.toColumnReference(rightAlias, column));
613
+ predicate = predicate ? new ValueComponent_1.BinaryExpression(predicate, 'and', comparison) : comparison;
238
614
  }
239
- const setColumns = selectItems.filter(item => !pkArray.includes(item.name));
240
- const setItems = setColumns.map(col => new Clause_1.SetClauseItem(col.name, new ValueComponent_1.ColumnReference(updateSourceName, col.name)));
241
- const setClause = new Clause_1.SetClause(setItems);
242
- const from = new Clause_1.FromClause(selectQuery.toSource(selectSourceName), null);
243
- let where = null;
244
- for (const pk of pkArray) {
245
- const cond = new ValueComponent_1.BinaryExpression(new ValueComponent_1.ColumnReference(updateSourceName, pk), '=', new ValueComponent_1.ColumnReference(selectSourceName, pk));
246
- where = where ? new ValueComponent_1.BinaryExpression(where, 'and', cond) : cond;
247
- }
248
- const whereClause = new Clause_1.WhereClause(where);
249
- const updateQuery = new UpdateQuery_1.UpdateQuery({
250
- updateClause: updateClause,
251
- setClause: setClause,
252
- fromClause: from,
253
- whereClause: whereClause,
254
- withClause: collectedCTEs.length > 0 ? new Clause_1.WithClause(false, collectedCTEs) : undefined,
255
- });
256
- return updateQuery;
615
+ return predicate;
616
+ }
617
+ static toColumnReference(alias, column) {
618
+ return new ValueComponent_1.ColumnReference(alias, column);
619
+ }
620
+ static mergeUniqueColumns(columns) {
621
+ const seen = new Set();
622
+ const result = [];
623
+ for (const column of columns) {
624
+ if (!seen.has(column)) {
625
+ seen.add(column);
626
+ result.push(column);
627
+ }
628
+ }
629
+ return result;
257
630
  }
258
631
  }
259
632
  exports.QueryBuilder = QueryBuilder;
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../src/transformers/QueryBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../src/transformers/QueryBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import { CastStyle, ConstraintStyle } from '../parsers/SqlPrintTokenParser';
1
2
  import { CommaBreakStyle, AndBreakStyle, OrBreakStyle } from './SqlPrinter';
3
+ import { CommentExportMode } from '../types/Formatting';
2
4
  import { IndentCharOption, NewlineOption } from './LinePrinter';
3
5
  import { IdentifierEscapeOption } from './FormatOptionResolver';
4
6
  import { SqlComponent } from '../models/SqlComponent';
@@ -48,9 +50,7 @@ export interface BaseFormattingOptions {
48
50
  /** Style for OR line breaks */
49
51
  orBreak?: OrBreakStyle;
50
52
  /** Whether to export comments in formatted output */
51
- exportComment?: boolean;
52
- /** Whether to only export comments from clause-level keywords */
53
- strictCommentPlacement?: boolean;
53
+ exportComment?: boolean | CommentExportMode;
54
54
  /** Comment formatting style */
55
55
  commentStyle?: CommentStyle;
56
56
  /** Formatting style for WITH clauses */
@@ -69,6 +69,12 @@ export interface BaseFormattingOptions {
69
69
  subqueryOneLine?: boolean;
70
70
  /** Indent nested parentheses when boolean groups contain additional parentheses */
71
71
  indentNestedParentheses?: boolean;
72
+ /** Keep INSERT column lists on one line regardless of comma break settings */
73
+ insertColumnsOneLine?: boolean;
74
+ /** Keep MERGE WHEN clause predicates on one line regardless of AND break settings */
75
+ whenOneLine?: boolean;
76
+ /** Reorder JOIN ON column comparisons to follow table declaration order */
77
+ joinConditionOrderByDeclaration?: boolean;
72
78
  }
73
79
  /**
74
80
  * High level configuration accepted by SqlFormatter.
@@ -93,6 +99,10 @@ export interface SqlFormatterOptions extends BaseFormattingOptions {
93
99
  };
94
100
  /** Style for parameter formatting */
95
101
  parameterStyle?: 'anonymous' | 'indexed' | 'named';
102
+ /** Preferred CAST rendering style */
103
+ castStyle?: CastStyle;
104
+ /** Constraint rendering style (affects CREATE TABLE constraint layout) */
105
+ constraintStyle?: ConstraintStyle;
96
106
  }
97
107
  /**
98
108
  * High level facade that parses a SqlComponent, applies formatting rules, and prints the final SQL text.