ddl-manager
Version:
store postgres procedures and triggers in files
56 lines • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FunctionsComparator = void 0;
const AbstractComparator_1 = require("./AbstractComparator");
class FunctionsComparator extends AbstractComparator_1.AbstractComparator {
constructor(driver, database, fs, migration, allCacheTriggers) {
super(driver, database, fs, migration);
this.allCacheTriggers = allCacheTriggers;
}
drop() {
for (const dbFunc of this.database.functions) {
// ddl-manager cannot drop frozen function
if (dbFunc.comment.frozen) {
continue;
}
const existsSameFuncFromFile = this.getFsFunctions(dbFunc.name).some(fileFunc => fileFunc.equal(dbFunc));
if (!existsSameFuncFromFile) {
this.migration.drop({
functions: [dbFunc]
});
}
}
}
create() {
for (const file of this.fs.files) {
this.createNewFunctions(file.content.functions);
}
const cacheFunctions = this.allCacheTriggers.map(item => item.function);
this.createNewFunctions(cacheFunctions);
}
createLogFuncs() {
this.migration.create({
functions: [
...this.fs.allFunctions(),
...this.allCacheTriggers.map(item => item.function)
]
});
}
createNewFunctions(functions) {
for (const fsFunc of functions) {
const existsSameFuncFromDb = this.database.getFunctions(fsFunc.name).some(dbFunc => dbFunc.equal(fsFunc));
if (!existsSameFuncFromDb) {
this.migration.create({
functions: [fsFunc]
});
}
}
}
getFsFunctions(funcName) {
const sameNameFsFunctions = this.fs.getFunctionsByName(funcName);
const sameNameCacheFunctions = this.allCacheTriggers.filter(item => item.function.name === funcName).map(item => item.function);
return [...sameNameCacheFunctions, ...sameNameFsFunctions];
}
}
exports.FunctionsComparator = FunctionsComparator;
//# sourceMappingURL=FunctionsComparator.js.map