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