All files / src/ddl/expressions ddl_clauses.ts

100% Statements 33/33
100% Branches 4/4
100% Functions 4/4
100% Lines 33/33

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 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 341x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
import {Expression, optPrio, seq} from "../../abap/2_statements/combi";
import {IStatementRunnable} from "../../abap/2_statements/statement_runnable";
import {DDLCardinalityValue} from "./ddl_literal";
import {DDLName} from "./ddl_name";
import {DDLWhere} from "./ddl_where";
 
export class DDLForeignKeyTarget extends Expression {
  public getRunnable(): IStatementRunnable {
    const cardinality = seq(
      "[", DDLCardinalityValue, ".", ".", DDLCardinalityValue,
      optPrio(seq(",", DDLCardinalityValue)), "]",
    );
    return seq(optPrio(cardinality), DDLName);
  }
}
 
export class DDLForeignKey extends Expression {
  public getRunnable(): IStatementRunnable {
    return seq("WITH", "FOREIGN", "KEY", DDLForeignKeyTarget, optPrio(DDLWhere));
  }
}
 
export class DDLValueHelp extends Expression {
  public getRunnable(): IStatementRunnable {
    return seq("WITH", "VALUE", "HELP", DDLName, optPrio(DDLWhere));
  }
}
 
export class DDLReference extends Expression {
  public getRunnable(): IStatementRunnable {
    return seq("WITH", "REFERENCE", "TABLE", DDLName, "AND", "REFERENCE", "FIELD", DDLName);
  }
}