UNPKG

ddl-manager

Version:

store postgres procedures and triggers in files

54 lines 2.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SelfUpdateBySelfRowTriggerBuilder = void 0; const AbstractTriggerBuilder_1 = require("./AbstractTriggerBuilder"); const buildSelfUpdateBySelfRowBody_1 = require("./body/buildSelfUpdateBySelfRowBody"); const buildSelfAssignBeforeInsertSelfColumnBody_1 = require("./body/buildSelfAssignBeforeInsertSelfColumnBody"); class SelfUpdateBySelfRowTriggerBuilder extends AbstractTriggerBuilder_1.AbstractTriggerBuilder { createTriggers() { return [ ...this.createOnUpdateTriggers(), ...this.createOnInsertTriggers() ]; } createOnUpdateTriggers() { const updateOfColumns = this.buildUpdateOfColumns(); if (updateOfColumns.length === 0) { return []; } const selects = this.context.groupBySelectsForUpdateByLevel(); return selects.map(select => { const triggerName = this.context.generateOrderedTriggerName(select.columns, "bef_upd"); return { trigger: this.createDatabaseTrigger({ name: triggerName, before: true, update: true, updateOf: this.buildUpdateOfColumns() }), procedure: this.createDatabaseFunction(buildSelfUpdateBySelfRowBody_1.buildSelfUpdateBySelfRowBody(this.conditions.noChanges(), this.buildSelectValues()), triggerName) }; }); } createOnInsertTriggers() { const selects = this.context.groupBySelectsForUpdateByLevel(); return selects.map(select => { const triggerName = this.context.generateOrderedTriggerName(select.columns, "bef_ins"); return { trigger: this.createDatabaseTrigger({ name: triggerName, before: true, insert: true, }), procedure: this.createDatabaseFunction(buildSelfAssignBeforeInsertSelfColumnBody_1.buildSelfAssignBeforeInsertSelfColumnBody(select.columns), triggerName) }; }); } buildSelectValues() { const columns = this.context.createSelectForUpdateNewRow().columns; return columns.sort((columnA, columnB) => this.context.getDependencyLevel(columnA.name) - this.context.getDependencyLevel(columnB.name)); } } exports.SelfUpdateBySelfRowTriggerBuilder = SelfUpdateBySelfRowTriggerBuilder; //# sourceMappingURL=SelfUpdateBySelfRowTriggerBuilder.js.map