ddl-manager
Version:
store postgres procedures and triggers in files
36 lines • 1.44 kB
JavaScript
;
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