UNPKG

ddl-manager

Version:

store postgres procedures and triggers in files

56 lines 2.19 kB
"use strict"; 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