UNPKG

@abaplint/transpiler

Version:
48 lines 2.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InsertDatabaseTranspiler = void 0; exports.findConnection = findConnection; const abaplint = require("@abaplint/core"); const chunk_1 = require("../chunk"); const expressions_1 = require("../expressions"); class InsertDatabaseTranspiler { transpile(node, traversal) { const dbtab = node.findFirstExpression(abaplint.Expressions.DatabaseTable); if (dbtab === undefined) { throw new Error("internal error, InsertDatabaseTranspiler"); } const table = new expressions_1.DatabaseTableTranspiler(false).transpile(dbtab, traversal); const options = []; const values = node.findExpressionAfterToken("VALUES"); if (values) { const tvalues = traversal.traverse(values); options.push(`"values": ` + tvalues.getCode()); } const from = node.findExpressionAfterToken("FROM"); if (from && from.get() instanceof abaplint.Expressions.SQLSource) { const tvalues = traversal.traverse(from); options.push(`"values": ` + tvalues.getCode()); } const fromTable = node.findExpressionAfterToken("TABLE"); if (fromTable && fromTable.get() instanceof abaplint.Expressions.SQLSource) { const tvalues = traversal.traverse(fromTable); options.push(`"table": ` + tvalues.getCode()); } const connection = node.findDirectExpression(abaplint.Expressions.DatabaseConnection); if (connection) { const con = findConnection(connection); options.push(`"connection": "${con}"`); } return new chunk_1.Chunk(`await abap.statements.insertDatabase(${table.getCode()}, {${options.join(", ")}});`); } } exports.InsertDatabaseTranspiler = InsertDatabaseTranspiler; function findConnection(connection) { let con = connection.getLastToken().getStr().toUpperCase(); if (con === "DEFAULT_") { // todo, workaround for replacing of keywords, con = "DEFAULT"; } return con; } //# sourceMappingURL=insert_database.js.map