@abaplint/core
Version:
abaplint - Core API
24 lines • 2.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeleteInternal = void 0;
const combi_1 = require("../combi");
const expressions_1 = require("../expressions");
class DeleteInternal {
getMatcher() {
// todo, is READ and DELETE similar? something can be reused?
const index = (0, combi_1.seq)("INDEX", expressions_1.Source);
const keyName = (0, combi_1.altPrio)(expressions_1.SimpleName, expressions_1.Dynamic);
const using = (0, combi_1.seq)("USING KEY", keyName);
const from = (0, combi_1.seq)("FROM", expressions_1.Source);
const fromTo = (0, combi_1.seq)((0, combi_1.optPrio)(from), (0, combi_1.optPrio)((0, combi_1.seq)("TO", expressions_1.Source)));
const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, expressions_1.Dynamic));
const key = (0, combi_1.seq)("WITH TABLE KEY", (0, combi_1.opt)((0, combi_1.seq)(keyName, "COMPONENTS")), (0, combi_1.plus)(expressions_1.ComponentCompare));
const table = (0, combi_1.seq)("TABLE", expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), (0, combi_1.seq)((0, combi_1.optPrio)(from), (0, combi_1.optPrio)(using)), key));
const other = (0, combi_1.seq)(expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), fromTo, key), (0, combi_1.opt)(where));
const f = (0, combi_1.seq)(expressions_1.SimpleFieldChain2, (0, combi_1.optPrio)(expressions_1.FieldOffset), (0, combi_1.optPrio)(expressions_1.FieldLength));
const adjacent = (0, combi_1.seq)("ADJACENT DUPLICATES FROM", expressions_1.Target, (0, combi_1.optPrio)(using), (0, combi_1.opt)((0, combi_1.seq)("COMPARING", (0, combi_1.altPrio)("ALL FIELDS", (0, combi_1.plus)((0, combi_1.altPrio)(f, expressions_1.Dynamic))))), (0, combi_1.optPrio)(using));
return (0, combi_1.seq)("DELETE", (0, combi_1.alt)(table, adjacent, other));
}
}
exports.DeleteInternal = DeleteInternal;
//# sourceMappingURL=delete_internal.js.map