ddl-manager
Version:
store postgres procedures and triggers in files
37 lines (30 loc) • 1.15 kB
text/typescript
import { buildUniversalBody } from "./body/buildUniversalBody";
import { AbstractTriggerBuilder } from "./AbstractTriggerBuilder";
import { buildFrom } from "../processor/buildFrom";
import { buildUniversalWhere } from "../processor/buildUniversalWhere";
export class UniversalTriggerBuilder extends AbstractTriggerBuilder {
createTriggers() {
return [{
trigger: this.createDatabaseTriggerOnDIU(),
procedure: this.createDatabaseFunction(
this.createBody()
)
}];
}
protected createBody() {
const from = buildFrom(this.context);
const where = buildUniversalWhere(this.context);
const select = this.context.createSelectForUpdate();
const universalBody = buildUniversalBody({
triggerTable: this.context.triggerTable,
forTable: this.context.cache.for.toString(),
updateColumns: select.columns
.map(col => col.name),
select,
from,
where,
triggerTableColumns: this.context.triggerTableColumns
});
return universalBody;
}
}