All files / src/abap/5_syntax/statements delete_database.ts

91.11% Statements 41/45
66.66% Branches 6/9
100% Functions 1/1
91.11% Lines 41/45

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 37 38 39 40 41 42 43 44 45 461x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 8x 8x     8x 8x 8x 8x 8x 1x 1x 8x 8x 7x 7x 1x 1x 7x 8x 8x 8x 8x 8x 8x 8x 8x     8x 8x 8x 8x 1x  
import * as Expressions from "../../2_statements/expressions";
import {StatementNode} from "../../nodes";
import {Source} from "../expressions/source";
import {Dynamic} from "../expressions/dynamic";
import {DatabaseTable} from "../expressions/database_table";
import {StatementSyntax} from "../_statement_syntax";
import {SyntaxInput} from "../_syntax_input";
import {checkDatabaseFields} from "../expressions/_check_database_fields";
import {SQLIn} from "../expressions/sql_in";
 
export class DeleteDatabase implements StatementSyntax {
  public runSyntax(node: StatementNode, input: SyntaxInput): void {
 
    for (const s of node.findAllExpressions(Expressions.Source)) {
      Source.runSyntax(s, input);
    }
    for (const s of node.findAllExpressions(Expressions.SimpleSource3)) {
      Source.runSyntax(s, input);
    }
 
    for (const d of node.findAllExpressions(Expressions.Dynamic)) {
      Dynamic.runSyntax(d, input);
    }
 
    for (const compare of node.findAllExpressions(Expressions.SQLCompare)) {
      const sqlin = compare.findDirectExpression(Expressions.SQLIn);
      if (sqlin !== undefined) {
        SQLIn.runSyntax(sqlin, input);
      }
    }
 
    const dbtab = node.findFirstExpression(Expressions.DatabaseTable);
    if (dbtab !== undefined) {
      const dbSource = DatabaseTable.runSyntax(dbtab, input);
      const fields = node.findAllExpressions(Expressions.SQLCompare)
        .map(compare => compare.findDirectExpression(Expressions.SQLFieldName)?.concatTokens().toUpperCase())
        .filter(field => field !== undefined);
      for (const orderBy of node.findAllExpressions(Expressions.SQLOrderBy)) {
        fields.push(...orderBy.findAllExpressions(Expressions.SQLFieldName).map(field => field.concatTokens().toUpperCase()));
      }
      checkDatabaseFields(fields, [dbSource], input, node.getFirstToken());
    }
 
  }
}