UNPKG

@abaplint/core

Version:
19 lines 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CDSJoin = void 0; const _1 = require("."); const combi_1 = require("../../abap/2_statements/combi"); const cds_condition_1 = require("./cds_condition"); class CDSJoin extends combi_1.Expression { getRunnable() { const joinTypes = (0, combi_1.optPrio)((0, combi_1.altPrio)("LEFT OUTER MANY TO EXACT ONE", "LEFT OUTER ONE TO EXACT ONE", "LEFT OUTER ONE TO MANY", "LEFT OUTER TO ONE", "LEFT OUTER TO MANY", "LEFT OUTER", "INNER ONE TO MANY", "INNER MANY TO ONE", "INNER ONE TO EXACT ONE", "INNER MANY TO EXACT ONE", "INNER TO MANY", "INNER TO ONE", "INNER TO EXACT ONE", "INNER", "CROSS", "RIGHT OUTER")); const cond = (0, combi_1.seq)(_1.CDSSource, "ON", cds_condition_1.CDSCondition); const foo = (0, combi_1.altPrio)((0, combi_1.seq)("(", cond, ")"), cond); // Parenthesized join sub-expression: JOIN (src innerJOIN src ON cond) ON outerCond const innerJoin = (0, combi_1.seq)(joinTypes, "JOIN", (0, combi_1.altPrio)((0, combi_1.seq)("(", cond, ")"), cond)); const parenJoinChain = (0, combi_1.seq)("(", _1.CDSSource, (0, combi_1.star)(innerJoin), ")", "ON", cds_condition_1.CDSCondition); return (0, combi_1.seq)(joinTypes, "JOIN", (0, combi_1.altPrio)(parenJoinChain, foo, _1.CDSSource)); } } exports.CDSJoin = CDSJoin; //# sourceMappingURL=cds_join.js.map