UNPKG

ddl-manager

Version:

store postgres procedures and triggers in files

36 lines 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UnknownExpressionElementParser = void 0; const psql_lang_1 = require("psql-lang"); const ColumnReferenceParser_1 = require("./ColumnReferenceParser"); const ast_1 = require("../ast"); const lodash_1 = require("lodash"); class UnknownExpressionElementParser { constructor() { this.columnReferenceParser = new ColumnReferenceParser_1.ColumnReferenceParser(); } parse(syntax) { const columnsMap = this.buildColumnsMap(syntax); return new ast_1.UnknownExpressionElement(syntax, columnsMap); } buildColumnsMap(syntax) { const syntaxes = (Array.isArray(syntax) ? syntax : [syntax]); const columnsMap = {}; const columnLinks = lodash_1.flatMap(syntaxes, scanColumnLinks); columnLinks.forEach(columnLink => { const columnReference = this.columnReferenceParser.parse(columnLink); columnsMap[columnLink.toString()] = columnReference; }); return columnsMap; } } exports.UnknownExpressionElementParser = UnknownExpressionElementParser; function scanColumnLinks(syntax) { const columnLinks = syntax.filterChildrenByInstance(psql_lang_1.ColumnReference); if (syntax instanceof psql_lang_1.ColumnReference) { columnLinks.push(syntax); } return columnLinks; } //# sourceMappingURL=UnknownExpressionElementParser.js.map