UNPKG

rawsql-ts

Version:

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

36 lines 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SelectResultSelectConverter = void 0; const SimpleSelectQuery_1 = require("../models/SimpleSelectQuery"); const FixtureCteBuilder_1 = require("./FixtureCteBuilder"); const TableSourceCollector_1 = require("./TableSourceCollector"); 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_1.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_1.FixtureCteBuilder.buildFixtures(neededFixtures); if (query instanceof SimpleSelectQuery_1.SimpleSelectQuery) { if (!query.withClause) { query.appendWith(fixtureCtes); } else { // Prepend fixtures to existing CTEs query.withClause.tables = [...fixtureCtes, ...query.withClause.tables]; } } return query; } } exports.SelectResultSelectConverter = SelectResultSelectConverter; //# sourceMappingURL=SelectResultSelectConverter.js.map