ddl-manager
Version:
store postgres procedures and triggers in files
41 lines • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.reassignVariables = void 0;
const ast_1 = require("../../../../ast");
const assignCombinedJoinVariables_1 = require("./assignCombinedJoinVariables");
const groupJoinsByTableAndFilter_1 = require("./groupJoinsByTableAndFilter");
const replaceTableToVariableOrRow_1 = require("./replaceTableToVariableOrRow");
function reassignVariables(newJoins, oldJoins) {
const lines = [];
const oldCombinedJoins = groupJoinsByTableAndFilter_1.groupJoinsByTableAndFilter(oldJoins);
const newCombinedJoins = groupJoinsByTableAndFilter_1.groupJoinsByTableAndFilter(newJoins);
for (let i = 0, n = newCombinedJoins.length; i < n; i++) {
const newCombinedJoin = newCombinedJoins[i];
const oldCombinedJoin = oldCombinedJoins[i];
const newByColumn = replaceTableToVariableOrRow_1.replaceTableToVariableOrRow(newCombinedJoin.byColumn, newJoins, "new");
const oldByColumn = replaceTableToVariableOrRow_1.replaceTableToVariableOrRow(oldCombinedJoin.byColumn, oldJoins, "old");
lines.push(new ast_1.If({
if: ast_1.Expression.and([
newByColumn + " is not distinct from " + oldByColumn
]),
then: newCombinedJoin.variables.map((newVarName, j) => new ast_1.AssignVariable({
variable: newVarName,
value: new ast_1.HardCode({
sql: oldCombinedJoin.variables[j]
})
})),
else: [
new ast_1.If({
if: ast_1.Expression.and([
`${newByColumn} is not null`
]),
then: assignCombinedJoinVariables_1.assignCombinedJoinVariables(newCombinedJoin, newJoins, "new")
})
]
}));
lines.push(new ast_1.BlankLine());
}
return lines;
}
exports.reassignVariables = reassignVariables;
//# sourceMappingURL=reassignVariables.js.map