UNPKG

ddl-manager

Version:

store postgres procedures and triggers in files

111 lines 3.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CaseWhen = void 0; const AbstractExpressionElement_1 = require("./AbstractExpressionElement"); const lodash_1 = require("lodash"); class CaseWhen extends AbstractExpressionElement_1.AbstractExpressionElement { constructor(params) { super(); this.cases = params.cases; this.else = params.else; } children() { const children = []; for (const caseElem of this.cases) { children.push(...caseElem.when.children()); children.push(...caseElem.then.children()); } if (this.else) { children.push(...this.else.children()); } return children; } clone(changes = {}) { return new CaseWhen({ cases: changes.cases || this.cloneCases(), else: ("else" in changes ? changes.else : this.cloneElse()) }); } replaceTable(replaceTable, toTable) { const changes = {}; changes.cases = this.cases.map(caseElem => { const newWhen = caseElem.when.replaceTable(replaceTable, toTable); const newThen = caseElem.then.replaceTable(replaceTable, toTable); return { when: newWhen, then: newThen }; }); if (this.else) { changes.else = this.else.replaceTable(replaceTable, toTable); } return this.clone(changes); } replaceColumn(replaceColumn, toSql) { const changes = {}; changes.cases = this.cases.map(caseElem => { const newWhen = caseElem.when.replaceColumn(replaceColumn, toSql); const newThen = caseElem.then.replaceColumn(replaceColumn, toSql); return { when: newWhen, then: newThen }; }); if (this.else) { changes.else = this.else.replaceColumn(replaceColumn, toSql); } return this.clone(changes); } replaceFuncCall(replaceFunc, toSql) { const changes = {}; changes.cases = this.cases.map(caseElem => { const newWhen = caseElem.when.replaceFuncCall(replaceFunc, toSql); const newThen = caseElem.then.replaceFuncCall(replaceFunc, toSql); return { when: newWhen, then: newThen }; }); if (this.else) { changes.else = this.else.replaceFuncCall(replaceFunc, toSql); } return this.clone(changes); } cloneElse() { if (this.else) { return this.else.clone(); } } cloneCases() { return this.cases.map(someCase => ({ when: someCase.when.clone(), then: someCase.then.clone() })); } template(spaces) { return [ spaces + "case", ...lodash_1.flatMap(this.cases, someCase => this.printCase(someCase, spaces)), ...this.printElse(spaces), spaces + "end" ]; } printCase(someCase, spaces) { return [ spaces.plusOneLevel() + "when", someCase.when.toSQL(spaces .plusOneLevel() .plusOneLevel()), spaces.plusOneLevel() + "then", someCase.then.toSQL(spaces .plusOneLevel() .plusOneLevel()) ]; } printElse(spaces) { if (!this.else) { return []; } return [ spaces.plusOneLevel() + "else", ...this.else.template(spaces .plusOneLevel() .plusOneLevel()) ]; } } exports.CaseWhen = CaseWhen; //# sourceMappingURL=CaseWhen.js.map