All files / src/abap/2_statements/statements delete_database.ts

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

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 34 35 36 371x 1x 1x 1x 1x 1x 1x 1x 1x 1x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 1x 1x  
import {IStatement} from "./_statement";
import {seq, optPrio, opt, altPrio, ver, verNotLang} from "../combi";
import {Dynamic, SQLCond, DatabaseTable, SQLSourceSimple, DatabaseConnection, SQLOrderBy, SQLUpTo, SQLOffset, SQLMappingFromEntity, SQLIndicators, SQLDmlOptions} from "../expressions";
import {LanguageVersion, Release} from "../../../version";
import {IStatementRunnable} from "../statement_runnable";
import {SQLClient} from "../expressions/sql_client";
 
export class DeleteDatabase implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const where = seq("WHERE", altPrio(SQLCond, Dynamic));
 
    const upToOffset = ver(Release.v764, altPrio(
      seq(SQLUpTo, optPrio(SQLOffset)),
      seq(SQLOffset, optPrio(SQLUpTo)),
    ));
    const orderByTail = ver(Release.v764, seq(SQLOrderBy, optPrio(upToOffset)));
    const trailing = optPrio(altPrio(orderByTail, upToOffset));
 
    const from = seq("FROM", DatabaseTable, optPrio(SQLClient), optPrio(DatabaseConnection),
                     opt(where), trailing, optPrio(SQLDmlOptions));
 
    const fromSomething = seq("FROM", opt("TABLE"), SQLSourceSimple, optPrio(SQLIndicators), optPrio(SQLMappingFromEntity));
 
    const table = seq(DatabaseTable,
                      optPrio(SQLClient),
                      optPrio(DatabaseConnection),
                      optPrio(fromSomething),
                      optPrio(SQLDmlOptions));
 
    const ret = seq("DELETE", altPrio(from, table));
 
    return verNotLang(LanguageVersion.KeyUser, ret);
  }
 
}