rawsql-ts 0.12.0 → 0.13.0
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/LICENSE +21 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +16 -16
- package/dist/esm/index.min.js.map +3 -3
- package/dist/esm/src/index.d.ts +12 -0
- package/dist/esm/src/index.js +11 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/models/Clause.d.ts +7 -3
- package/dist/esm/src/models/Clause.js +17 -4
- package/dist/esm/src/models/Clause.js.map +1 -1
- package/dist/esm/src/models/DDLStatements.d.ts +14 -2
- package/dist/esm/src/models/DDLStatements.js +12 -0
- package/dist/esm/src/models/DDLStatements.js.map +1 -1
- package/dist/esm/src/models/InsertQuery.d.ts +1 -4
- package/dist/esm/src/models/InsertQuery.js +3 -5
- package/dist/esm/src/models/InsertQuery.js.map +1 -1
- package/dist/esm/src/models/SqlPrintToken.d.ts +1 -0
- package/dist/esm/src/models/SqlPrintToken.js +1 -0
- package/dist/esm/src/models/SqlPrintToken.js.map +1 -1
- package/dist/esm/src/models/TableDefinitionModel.d.ts +39 -0
- package/dist/esm/src/models/TableDefinitionModel.js +77 -0
- package/dist/esm/src/models/TableDefinitionModel.js.map +1 -0
- package/dist/esm/src/models/ValuesQuery.d.ts +2 -0
- package/dist/esm/src/models/ValuesQuery.js +1 -0
- package/dist/esm/src/models/ValuesQuery.js.map +1 -1
- package/dist/esm/src/parsers/AlterTableParser.js +1 -1
- package/dist/esm/src/parsers/AlterTableParser.js.map +1 -1
- package/dist/esm/src/parsers/InsertQueryParser.js +4 -1
- package/dist/esm/src/parsers/InsertQueryParser.js.map +1 -1
- package/dist/esm/src/parsers/ReturningClauseParser.js +33 -47
- package/dist/esm/src/parsers/ReturningClauseParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlParser.d.ts +0 -1
- package/dist/esm/src/parsers/SqlParser.js +44 -58
- package/dist/esm/src/parsers/SqlParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +1 -0
- package/dist/esm/src/parsers/SqlPrintTokenParser.js +23 -5
- package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/src/tokenReaders/LiteralTokenReader.js +7 -0
- package/dist/esm/src/tokenReaders/LiteralTokenReader.js.map +1 -1
- package/dist/esm/src/transformers/DDLDiffGenerator.d.ts +14 -0
- package/dist/esm/src/transformers/DDLDiffGenerator.js +197 -0
- package/dist/esm/src/transformers/DDLDiffGenerator.js.map +1 -0
- package/dist/esm/src/transformers/DDLGeneralizer.d.ts +13 -0
- package/dist/esm/src/transformers/DDLGeneralizer.js +98 -0
- package/dist/esm/src/transformers/DDLGeneralizer.js.map +1 -0
- package/dist/esm/src/transformers/DDLToFixtureConverter.d.ts +19 -0
- package/dist/esm/src/transformers/DDLToFixtureConverter.js +202 -0
- package/dist/esm/src/transformers/DDLToFixtureConverter.js.map +1 -0
- package/dist/esm/src/transformers/DeleteResultSelectConverter.d.ts +53 -0
- package/dist/esm/src/transformers/DeleteResultSelectConverter.js +394 -0
- package/dist/esm/src/transformers/DeleteResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/FixtureCteBuilder.d.ts +60 -0
- package/dist/esm/src/transformers/FixtureCteBuilder.js +147 -0
- package/dist/esm/src/transformers/FixtureCteBuilder.js.map +1 -0
- package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js +5 -2
- package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -1
- package/dist/esm/src/transformers/InsertResultSelectConverter.d.ts +64 -0
- package/dist/esm/src/transformers/InsertResultSelectConverter.js +495 -0
- package/dist/esm/src/transformers/InsertResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/MergeResultSelectConverter.d.ts +38 -0
- package/dist/esm/src/transformers/MergeResultSelectConverter.js +306 -0
- package/dist/esm/src/transformers/MergeResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/QueryBuilder.d.ts +11 -0
- package/dist/esm/src/transformers/QueryBuilder.js +19 -3
- package/dist/esm/src/transformers/QueryBuilder.js.map +1 -1
- package/dist/esm/src/transformers/SelectResultSelectConverter.d.ts +10 -0
- package/dist/esm/src/transformers/SelectResultSelectConverter.js +32 -0
- package/dist/esm/src/transformers/SelectResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/SimulatedSelectConverter.d.ts +23 -0
- package/dist/esm/src/transformers/SimulatedSelectConverter.js +61 -0
- package/dist/esm/src/transformers/SimulatedSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/UpdateResultSelectConverter.d.ts +51 -0
- package/dist/esm/src/transformers/UpdateResultSelectConverter.js +340 -0
- package/dist/esm/src/transformers/UpdateResultSelectConverter.js.map +1 -0
- package/dist/esm/src/utils/SelectQueryWithClauseHelper.d.ts +12 -0
- package/dist/esm/src/utils/SelectQueryWithClauseHelper.js +43 -0
- package/dist/esm/src/utils/SelectQueryWithClauseHelper.js.map +1 -0
- package/dist/esm/src/utils/ValueComponentRewriter.d.ts +3 -0
- package/dist/esm/src/utils/ValueComponentRewriter.js +180 -0
- package/dist/esm/src/utils/ValueComponentRewriter.js.map +1 -0
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/formatters/OriginalFormatRestorer.js +139 -0
- package/dist/formatters/OriginalFormatRestorer.js.map +1 -0
- package/dist/index.js +144 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +17 -17
- package/dist/index.min.js.map +3 -3
- package/dist/models/BinarySelectQuery.js +198 -0
- package/dist/models/BinarySelectQuery.js.map +1 -0
- package/dist/models/CTEError.js +37 -0
- package/dist/models/CTEError.js.map +1 -0
- package/dist/models/Clause.js +535 -0
- package/dist/models/Clause.js.map +1 -0
- package/dist/models/CreateTableQuery.js +135 -0
- package/dist/models/CreateTableQuery.js.map +1 -0
- package/dist/models/DDLStatements.js +275 -0
- package/dist/models/DDLStatements.js.map +1 -0
- package/dist/models/DeleteQuery.js +20 -0
- package/dist/models/DeleteQuery.js.map +1 -0
- package/dist/models/FormattingLexeme.js +3 -0
- package/dist/models/FormattingLexeme.js.map +1 -0
- package/dist/models/HintClause.js +41 -0
- package/dist/models/HintClause.js.map +1 -0
- package/dist/models/InsertQuery.js +23 -0
- package/dist/models/InsertQuery.js.map +1 -0
- package/dist/models/KeywordTrie.js +54 -0
- package/dist/models/KeywordTrie.js.map +1 -0
- package/dist/models/Lexeme.js +22 -0
- package/dist/models/Lexeme.js.map +1 -0
- package/dist/models/MergeQuery.js +104 -0
- package/dist/models/MergeQuery.js.map +1 -0
- package/dist/models/SelectQuery.js +22 -0
- package/dist/models/SelectQuery.js.map +1 -0
- package/dist/models/SimpleSelectQuery.js +648 -0
- package/dist/models/SimpleSelectQuery.js.map +1 -0
- package/dist/models/SqlComponent.js +73 -0
- package/dist/models/SqlComponent.js.map +1 -0
- package/dist/models/SqlPrintToken.js +143 -0
- package/dist/models/SqlPrintToken.js.map +1 -0
- package/dist/models/TableDefinitionModel.js +86 -0
- package/dist/models/TableDefinitionModel.js.map +1 -0
- package/dist/models/UpdateQuery.js +29 -0
- package/dist/models/UpdateQuery.js.map +1 -0
- package/dist/models/ValueComponent.js +380 -0
- package/dist/models/ValueComponent.js.map +1 -0
- package/dist/models/ValuesQuery.js +62 -0
- package/dist/models/ValuesQuery.js.map +1 -0
- package/dist/parsers/AlterTableParser.js +490 -0
- package/dist/parsers/AlterTableParser.js.map +1 -0
- package/dist/parsers/AnalyzeStatementParser.js +94 -0
- package/dist/parsers/AnalyzeStatementParser.js.map +1 -0
- package/dist/parsers/CommandExpressionParser.js +213 -0
- package/dist/parsers/CommandExpressionParser.js.map +1 -0
- package/dist/parsers/CommonTableParser.js +177 -0
- package/dist/parsers/CommonTableParser.js.map +1 -0
- package/dist/parsers/CreateIndexParser.js +241 -0
- package/dist/parsers/CreateIndexParser.js.map +1 -0
- package/dist/parsers/CreateTableParser.js +738 -0
- package/dist/parsers/CreateTableParser.js.map +1 -0
- package/dist/parsers/DeleteClauseParser.js +37 -0
- package/dist/parsers/DeleteClauseParser.js.map +1 -0
- package/dist/parsers/DeleteQueryParser.js +77 -0
- package/dist/parsers/DeleteQueryParser.js.map +1 -0
- package/dist/parsers/DropConstraintParser.js +51 -0
- package/dist/parsers/DropConstraintParser.js.map +1 -0
- package/dist/parsers/DropIndexParser.js +73 -0
- package/dist/parsers/DropIndexParser.js.map +1 -0
- package/dist/parsers/DropTableParser.js +63 -0
- package/dist/parsers/DropTableParser.js.map +1 -0
- package/dist/parsers/ExplainStatementParser.js +189 -0
- package/dist/parsers/ExplainStatementParser.js.map +1 -0
- package/dist/parsers/FetchClauseParser.js +89 -0
- package/dist/parsers/FetchClauseParser.js.map +1 -0
- package/dist/parsers/ForClauseParser.js +58 -0
- package/dist/parsers/ForClauseParser.js.map +1 -0
- package/dist/parsers/FromClauseParser.js +54 -0
- package/dist/parsers/FromClauseParser.js.map +1 -0
- package/dist/parsers/FullNameParser.js +110 -0
- package/dist/parsers/FullNameParser.js.map +1 -0
- package/dist/parsers/FunctionExpressionParser.js +524 -0
- package/dist/parsers/FunctionExpressionParser.js.map +1 -0
- package/dist/parsers/GroupByParser.js +58 -0
- package/dist/parsers/GroupByParser.js.map +1 -0
- package/dist/parsers/HavingParser.js +36 -0
- package/dist/parsers/HavingParser.js.map +1 -0
- package/dist/parsers/IdentifierDecorator.js +17 -0
- package/dist/parsers/IdentifierDecorator.js.map +1 -0
- package/dist/parsers/IdentifierParser.js +15 -0
- package/dist/parsers/IdentifierParser.js.map +1 -0
- package/dist/parsers/InsertQueryParser.js +162 -0
- package/dist/parsers/InsertQueryParser.js.map +1 -0
- package/dist/parsers/JoinClauseParser.js +117 -0
- package/dist/parsers/JoinClauseParser.js.map +1 -0
- package/dist/parsers/JoinOnClauseParser.js +21 -0
- package/dist/parsers/JoinOnClauseParser.js.map +1 -0
- package/dist/parsers/JoinUsingClauseParser.js +23 -0
- package/dist/parsers/JoinUsingClauseParser.js.map +1 -0
- package/dist/parsers/KeywordParser.js +99 -0
- package/dist/parsers/KeywordParser.js.map +1 -0
- package/dist/parsers/LimitClauseParser.js +38 -0
- package/dist/parsers/LimitClauseParser.js.map +1 -0
- package/dist/parsers/LiteralParser.js +48 -0
- package/dist/parsers/LiteralParser.js.map +1 -0
- package/dist/parsers/MergeQueryParser.js +483 -0
- package/dist/parsers/MergeQueryParser.js.map +1 -0
- package/dist/parsers/OffsetClauseParser.js +42 -0
- package/dist/parsers/OffsetClauseParser.js.map +1 -0
- package/dist/parsers/OrderByClauseParser.js +108 -0
- package/dist/parsers/OrderByClauseParser.js.map +1 -0
- package/dist/parsers/OverExpressionParser.js +44 -0
- package/dist/parsers/OverExpressionParser.js.map +1 -0
- package/dist/parsers/ParameterDecorator.js +40 -0
- package/dist/parsers/ParameterDecorator.js.map +1 -0
- package/dist/parsers/ParameterExpressionParser.js +24 -0
- package/dist/parsers/ParameterExpressionParser.js.map +1 -0
- package/dist/parsers/ParenExpressionParser.js +109 -0
- package/dist/parsers/ParenExpressionParser.js.map +1 -0
- package/dist/parsers/ParseError.js +25 -0
- package/dist/parsers/ParseError.js.map +1 -0
- package/dist/parsers/PartitionByParser.js +53 -0
- package/dist/parsers/PartitionByParser.js.map +1 -0
- package/dist/parsers/ReturningClauseParser.js +64 -0
- package/dist/parsers/ReturningClauseParser.js.map +1 -0
- package/dist/parsers/SelectClauseParser.js +244 -0
- package/dist/parsers/SelectClauseParser.js.map +1 -0
- package/dist/parsers/SelectQueryParser.js +564 -0
- package/dist/parsers/SelectQueryParser.js.map +1 -0
- package/dist/parsers/SequenceParser.js +245 -0
- package/dist/parsers/SequenceParser.js.map +1 -0
- package/dist/parsers/SetClauseParser.js +125 -0
- package/dist/parsers/SetClauseParser.js.map +1 -0
- package/dist/parsers/SourceAliasExpressionParser.js +60 -0
- package/dist/parsers/SourceAliasExpressionParser.js.map +1 -0
- package/dist/parsers/SourceExpressionParser.js +69 -0
- package/dist/parsers/SourceExpressionParser.js.map +1 -0
- package/dist/parsers/SourceParser.js +144 -0
- package/dist/parsers/SourceParser.js.map +1 -0
- package/dist/parsers/SqlParser.js +431 -0
- package/dist/parsers/SqlParser.js.map +1 -0
- package/dist/parsers/SqlPrintTokenParser.js +3289 -0
- package/dist/parsers/SqlPrintTokenParser.js.map +1 -0
- package/dist/parsers/SqlTokenizer.js +553 -0
- package/dist/parsers/SqlTokenizer.js.map +1 -0
- package/dist/parsers/StringSpecifierExpressionParser.js +22 -0
- package/dist/parsers/StringSpecifierExpressionParser.js.map +1 -0
- package/dist/parsers/UnaryExpressionParser.js +39 -0
- package/dist/parsers/UnaryExpressionParser.js.map +1 -0
- package/dist/parsers/UpdateClauseParser.js +21 -0
- package/dist/parsers/UpdateClauseParser.js.map +1 -0
- package/dist/parsers/UpdateQueryParser.js +98 -0
- package/dist/parsers/UpdateQueryParser.js.map +1 -0
- package/dist/parsers/UsingClauseParser.js +33 -0
- package/dist/parsers/UsingClauseParser.js.map +1 -0
- package/dist/parsers/ValueParser.js +562 -0
- package/dist/parsers/ValueParser.js.map +1 -0
- package/dist/parsers/ValuesQueryParser.js +112 -0
- package/dist/parsers/ValuesQueryParser.js.map +1 -0
- package/dist/parsers/WhereClauseParser.js +51 -0
- package/dist/parsers/WhereClauseParser.js.map +1 -0
- package/dist/parsers/WindowClauseParser.js +57 -0
- package/dist/parsers/WindowClauseParser.js.map +1 -0
- package/dist/parsers/WindowExpressionParser.js +163 -0
- package/dist/parsers/WindowExpressionParser.js.map +1 -0
- package/dist/parsers/WithClauseParser.js +165 -0
- package/dist/parsers/WithClauseParser.js.map +1 -0
- package/dist/parsers/utils/LexemeCommentUtils.js +29 -0
- package/dist/parsers/utils/LexemeCommentUtils.js.map +1 -0
- package/dist/reporting/models/DataFlowEdge.js +58 -0
- package/dist/reporting/models/DataFlowEdge.js.map +1 -0
- package/dist/reporting/models/DataFlowGraph.js +138 -0
- package/dist/reporting/models/DataFlowGraph.js.map +1 -0
- package/dist/reporting/models/DataFlowNode.js +148 -0
- package/dist/reporting/models/DataFlowNode.js.map +1 -0
- package/dist/reporting/services/CTEHandler.js +58 -0
- package/dist/reporting/services/CTEHandler.js.map +1 -0
- package/dist/reporting/services/DataSourceHandler.js +95 -0
- package/dist/reporting/services/DataSourceHandler.js.map +1 -0
- package/dist/reporting/services/JoinHandler.js +84 -0
- package/dist/reporting/services/JoinHandler.js.map +1 -0
- package/dist/reporting/services/ProcessHandler.js +26 -0
- package/dist/reporting/services/ProcessHandler.js.map +1 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.js +13 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Clause.d.ts +7 -3
- package/dist/src/models/Clause.js +16 -3
- package/dist/src/models/Clause.js.map +1 -1
- package/dist/src/models/DDLStatements.d.ts +97 -2
- package/dist/src/models/DDLStatements.js +14 -1
- package/dist/src/models/DDLStatements.js.map +1 -1
- package/dist/src/models/InsertQuery.d.ts +1 -4
- package/dist/src/models/InsertQuery.js +3 -5
- package/dist/src/models/InsertQuery.js.map +1 -1
- package/dist/src/models/SqlPrintToken.d.ts +6 -0
- package/dist/src/models/SqlPrintToken.js +1 -0
- package/dist/src/models/SqlPrintToken.js.map +1 -1
- package/dist/src/models/TableDefinitionModel.d.ts +41 -0
- package/dist/src/models/TableDefinitionModel.js +85 -0
- package/dist/src/models/TableDefinitionModel.js.map +1 -0
- package/dist/src/models/ValueComponent.d.ts +2 -1
- package/dist/src/models/ValuesQuery.d.ts +2 -0
- package/dist/src/models/ValuesQuery.js +1 -0
- package/dist/src/models/ValuesQuery.js.map +1 -1
- package/dist/src/parsers/AlterTableParser.d.ts +1 -0
- package/dist/src/parsers/AlterTableParser.js +26 -5
- package/dist/src/parsers/AlterTableParser.js.map +1 -1
- package/dist/src/parsers/FunctionExpressionParser.d.ts +1 -0
- package/dist/src/parsers/InsertQueryParser.js +4 -1
- package/dist/src/parsers/InsertQueryParser.js.map +1 -1
- package/dist/src/parsers/ReturningClauseParser.js +33 -47
- package/dist/src/parsers/ReturningClauseParser.js.map +1 -1
- package/dist/src/parsers/SequenceParser.d.ts +16 -0
- package/dist/src/parsers/SqlParser.d.ts +4 -3
- package/dist/src/parsers/SqlParser.js +44 -63
- package/dist/src/parsers/SqlParser.js.map +1 -1
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +9 -0
- package/dist/src/parsers/SqlPrintTokenParser.js +22 -4
- package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/src/parsers/SqlTokenizer.d.ts +1 -0
- package/dist/src/tokenReaders/LiteralTokenReader.js +7 -0
- package/dist/src/tokenReaders/LiteralTokenReader.js.map +1 -1
- package/dist/src/transformers/DDLDiffGenerator.d.ts +18 -0
- package/dist/src/transformers/DDLDiffGenerator.js +313 -0
- package/dist/src/transformers/DDLDiffGenerator.js.map +1 -0
- package/dist/src/transformers/DDLGeneralizer.d.ts +13 -0
- package/dist/src/transformers/DDLGeneralizer.js +119 -0
- package/dist/src/transformers/DDLGeneralizer.js.map +1 -0
- package/dist/src/transformers/DDLToFixtureConverter.d.ts +19 -0
- package/dist/src/transformers/DDLToFixtureConverter.js +206 -0
- package/dist/src/transformers/DDLToFixtureConverter.js.map +1 -0
- package/dist/src/transformers/DeleteResultSelectConverter.d.ts +53 -0
- package/dist/src/transformers/DeleteResultSelectConverter.js +398 -0
- package/dist/src/transformers/DeleteResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/FixtureCteBuilder.d.ts +60 -0
- package/dist/src/transformers/FixtureCteBuilder.js +151 -0
- package/dist/src/transformers/FixtureCteBuilder.js.map +1 -0
- package/dist/src/transformers/InsertQuerySelectValuesConverter.js +5 -2
- package/dist/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -1
- package/dist/src/transformers/InsertResultSelectConverter.d.ts +67 -0
- package/dist/src/transformers/InsertResultSelectConverter.js +499 -0
- package/dist/src/transformers/InsertResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/MergeResultSelectConverter.d.ts +38 -0
- package/dist/src/transformers/MergeResultSelectConverter.js +310 -0
- package/dist/src/transformers/MergeResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/QueryBuilder.d.ts +11 -0
- package/dist/src/transformers/QueryBuilder.js +19 -3
- package/dist/src/transformers/QueryBuilder.js.map +1 -1
- package/dist/src/transformers/SelectResultSelectConverter.d.ts +10 -0
- package/dist/src/transformers/SelectResultSelectConverter.js +36 -0
- package/dist/src/transformers/SelectResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/SimulatedSelectConverter.d.ts +23 -0
- package/dist/src/transformers/SimulatedSelectConverter.js +65 -0
- package/dist/src/transformers/SimulatedSelectConverter.js.map +1 -0
- package/dist/src/transformers/UpdateResultSelectConverter.d.ts +51 -0
- package/dist/src/transformers/UpdateResultSelectConverter.js +344 -0
- package/dist/src/transformers/UpdateResultSelectConverter.js.map +1 -0
- package/dist/src/types/GenericFixture.d.ts +17 -0
- package/dist/src/utils/SelectQueryWithClauseHelper.d.ts +12 -0
- package/dist/src/utils/SelectQueryWithClauseHelper.js +47 -0
- package/dist/src/utils/SelectQueryWithClauseHelper.js.map +1 -0
- package/dist/src/utils/TableNameUtils.d.ts +10 -0
- package/dist/src/utils/ValueComponentRewriter.d.ts +3 -0
- package/dist/src/utils/ValueComponentRewriter.js +183 -0
- package/dist/src/utils/ValueComponentRewriter.js.map +1 -0
- package/dist/tokenReaders/BaseTokenReader.js +86 -0
- package/dist/tokenReaders/BaseTokenReader.js.map +1 -0
- package/dist/tokenReaders/CommandTokenReader.js +221 -0
- package/dist/tokenReaders/CommandTokenReader.js.map +1 -0
- package/dist/tokenReaders/EscapedIdentifierTokenReader.js +99 -0
- package/dist/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -0
- package/dist/tokenReaders/FunctionTokenReader.js +47 -0
- package/dist/tokenReaders/FunctionTokenReader.js.map +1 -0
- package/dist/tokenReaders/IdentifierTokenReader.js +34 -0
- package/dist/tokenReaders/IdentifierTokenReader.js.map +1 -0
- package/dist/tokenReaders/LiteralTokenReader.js +329 -0
- package/dist/tokenReaders/LiteralTokenReader.js.map +1 -0
- package/dist/tokenReaders/OperatorTokenReader.js +152 -0
- package/dist/tokenReaders/OperatorTokenReader.js.map +1 -0
- package/dist/tokenReaders/ParameterTokenReader.js +190 -0
- package/dist/tokenReaders/ParameterTokenReader.js.map +1 -0
- package/dist/tokenReaders/StringSpecifierTokenReader.js +31 -0
- package/dist/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
- package/dist/tokenReaders/SymbolTokenReader.js +35 -0
- package/dist/tokenReaders/SymbolTokenReader.js.map +1 -0
- package/dist/tokenReaders/TokenReaderManager.js +110 -0
- package/dist/tokenReaders/TokenReaderManager.js.map +1 -0
- package/dist/tokenReaders/TypeTokenReader.js +69 -0
- package/dist/tokenReaders/TypeTokenReader.js.map +1 -0
- package/dist/transformers/AliasRenamer.js +600 -0
- package/dist/transformers/AliasRenamer.js.map +1 -0
- package/dist/transformers/CTEBuilder.js +188 -0
- package/dist/transformers/CTEBuilder.js.map +1 -0
- package/dist/transformers/CTECollector.js +409 -0
- package/dist/transformers/CTECollector.js.map +1 -0
- package/dist/transformers/CTEComposer.js +302 -0
- package/dist/transformers/CTEComposer.js.map +1 -0
- package/dist/transformers/CTEDependencyAnalyzer.js +285 -0
- package/dist/transformers/CTEDependencyAnalyzer.js.map +1 -0
- package/dist/transformers/CTEDependencyTracer.js +253 -0
- package/dist/transformers/CTEDependencyTracer.js.map +1 -0
- package/dist/transformers/CTEDisabler.js +355 -0
- package/dist/transformers/CTEDisabler.js.map +1 -0
- package/dist/transformers/CTEInjector.js +83 -0
- package/dist/transformers/CTEInjector.js.map +1 -0
- package/dist/transformers/CTENormalizer.js +46 -0
- package/dist/transformers/CTENormalizer.js.map +1 -0
- package/dist/transformers/CTEQueryDecomposer.js +589 -0
- package/dist/transformers/CTEQueryDecomposer.js.map +1 -0
- package/dist/transformers/CTERenamer.js +486 -0
- package/dist/transformers/CTERenamer.js.map +1 -0
- package/dist/transformers/CTETableReferenceCollector.js +358 -0
- package/dist/transformers/CTETableReferenceCollector.js.map +1 -0
- package/dist/transformers/ColumnReferenceCollector.js +478 -0
- package/dist/transformers/ColumnReferenceCollector.js.map +1 -0
- package/dist/transformers/DDLDiffGenerator.js +313 -0
- package/dist/transformers/DDLDiffGenerator.js.map +1 -0
- package/dist/transformers/DDLGeneralizer.js +119 -0
- package/dist/transformers/DDLGeneralizer.js.map +1 -0
- package/dist/transformers/DDLToFixtureConverter.js +206 -0
- package/dist/transformers/DDLToFixtureConverter.js.map +1 -0
- package/dist/transformers/DeleteResultSelectConverter.js +414 -0
- package/dist/transformers/DeleteResultSelectConverter.js.map +1 -0
- package/dist/transformers/DynamicQueryBuilder.js +164 -0
- package/dist/transformers/DynamicQueryBuilder.js.map +1 -0
- package/dist/transformers/EnhancedJsonMapping.js +223 -0
- package/dist/transformers/EnhancedJsonMapping.js.map +1 -0
- package/dist/transformers/FilterableItemCollector.js +259 -0
- package/dist/transformers/FilterableItemCollector.js.map +1 -0
- package/dist/transformers/FixtureCteBuilder.js +151 -0
- package/dist/transformers/FixtureCteBuilder.js.map +1 -0
- package/dist/transformers/FormatOptionResolver.js +67 -0
- package/dist/transformers/FormatOptionResolver.js.map +1 -0
- package/dist/transformers/Formatter.js +38 -0
- package/dist/transformers/Formatter.js.map +1 -0
- package/dist/transformers/InsertQuerySelectValuesConverter.js +125 -0
- package/dist/transformers/InsertQuerySelectValuesConverter.js.map +1 -0
- package/dist/transformers/InsertResultSelectConverter.js +589 -0
- package/dist/transformers/InsertResultSelectConverter.js.map +1 -0
- package/dist/transformers/JoinAggregationDecomposer.js +497 -0
- package/dist/transformers/JoinAggregationDecomposer.js.map +1 -0
- package/dist/transformers/JsonMappingConverter.js +392 -0
- package/dist/transformers/JsonMappingConverter.js.map +1 -0
- package/dist/transformers/JsonMappingUnifier.js +216 -0
- package/dist/transformers/JsonMappingUnifier.js.map +1 -0
- package/dist/transformers/LinePrinter.js +148 -0
- package/dist/transformers/LinePrinter.js.map +1 -0
- package/dist/transformers/MergeResultSelectConverter.js +310 -0
- package/dist/transformers/MergeResultSelectConverter.js.map +1 -0
- package/dist/transformers/ModelDrivenJsonMapping.js +122 -0
- package/dist/transformers/ModelDrivenJsonMapping.js.map +1 -0
- package/dist/transformers/OnelineFormattingHelper.js +99 -0
- package/dist/transformers/OnelineFormattingHelper.js.map +1 -0
- package/dist/transformers/ParameterCollector.js +37 -0
- package/dist/transformers/ParameterCollector.js.map +1 -0
- package/dist/transformers/PostgresArrayEntityCteBuilder.js +458 -0
- package/dist/transformers/PostgresArrayEntityCteBuilder.js.map +1 -0
- package/dist/transformers/PostgresJsonQueryBuilder.js +245 -0
- package/dist/transformers/PostgresJsonQueryBuilder.js.map +1 -0
- package/dist/transformers/PostgresObjectEntityCteBuilder.js +347 -0
- package/dist/transformers/PostgresObjectEntityCteBuilder.js.map +1 -0
- package/dist/transformers/QueryBuilder.js +649 -0
- package/dist/transformers/QueryBuilder.js.map +1 -0
- package/dist/transformers/QueryFlowDiagramGenerator.js +157 -0
- package/dist/transformers/QueryFlowDiagramGenerator.js.map +1 -0
- package/dist/transformers/SchemaCollector.js +523 -0
- package/dist/transformers/SchemaCollector.js.map +1 -0
- package/dist/transformers/SelectResultSelectConverter.js +36 -0
- package/dist/transformers/SelectResultSelectConverter.js.map +1 -0
- package/dist/transformers/SelectValueCollector.js +244 -0
- package/dist/transformers/SelectValueCollector.js.map +1 -0
- package/dist/transformers/SelectableColumnCollector.js +674 -0
- package/dist/transformers/SelectableColumnCollector.js.map +1 -0
- package/dist/transformers/SimulatedSelectConverter.js +65 -0
- package/dist/transformers/SimulatedSelectConverter.js.map +1 -0
- package/dist/transformers/SmartRenamer.js +422 -0
- package/dist/transformers/SmartRenamer.js.map +1 -0
- package/dist/transformers/SqlFormatter.js +77 -0
- package/dist/transformers/SqlFormatter.js.map +1 -0
- package/dist/transformers/SqlIdentifierRenamer.js +504 -0
- package/dist/transformers/SqlIdentifierRenamer.js.map +1 -0
- package/dist/transformers/SqlOutputToken.js +13 -0
- package/dist/transformers/SqlOutputToken.js.map +1 -0
- package/dist/transformers/SqlPaginationInjector.js +108 -0
- package/dist/transformers/SqlPaginationInjector.js.map +1 -0
- package/dist/transformers/SqlParamInjector.js +802 -0
- package/dist/transformers/SqlParamInjector.js.map +1 -0
- package/dist/transformers/SqlParameterBinder.js +70 -0
- package/dist/transformers/SqlParameterBinder.js.map +1 -0
- package/dist/transformers/SqlPrinter.js +1478 -0
- package/dist/transformers/SqlPrinter.js.map +1 -0
- package/dist/transformers/SqlSortInjector.js +153 -0
- package/dist/transformers/SqlSortInjector.js.map +1 -0
- package/dist/transformers/TableColumnResolver.js +3 -0
- package/dist/transformers/TableColumnResolver.js.map +1 -0
- package/dist/transformers/TableSourceCollector.js +439 -0
- package/dist/transformers/TableSourceCollector.js.map +1 -0
- package/dist/transformers/TypeTransformationPostProcessor.js +363 -0
- package/dist/transformers/TypeTransformationPostProcessor.js.map +1 -0
- package/dist/transformers/UpdateResultSelectConverter.js +359 -0
- package/dist/transformers/UpdateResultSelectConverter.js.map +1 -0
- package/dist/transformers/UpstreamSelectQueryFinder.js +184 -0
- package/dist/transformers/UpstreamSelectQueryFinder.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/Formatting.js +3 -0
- package/dist/types/Formatting.js.map +1 -0
- package/dist/types/GenericFixture.js +3 -0
- package/dist/types/GenericFixture.js.map +1 -0
- package/dist/utils/CTERegionDetector.js +464 -0
- package/dist/utils/CTERegionDetector.js.map +1 -0
- package/dist/utils/CommentEditor.js +345 -0
- package/dist/utils/CommentEditor.js.map +1 -0
- package/dist/utils/CommentUtils.js +69 -0
- package/dist/utils/CommentUtils.js.map +1 -0
- package/dist/utils/CursorContextAnalyzer.js +338 -0
- package/dist/utils/CursorContextAnalyzer.js.map +1 -0
- package/dist/utils/IntelliSenseApi.js +292 -0
- package/dist/utils/IntelliSenseApi.js.map +1 -0
- package/dist/utils/JsonSchemaValidator.js +215 -0
- package/dist/utils/JsonSchemaValidator.js.map +1 -0
- package/dist/utils/KeywordCache.js +206 -0
- package/dist/utils/KeywordCache.js.map +1 -0
- package/dist/utils/LexemeCursor.js +314 -0
- package/dist/utils/LexemeCursor.js.map +1 -0
- package/dist/utils/MultiQuerySplitter.js +292 -0
- package/dist/utils/MultiQuerySplitter.js.map +1 -0
- package/dist/utils/OperatorPrecedence.js +107 -0
- package/dist/utils/OperatorPrecedence.js.map +1 -0
- package/dist/utils/ParameterDetector.js +53 -0
- package/dist/utils/ParameterDetector.js.map +1 -0
- package/dist/utils/ParameterHelper.js +31 -0
- package/dist/utils/ParameterHelper.js.map +1 -0
- package/dist/utils/ParameterRemover.js +783 -0
- package/dist/utils/ParameterRemover.js.map +1 -0
- package/dist/utils/ParserStringUtils.js +31 -0
- package/dist/utils/ParserStringUtils.js.map +1 -0
- package/dist/utils/PositionAwareParser.js +363 -0
- package/dist/utils/PositionAwareParser.js.map +1 -0
- package/dist/utils/SchemaManager.js +217 -0
- package/dist/utils/SchemaManager.js.map +1 -0
- package/dist/utils/ScopeResolver.js +272 -0
- package/dist/utils/ScopeResolver.js.map +1 -0
- package/dist/utils/SelectQueryWithClauseHelper.js +47 -0
- package/dist/utils/SelectQueryWithClauseHelper.js.map +1 -0
- package/dist/utils/SqlSchemaValidator.js +55 -0
- package/dist/utils/SqlSchemaValidator.js.map +1 -0
- package/dist/utils/TableNameUtils.js +35 -0
- package/dist/utils/TableNameUtils.js.map +1 -0
- package/dist/utils/TextPositionUtils.js +128 -0
- package/dist/utils/TextPositionUtils.js.map +1 -0
- package/dist/utils/ValueComponentRewriter.js +187 -0
- package/dist/utils/ValueComponentRewriter.js.map +1 -0
- package/dist/utils/charLookupTable.js +73 -0
- package/dist/utils/charLookupTable.js.map +1 -0
- package/dist/utils/stringUtils.js +230 -0
- package/dist/utils/stringUtils.js.map +1 -0
- package/package.json +62 -62
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrintLine = exports.LinePrinter = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* SqlPrintHelper provides utility methods for SQL pretty printing.
|
|
6
|
+
*/
|
|
7
|
+
class LinePrinter {
|
|
8
|
+
/**
|
|
9
|
+
* @param indentChar Character used for indentation (default: ' ') // Accepts logical names like 'space'/'tab'
|
|
10
|
+
* @param indentSize Number of indentChar per level (default: 0)
|
|
11
|
+
* @param newline Newline string (default: '\r\n') // Accepts logical names like 'lf'/'crlf'/'cr'
|
|
12
|
+
* @param commaBreak Comma break style (default: 'none')
|
|
13
|
+
*/
|
|
14
|
+
constructor(indentChar = ' ', indentSize = 0, newline = '\r\n', commaBreak = 'none') {
|
|
15
|
+
this.indentChar = indentChar;
|
|
16
|
+
this.indentSize = indentSize;
|
|
17
|
+
this.newline = newline;
|
|
18
|
+
this.commaBreak = commaBreak;
|
|
19
|
+
this.lines = [];
|
|
20
|
+
this.appendNewline(0);
|
|
21
|
+
}
|
|
22
|
+
print() {
|
|
23
|
+
let result = '';
|
|
24
|
+
for (const line of this.lines) {
|
|
25
|
+
if (line.text !== '') {
|
|
26
|
+
// append indent and text
|
|
27
|
+
result += this.indent(line.level) + line.text;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return result.trimEnd();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Returns the indent string for a given level.
|
|
34
|
+
* @param level Indentation level
|
|
35
|
+
*/
|
|
36
|
+
indent(level) {
|
|
37
|
+
return this.indentChar.repeat(this.indentSize * level);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Appends a newline token to the given tokens array if newline is set, or adds an empty line if tokens is empty.
|
|
41
|
+
* @param tokens Array of token objects with 'level' and 'text' property
|
|
42
|
+
* @param level Indentation level
|
|
43
|
+
*/
|
|
44
|
+
appendNewline(level) {
|
|
45
|
+
if (this.lines.length > 0) {
|
|
46
|
+
const current = this.lines[this.lines.length - 1];
|
|
47
|
+
if (current.text !== '') {
|
|
48
|
+
current.text = current.text.trimEnd() + this.newline;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
this.lines.push(new PrintLine(level, ''));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Appends text to the last element of tokens array.
|
|
55
|
+
* @param tokens Array of token objects with 'text' property
|
|
56
|
+
* @param text Text to append
|
|
57
|
+
*/
|
|
58
|
+
appendText(text) {
|
|
59
|
+
// Handle special comma cleanup first
|
|
60
|
+
if (this.cleanupLine(text)) {
|
|
61
|
+
// If cleanup was performed, add comma to previous line
|
|
62
|
+
const previousLine = this.lines[this.lines.length - 1];
|
|
63
|
+
previousLine.text = previousLine.text.trimEnd() + text;
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const workLine = this.getCurrentLine();
|
|
67
|
+
// Leading space is not needed
|
|
68
|
+
if (!(text === ' ' && workLine.text === '')) {
|
|
69
|
+
workLine.text += text;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
trimTrailingWhitespaceFromPreviousLine() {
|
|
73
|
+
if (this.lines.length < 2) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const previousLine = this.lines[this.lines.length - 2];
|
|
77
|
+
const newlineMatch = previousLine.text.match(/(\r?\n)$/);
|
|
78
|
+
const trailingNewline = newlineMatch ? newlineMatch[1] : '';
|
|
79
|
+
const content = trailingNewline
|
|
80
|
+
? previousLine.text.slice(0, -trailingNewline.length)
|
|
81
|
+
: previousLine.text;
|
|
82
|
+
previousLine.text = content.replace(/[ \t]+$/, '') + trailingNewline;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Cleans up the current line for comma formatting.
|
|
86
|
+
* For 'after' and 'none' comma styles, removes empty line when a comma is being added.
|
|
87
|
+
* @param text The text being processed
|
|
88
|
+
* @returns true if cleanup was performed, false otherwise
|
|
89
|
+
*/
|
|
90
|
+
cleanupLine(text) {
|
|
91
|
+
const workLine = this.getCurrentLine();
|
|
92
|
+
if (text === ',' && workLine.text.trim() === '' && this.lines.length > 1 && (this.commaBreak === 'after' || this.commaBreak === 'none')) {
|
|
93
|
+
let previousIndex = this.lines.length - 2;
|
|
94
|
+
while (previousIndex >= 0 && this.lines[previousIndex].text.trim() === '') {
|
|
95
|
+
this.lines.splice(previousIndex, 1);
|
|
96
|
+
previousIndex--;
|
|
97
|
+
}
|
|
98
|
+
if (previousIndex < 0) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
const previousLine = this.lines[previousIndex];
|
|
102
|
+
// Avoid pulling commas onto a line comment to keep the comma executable
|
|
103
|
+
if (this.lineHasTrailingComment(previousLine.text)) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
this.lines.pop(); // Safe: we checked lines.length > 1
|
|
107
|
+
return true; // Cleanup performed
|
|
108
|
+
}
|
|
109
|
+
return false; // No cleanup needed
|
|
110
|
+
}
|
|
111
|
+
lineHasTrailingComment(text) {
|
|
112
|
+
// Strip simple quoted sections so comment markers inside literals are ignored.
|
|
113
|
+
const withoutStrings = text
|
|
114
|
+
.replace(/'([^']|'')*'/g, '')
|
|
115
|
+
.replace(/"([^"]|"")*"/g, '')
|
|
116
|
+
.trim();
|
|
117
|
+
// Treat any remaining '--' as a line comment marker so we never pull commas onto commented lines.
|
|
118
|
+
return withoutStrings.includes('--');
|
|
119
|
+
}
|
|
120
|
+
getCurrentLine() {
|
|
121
|
+
if (this.lines.length > 0) {
|
|
122
|
+
return this.lines[this.lines.length - 1];
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
throw new Error('No tokens to get current line from.');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Checks if the current line is empty (has no text content)
|
|
130
|
+
* @returns true if current line is empty, false otherwise
|
|
131
|
+
*/
|
|
132
|
+
isCurrentLineEmpty() {
|
|
133
|
+
if (this.lines.length > 0) {
|
|
134
|
+
const currentLine = this.lines[this.lines.length - 1];
|
|
135
|
+
return currentLine.text.trim() === '';
|
|
136
|
+
}
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.LinePrinter = LinePrinter;
|
|
141
|
+
class PrintLine {
|
|
142
|
+
constructor(level, text) {
|
|
143
|
+
this.level = level;
|
|
144
|
+
this.text = text;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.PrintLine = PrintLine;
|
|
148
|
+
//# sourceMappingURL=LinePrinter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinePrinter.js","sourceRoot":"","sources":["../../src/transformers/LinePrinter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MergeResultSelectConverter = void 0;
|
|
4
|
+
const Clause_1 = require("../models/Clause");
|
|
5
|
+
const MergeQuery_1 = require("../models/MergeQuery");
|
|
6
|
+
const ValueComponent_1 = require("../models/ValueComponent");
|
|
7
|
+
const SelectQuery_1 = require("../models/SelectQuery");
|
|
8
|
+
const FixtureCteBuilder_1 = require("./FixtureCteBuilder");
|
|
9
|
+
const TableSourceCollector_1 = require("./TableSourceCollector");
|
|
10
|
+
const SelectQueryWithClauseHelper_1 = require("../utils/SelectQueryWithClauseHelper");
|
|
11
|
+
class MergeResultSelectConverter {
|
|
12
|
+
/**
|
|
13
|
+
* Converts a MERGE query into a SELECT that counts or models the rows affected by each action.
|
|
14
|
+
*/
|
|
15
|
+
static toSelectQuery(mergeQuery, options) {
|
|
16
|
+
var _a, _b, _c;
|
|
17
|
+
// Build individual SELECTs for each WHEN clause so the row count can include every affected path.
|
|
18
|
+
const actionSelects = this.buildActionSelects(mergeQuery);
|
|
19
|
+
if (actionSelects.length === 0) {
|
|
20
|
+
throw new Error('MERGE query must include at least one action that affects rows.');
|
|
21
|
+
}
|
|
22
|
+
// Combine the individual action selects into one union so the COUNT(*) can inspect all of them.
|
|
23
|
+
const unionSource = this.combineSelects(actionSelects);
|
|
24
|
+
const derivedSource = new Clause_1.SourceExpression(new Clause_1.SubQuerySource(unionSource), new Clause_1.SourceAliasExpression('__merge_action_rows', null));
|
|
25
|
+
// Wrap the union in a derived table so the outer query can aggregate a single row count.
|
|
26
|
+
const finalSelect = new SelectQuery_1.SimpleSelectQuery({
|
|
27
|
+
selectClause: this.buildCountSelectClause(),
|
|
28
|
+
fromClause: new Clause_1.FromClause(derivedSource, null)
|
|
29
|
+
});
|
|
30
|
+
// Prepare fixture metadata before verifying coverage.
|
|
31
|
+
const fixtureTables = (_a = options === null || options === void 0 ? void 0 : options.fixtureTables) !== null && _a !== void 0 ? _a : [];
|
|
32
|
+
const fixtureMap = this.buildFixtureTableMap(fixtureTables);
|
|
33
|
+
const missingStrategy = (_b = options === null || options === void 0 ? void 0 : options.missingFixtureStrategy) !== null && _b !== void 0 ? _b : this.DEFAULT_MISSING_FIXTURE_STRATEGY;
|
|
34
|
+
const nativeWithClause = (_c = mergeQuery.withClause) !== null && _c !== void 0 ? _c : null;
|
|
35
|
+
const referencedTables = this.collectPhysicalTableReferences(unionSource, nativeWithClause);
|
|
36
|
+
const cteNames = this.collectCteNamesFromWithClause(nativeWithClause);
|
|
37
|
+
const targetName = this.normalizeIdentifier(this.extractTargetTableName(mergeQuery.target));
|
|
38
|
+
if (!cteNames.has(targetName)) {
|
|
39
|
+
referencedTables.add(targetName);
|
|
40
|
+
}
|
|
41
|
+
// Ensure every referenced physical table is backed by a fixture when required.
|
|
42
|
+
this.ensureFixtureCoverage(referencedTables, fixtureMap, missingStrategy);
|
|
43
|
+
// Merge fixture CTEs ahead of any original MERGE WITH clause definitions.
|
|
44
|
+
const filteredFixtures = this.filterFixtureTablesForReferences(fixtureTables, referencedTables);
|
|
45
|
+
const fixtureCtes = this.buildFixtureCtes(filteredFixtures);
|
|
46
|
+
const combinedWithClause = this.mergeWithClause(nativeWithClause, fixtureCtes);
|
|
47
|
+
SelectQueryWithClauseHelper_1.SelectQueryWithClauseHelper.setWithClause(finalSelect, combinedWithClause);
|
|
48
|
+
return finalSelect;
|
|
49
|
+
}
|
|
50
|
+
static buildActionSelects(mergeQuery) {
|
|
51
|
+
const selects = [];
|
|
52
|
+
// Translate each WHEN clause into a row-producing SELECT when it represents an actual change.
|
|
53
|
+
for (const clause of mergeQuery.whenClauses) {
|
|
54
|
+
const selectQuery = this.buildSelectForClause(mergeQuery, clause);
|
|
55
|
+
if (selectQuery) {
|
|
56
|
+
selects.push(selectQuery);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return selects;
|
|
60
|
+
}
|
|
61
|
+
static buildSelectForClause(mergeQuery, clause) {
|
|
62
|
+
switch (clause.matchType) {
|
|
63
|
+
case 'matched':
|
|
64
|
+
return this.buildMatchedSelect(mergeQuery, clause);
|
|
65
|
+
case 'not_matched':
|
|
66
|
+
case 'not_matched_by_target':
|
|
67
|
+
return this.buildNotMatchedSelect(mergeQuery, clause);
|
|
68
|
+
case 'not_matched_by_source':
|
|
69
|
+
return this.buildNotMatchedBySourceSelect(mergeQuery, clause);
|
|
70
|
+
default:
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
static buildMatchedSelect(mergeQuery, clause) {
|
|
75
|
+
const action = clause.action;
|
|
76
|
+
if (action instanceof MergeQuery_1.MergeDoNothingAction) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
if (!(action instanceof MergeQuery_1.MergeUpdateAction) && !(action instanceof MergeQuery_1.MergeDeleteAction)) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
// Match target rows with their source counterparts via the MERGE ON predicate.
|
|
83
|
+
const joinClause = new Clause_1.JoinClause('inner join', mergeQuery.source, new Clause_1.JoinOnClause(mergeQuery.onCondition), false);
|
|
84
|
+
// Apply any additional WHEN/WHERE filters tied to this action.
|
|
85
|
+
const combinedPredicate = this.combineConditions([
|
|
86
|
+
clause.condition,
|
|
87
|
+
this.buildActionWhereClause(action)
|
|
88
|
+
]);
|
|
89
|
+
const whereClause = combinedPredicate ? new Clause_1.WhereClause(combinedPredicate) : null;
|
|
90
|
+
return new SelectQuery_1.SimpleSelectQuery({
|
|
91
|
+
selectClause: this.buildLiteralSelectClause(),
|
|
92
|
+
fromClause: new Clause_1.FromClause(mergeQuery.target, [joinClause]),
|
|
93
|
+
whereClause
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
static buildNotMatchedSelect(mergeQuery, clause) {
|
|
97
|
+
if (!(clause.action instanceof MergeQuery_1.MergeInsertAction)) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
// Select source rows that lack any matching target record using NOT EXISTS semantics.
|
|
101
|
+
const notExistsExpression = this.buildNotExistsExpression(mergeQuery.target, mergeQuery.onCondition);
|
|
102
|
+
const combinedPredicate = this.combineConditions([notExistsExpression, clause.condition]);
|
|
103
|
+
const whereClause = combinedPredicate ? new Clause_1.WhereClause(combinedPredicate) : null;
|
|
104
|
+
return new SelectQuery_1.SimpleSelectQuery({
|
|
105
|
+
selectClause: this.buildLiteralSelectClause(),
|
|
106
|
+
fromClause: new Clause_1.FromClause(mergeQuery.source, null),
|
|
107
|
+
whereClause
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
static buildNotMatchedBySourceSelect(mergeQuery, clause) {
|
|
111
|
+
const action = clause.action;
|
|
112
|
+
if (!(action instanceof MergeQuery_1.MergeDeleteAction)) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
// Select target rows that are orphaned by the source to emulate delete actions.
|
|
116
|
+
const notExistsExpression = this.buildNotExistsExpression(mergeQuery.source, mergeQuery.onCondition);
|
|
117
|
+
const combinedPredicate = this.combineConditions([
|
|
118
|
+
notExistsExpression,
|
|
119
|
+
clause.condition,
|
|
120
|
+
this.buildActionWhereClause(action)
|
|
121
|
+
]);
|
|
122
|
+
const whereClause = combinedPredicate ? new Clause_1.WhereClause(combinedPredicate) : null;
|
|
123
|
+
return new SelectQuery_1.SimpleSelectQuery({
|
|
124
|
+
selectClause: this.buildLiteralSelectClause(),
|
|
125
|
+
fromClause: new Clause_1.FromClause(mergeQuery.target, null),
|
|
126
|
+
whereClause
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
static buildNotExistsExpression(sourceReference, predicate) {
|
|
130
|
+
// Build an EXISTS subquery that can be negated to detect missing matches.
|
|
131
|
+
const existsSelect = new SelectQuery_1.SimpleSelectQuery({
|
|
132
|
+
selectClause: this.buildLiteralSelectClause(),
|
|
133
|
+
fromClause: new Clause_1.FromClause(sourceReference, null),
|
|
134
|
+
whereClause: new Clause_1.WhereClause(predicate)
|
|
135
|
+
});
|
|
136
|
+
const existsExpression = new ValueComponent_1.UnaryExpression('exists', new ValueComponent_1.InlineQuery(existsSelect));
|
|
137
|
+
return new ValueComponent_1.UnaryExpression('not', existsExpression);
|
|
138
|
+
}
|
|
139
|
+
static buildActionWhereClause(action) {
|
|
140
|
+
var _a, _b;
|
|
141
|
+
return (_b = (_a = action.whereClause) === null || _a === void 0 ? void 0 : _a.condition) !== null && _b !== void 0 ? _b : null;
|
|
142
|
+
}
|
|
143
|
+
// Combine additional predicates into a single AND expression for filtering.
|
|
144
|
+
static combineConditions(predicates) {
|
|
145
|
+
const values = predicates.filter((predicate) => Boolean(predicate));
|
|
146
|
+
if (values.length === 0) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
return values.reduce((acc, value) => {
|
|
150
|
+
if (!acc) {
|
|
151
|
+
return value;
|
|
152
|
+
}
|
|
153
|
+
return new ValueComponent_1.BinaryExpression(acc, 'and', value);
|
|
154
|
+
}, null);
|
|
155
|
+
}
|
|
156
|
+
// Combine all action queries via UNION ALL so the count can see every simulated row.
|
|
157
|
+
static combineSelects(selects) {
|
|
158
|
+
if (selects.length === 1) {
|
|
159
|
+
return selects[0];
|
|
160
|
+
}
|
|
161
|
+
let combined = new SelectQuery_1.BinarySelectQuery(selects[0], 'union all', selects[1]);
|
|
162
|
+
for (let i = 2; i < selects.length; i++) {
|
|
163
|
+
combined = combined.unionAll(selects[i]);
|
|
164
|
+
}
|
|
165
|
+
return combined;
|
|
166
|
+
}
|
|
167
|
+
// Build the simple SELECT clause that yields one row per matched action.
|
|
168
|
+
static buildLiteralSelectClause() {
|
|
169
|
+
return new Clause_1.SelectClause([new Clause_1.SelectItem(new ValueComponent_1.LiteralValue(1))]);
|
|
170
|
+
}
|
|
171
|
+
// Summarize the merged action stream by counting every row that survived the union.
|
|
172
|
+
static buildCountSelectClause() {
|
|
173
|
+
const countFunction = new ValueComponent_1.FunctionCall(null, 'count', new ValueComponent_1.RawString('*'), null);
|
|
174
|
+
const selectItem = new Clause_1.SelectItem(countFunction, 'count');
|
|
175
|
+
return new Clause_1.SelectClause([selectItem]);
|
|
176
|
+
}
|
|
177
|
+
static buildFixtureCtes(fixtures) {
|
|
178
|
+
if (!fixtures || fixtures.length === 0) {
|
|
179
|
+
return [];
|
|
180
|
+
}
|
|
181
|
+
return FixtureCteBuilder_1.FixtureCteBuilder.buildFixtures(fixtures);
|
|
182
|
+
}
|
|
183
|
+
static collectPhysicalTableReferences(query, withClause) {
|
|
184
|
+
const referencedTables = this.collectReferencedTables(query);
|
|
185
|
+
const ignoredTables = this.collectCteNamesFromWithClause(withClause);
|
|
186
|
+
const tablesToShadow = new Set();
|
|
187
|
+
// Retain only tables that are not defined via WITH clauses so fixtures shadow physical sources.
|
|
188
|
+
for (const table of referencedTables) {
|
|
189
|
+
if (ignoredTables.has(table)) {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
tablesToShadow.add(table);
|
|
193
|
+
}
|
|
194
|
+
const cteReferencedTables = this.collectReferencedTablesFromWithClause(withClause);
|
|
195
|
+
for (const table of cteReferencedTables) {
|
|
196
|
+
if (ignoredTables.has(table)) {
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
tablesToShadow.add(table);
|
|
200
|
+
}
|
|
201
|
+
return tablesToShadow;
|
|
202
|
+
}
|
|
203
|
+
static filterFixtureTablesForReferences(fixtures, referencedTables) {
|
|
204
|
+
if (!fixtures.length || referencedTables.size === 0) {
|
|
205
|
+
return [];
|
|
206
|
+
}
|
|
207
|
+
const filtered = [];
|
|
208
|
+
// Keep fixtures only for tables that actually appear in the converted SELECT.
|
|
209
|
+
for (const fixture of fixtures) {
|
|
210
|
+
if (referencedTables.has(this.normalizeIdentifier(fixture.tableName))) {
|
|
211
|
+
filtered.push(fixture);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return filtered;
|
|
215
|
+
}
|
|
216
|
+
static collectReferencedTablesFromWithClause(withClause) {
|
|
217
|
+
const tables = new Set();
|
|
218
|
+
if (!(withClause === null || withClause === void 0 ? void 0 : withClause.tables)) {
|
|
219
|
+
return tables;
|
|
220
|
+
}
|
|
221
|
+
for (const cte of withClause.tables) {
|
|
222
|
+
for (const table of this.collectReferencedTables(cte.query)) {
|
|
223
|
+
tables.add(table);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return tables;
|
|
227
|
+
}
|
|
228
|
+
static extractTargetTableName(target) {
|
|
229
|
+
const datasource = target.datasource;
|
|
230
|
+
if (datasource instanceof Clause_1.TableSource) {
|
|
231
|
+
return datasource.getSourceName();
|
|
232
|
+
}
|
|
233
|
+
throw new Error('Merge target must be a table source for conversion.');
|
|
234
|
+
}
|
|
235
|
+
static buildFixtureTableMap(fixtures) {
|
|
236
|
+
const map = new Map();
|
|
237
|
+
for (const fixture of fixtures) {
|
|
238
|
+
map.set(this.normalizeIdentifier(fixture.tableName), fixture);
|
|
239
|
+
}
|
|
240
|
+
return map;
|
|
241
|
+
}
|
|
242
|
+
static ensureFixtureCoverage(referencedTables, fixtureMap, strategy) {
|
|
243
|
+
if (referencedTables.size === 0) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
// Compare the referenced tables against the fixtures that were supplied.
|
|
247
|
+
const missingTables = this.getMissingFixtureTables(referencedTables, fixtureMap);
|
|
248
|
+
if (missingTables.length === 0) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
if (strategy === 'error') {
|
|
252
|
+
throw new Error(`Merge SELECT refers to tables without fixture coverage: ${missingTables.join(', ')}.`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// Use the collector to track every concrete table source referenced by the SELECT.
|
|
256
|
+
static collectReferencedTables(query) {
|
|
257
|
+
const collector = new TableSourceCollector_1.TableSourceCollector(false);
|
|
258
|
+
const sources = collector.collect(query);
|
|
259
|
+
const normalized = new Set();
|
|
260
|
+
for (const source of sources) {
|
|
261
|
+
normalized.add(this.normalizeIdentifier(source.getSourceName()));
|
|
262
|
+
}
|
|
263
|
+
return normalized;
|
|
264
|
+
}
|
|
265
|
+
// Track CTE aliases so those names are ignored when validating fixtures.
|
|
266
|
+
static collectCteNamesFromWithClause(withClause) {
|
|
267
|
+
const names = new Set();
|
|
268
|
+
if (!(withClause === null || withClause === void 0 ? void 0 : withClause.tables)) {
|
|
269
|
+
return names;
|
|
270
|
+
}
|
|
271
|
+
for (const table of withClause.tables) {
|
|
272
|
+
names.add(this.normalizeIdentifier(table.getSourceAliasName()));
|
|
273
|
+
}
|
|
274
|
+
return names;
|
|
275
|
+
}
|
|
276
|
+
// Return every referenced table that lacks an overriding fixture definition.
|
|
277
|
+
static getMissingFixtureTables(referencedTables, fixtureMap) {
|
|
278
|
+
const missing = [];
|
|
279
|
+
for (const table of referencedTables) {
|
|
280
|
+
if (!fixtureMap.has(table)) {
|
|
281
|
+
missing.push(table);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return missing;
|
|
285
|
+
}
|
|
286
|
+
// Prepend fixture CTEs ahead of the existing WITH clause so they shadow real tables.
|
|
287
|
+
static mergeWithClause(original, fixtureCtes) {
|
|
288
|
+
var _a;
|
|
289
|
+
if (!fixtureCtes.length && !original) {
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
const combinedTables = [...fixtureCtes];
|
|
293
|
+
if (original === null || original === void 0 ? void 0 : original.tables) {
|
|
294
|
+
combinedTables.push(...original.tables);
|
|
295
|
+
}
|
|
296
|
+
if (!combinedTables.length) {
|
|
297
|
+
return null;
|
|
298
|
+
}
|
|
299
|
+
const merged = new Clause_1.WithClause((_a = original === null || original === void 0 ? void 0 : original.recursive) !== null && _a !== void 0 ? _a : false, combinedTables);
|
|
300
|
+
merged.globalComments = (original === null || original === void 0 ? void 0 : original.globalComments) ? [...original.globalComments] : null;
|
|
301
|
+
merged.trailingComments = (original === null || original === void 0 ? void 0 : original.trailingComments) ? [...original.trailingComments] : null;
|
|
302
|
+
return merged;
|
|
303
|
+
}
|
|
304
|
+
static normalizeIdentifier(value) {
|
|
305
|
+
return value.trim().toLowerCase();
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
exports.MergeResultSelectConverter = MergeResultSelectConverter;
|
|
309
|
+
MergeResultSelectConverter.DEFAULT_MISSING_FIXTURE_STRATEGY = 'error';
|
|
310
|
+
//# sourceMappingURL=MergeResultSelectConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MergeResultSelectConverter.js","sourceRoot":"","sources":["../../src/transformers/MergeResultSelectConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Model-driven JSON mapping structure that mirrors TypeScript model definitions.
|
|
4
|
+
* This approach provides intuitive, hierarchical mapping that closely resembles the target data structure.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.convertModelDrivenMapping = convertModelDrivenMapping;
|
|
8
|
+
exports.validateModelDrivenMapping = validateModelDrivenMapping;
|
|
9
|
+
/**
|
|
10
|
+
* Convert a model-driven JSON mapping to the traditional JsonMapping format.
|
|
11
|
+
* This enables backward compatibility with existing PostgresJsonQueryBuilder.
|
|
12
|
+
*/
|
|
13
|
+
function convertModelDrivenMapping(modelMapping) {
|
|
14
|
+
const protectedStringFields = [];
|
|
15
|
+
let entityIdCounter = 0;
|
|
16
|
+
const propertyNameCounters = {};
|
|
17
|
+
// Generate unique entity IDs
|
|
18
|
+
const generateEntityId = () => `entity_${++entityIdCounter}`;
|
|
19
|
+
// Generate unique property names to avoid JSON key conflicts
|
|
20
|
+
const generateUniquePropertyName = (baseName) => {
|
|
21
|
+
if (!propertyNameCounters[baseName]) {
|
|
22
|
+
propertyNameCounters[baseName] = 0;
|
|
23
|
+
}
|
|
24
|
+
propertyNameCounters[baseName]++;
|
|
25
|
+
return propertyNameCounters[baseName] === 1 ? baseName : `${baseName}_${propertyNameCounters[baseName]}`;
|
|
26
|
+
};
|
|
27
|
+
// Helper function to process structure fields and extract entities
|
|
28
|
+
const processStructure = (structure, parentId = null) => {
|
|
29
|
+
const columns = {};
|
|
30
|
+
const nestedEntities = [];
|
|
31
|
+
for (const [fieldName, config] of Object.entries(structure)) {
|
|
32
|
+
if (typeof config === 'string') {
|
|
33
|
+
// Simple field mapping: "fieldName": "column_name"
|
|
34
|
+
columns[fieldName] = config;
|
|
35
|
+
}
|
|
36
|
+
else if ('column' in config && typeof config.column === 'string' && !('type' in config && (config.type === 'object' || config.type === 'array'))) {
|
|
37
|
+
// Enhanced field mapping: "fieldName": { "column": "column_name", "type": "string" }
|
|
38
|
+
const fieldConfig = config;
|
|
39
|
+
if (typeof fieldConfig === 'object' && 'column' in fieldConfig) {
|
|
40
|
+
columns[fieldName] = fieldConfig.column;
|
|
41
|
+
if (fieldConfig.type === 'string') {
|
|
42
|
+
protectedStringFields.push(fieldConfig.column);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if ('from' in config && typeof config.from === 'string' && !('type' in config && (config.type === 'object' || config.type === 'array'))) {
|
|
47
|
+
// Legacy field mapping: "fieldName": { "from": "column_name", "type": "string" }
|
|
48
|
+
const fieldConfig = config;
|
|
49
|
+
if (typeof fieldConfig === 'object' && 'from' in fieldConfig) {
|
|
50
|
+
columns[fieldName] = fieldConfig.from;
|
|
51
|
+
if (fieldConfig.type === 'string') {
|
|
52
|
+
protectedStringFields.push(fieldConfig.from);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else if ('type' in config && (config.type === 'object' || config.type === 'array')) {
|
|
57
|
+
// Nested structure: object or array
|
|
58
|
+
const nestedStructure = config;
|
|
59
|
+
const uniquePropertyName = generateUniquePropertyName(fieldName);
|
|
60
|
+
// Generate globally unique entity ID to ensure unique JSON column names
|
|
61
|
+
const entityId = generateEntityId();
|
|
62
|
+
const processedNested = processStructure(nestedStructure.structure, entityId);
|
|
63
|
+
nestedEntities.push({
|
|
64
|
+
id: entityId, // Use unique ID to avoid column conflicts
|
|
65
|
+
name: fieldName.charAt(0).toUpperCase() + fieldName.slice(1), // Capitalize first letter
|
|
66
|
+
parentId: parentId || 'root',
|
|
67
|
+
propertyName: uniquePropertyName,
|
|
68
|
+
originalPropertyName: fieldName, // Store original name for final mapping
|
|
69
|
+
relationshipType: nestedStructure.type,
|
|
70
|
+
columns: processedNested.columns
|
|
71
|
+
});
|
|
72
|
+
// Add nested entities from deeper levels
|
|
73
|
+
nestedEntities.push(...processedNested.nestedEntities.map(entity => ({
|
|
74
|
+
...entity,
|
|
75
|
+
parentId: entity.parentId === 'root' ? entityId : entity.parentId
|
|
76
|
+
})));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return { columns, nestedEntities };
|
|
80
|
+
};
|
|
81
|
+
// Process the root structure
|
|
82
|
+
const processed = processStructure(modelMapping.structure); // Build the traditional JsonMapping
|
|
83
|
+
const jsonMapping = {
|
|
84
|
+
rootName: 'root', // Default root name
|
|
85
|
+
rootEntity: {
|
|
86
|
+
id: 'root',
|
|
87
|
+
name: 'Root',
|
|
88
|
+
columns: processed.columns
|
|
89
|
+
},
|
|
90
|
+
nestedEntities: processed.nestedEntities
|
|
91
|
+
};
|
|
92
|
+
// Add typeInfo for backward compatibility
|
|
93
|
+
jsonMapping.typeInfo = modelMapping.typeInfo;
|
|
94
|
+
return {
|
|
95
|
+
jsonMapping,
|
|
96
|
+
typeProtection: { protectedStringFields }
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Validate that a model-driven mapping structure is well-formed.
|
|
101
|
+
*/
|
|
102
|
+
function validateModelDrivenMapping(mapping) {
|
|
103
|
+
const errors = [];
|
|
104
|
+
// Validate typeInfo
|
|
105
|
+
if (!mapping.typeInfo) {
|
|
106
|
+
errors.push('typeInfo is required');
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
if (!mapping.typeInfo.interface) {
|
|
110
|
+
errors.push('typeInfo.interface is required');
|
|
111
|
+
}
|
|
112
|
+
if (!mapping.typeInfo.importPath) {
|
|
113
|
+
errors.push('typeInfo.importPath is required');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Validate structure
|
|
117
|
+
if (!mapping.structure || typeof mapping.structure !== 'object') {
|
|
118
|
+
errors.push('structure is required and must be an object');
|
|
119
|
+
}
|
|
120
|
+
return errors;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=ModelDrivenJsonMapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelDrivenJsonMapping.js","sourceRoot":"","sources":["../../src/transformers/ModelDrivenJsonMapping.ts"],"names":[],"mappings":"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"}
|