UNPKG

rawsql-ts

Version:

High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.

32 lines 1.43 kB
import { SimpleSelectQuery } from '../models/SimpleSelectQuery'; import { FixtureCteBuilder } from './FixtureCteBuilder'; import { TableSourceCollector } from './TableSourceCollector'; export class SelectResultSelectConverter { static toSelectQuery(query, options) { var _a; const fixtureTables = (_a = options === null || options === void 0 ? void 0 : options.fixtureTables) !== null && _a !== void 0 ? _a : []; if (fixtureTables.length === 0) { return query; } const collector = new TableSourceCollector(false); const sources = collector.collect(query); const referencedTables = new Set(); sources.forEach(s => referencedTables.add(s.getSourceName().toLowerCase())); const neededFixtures = fixtureTables.filter(f => referencedTables.has(f.tableName.toLowerCase())); if (neededFixtures.length === 0) { return query; } const fixtureCtes = FixtureCteBuilder.buildFixtures(neededFixtures); if (query instanceof SimpleSelectQuery) { if (!query.withClause) { query.appendWith(fixtureCtes); } else { // Prepend fixtures to existing CTEs query.withClause.tables = [...fixtureCtes, ...query.withClause.tables]; } } return query; } } //# sourceMappingURL=SelectResultSelectConverter.js.map