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

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

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 321x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x
import {IStatement} from "./_statement";
import {seq, alt, opt, tok} from "../combi";
import {DatabaseTable, SQLSource, Select, DatabaseConnection, SQLClient} from "../expressions";
import {WParenLeftW, WParenRightW} from "../../1_lexer/tokens";
import {IStatementRunnable} from "../statement_runnable";
 
export class InsertDatabase implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const sub = seq(tok(WParenLeftW), Select, tok(WParenRightW));
 
    const f = seq(opt(SQLClient),
                  opt(DatabaseConnection),
                  "FROM",
                  opt("TABLE"),
                  alt(SQLSource, sub),
                  opt("ACCEPTING DUPLICATE KEYS"));
 
    const from = seq(DatabaseTable,
                     opt(alt(f, SQLClient, DatabaseConnection)));
 
    const into = seq("INTO",
                     DatabaseTable,
                     opt(SQLClient),
                     opt(DatabaseConnection),
                     "VALUES",
                     SQLSource);
 
    return seq("INSERT", alt(from, into));
  }
 
}