ddl-manager
Version:
store postgres procedures and triggers in files
39 lines • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.findNecessaryTableMatrix = void 0;
const findMinimalRoute_1 = require("./findMinimalRoute");
const buildConditionsMatrix_1 = require("./buildConditionsMatrix");
function findNecessaryTableMatrix(context) {
const conditionsMatrix = buildConditionsMatrix_1.buildConditionsMatrix(context.cache);
const linksToChangedTable = context.getTableReferencesToTriggerTable();
const necessaryTableMatrix = [];
for (const andConditions of conditionsMatrix) {
const necessaryTableAliases = [];
const graph = andConditions.map(condition => {
const points = condition.getColumnReferences()
.map(columnRef => columnRef.tableReference.getIdentifier());
return points;
});
for (const changedTableInSelect of linksToChangedTable) {
const minimalRoute = findMinimalRoute_1.findMinimalRoute({
graph,
start: changedTableInSelect.getIdentifier(),
end: context.cache.for.getIdentifier()
});
if (!minimalRoute) {
continue;
}
const middlePoints = minimalRoute.slice(1, -1);
for (const middlePoint of middlePoints) {
if (necessaryTableAliases.includes(middlePoint)) {
continue;
}
necessaryTableAliases.push(middlePoint);
}
}
necessaryTableMatrix.push(necessaryTableAliases);
}
return necessaryTableMatrix;
}
exports.findNecessaryTableMatrix = findNecessaryTableMatrix;
//# sourceMappingURL=findNecessaryTableMatrix.js.map