UNPKG

@abaplint/core

Version:
24 lines 2.02 kB
"use strict"; 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