All files / src/cds/expressions cds_define_abstract.ts

100% Statements 15/15
100% Branches 1/1
100% Functions 1/1
100% Lines 15/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161x 1x 1x 1x 1x 1x 1x 40x 40x 40x 40x 40x 40x 40x 1x  
import {CDSAnnotation, CDSAssociation, CDSComposition, CDSType} from ".";
import {Expression, str, seq, star, opt, plus, alt} from "../../abap/2_statements/combi";
import {IStatementRunnable} from "../../abap/2_statements/statement_runnable";
import {CDSName} from "./cds_name";
 
export class CDSDefineAbstract extends Expression {
  public getRunnable(): IStatementRunnable {
    const field = seq(star(CDSAnnotation), opt(str("KEY")), CDSName, ":", CDSType, ";");
    const compsiOrAssoci = seq(star(CDSAnnotation), CDSName, ":", alt(CDSComposition, CDSAssociation), ";");
 
    return seq(star(CDSAnnotation), "DEFINE", opt("ROOT"), "ABSTRACT", "ENTITY", CDSName, str("{"),
               plus(alt(field, compsiOrAssoci)),
               str("}"), opt(";"));
  }
}