@abaplint/transpiler
Version:
32 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OpenCursorTranspiler = void 0;
const abaplint = require("@abaplint/core");
const chunk_1 = require("../chunk");
const insert_database_1 = require("./insert_database");
class OpenCursorTranspiler {
transpile(node, traversal) {
const target = traversal.traverse(node.findDirectExpression(abaplint.Expressions.SQLTarget)).getCode();
const selectExpression = node.findDirectExpression(abaplint.Expressions.Select);
let select = "SELECT ";
select += traversal.traverse(selectExpression?.findDirectExpression(abaplint.Expressions.SQLFieldList)).getCode() + " ";
select += traversal.traverse(selectExpression?.findDirectExpression(abaplint.Expressions.SQLFrom)).getCode();
const cond = selectExpression?.findDirectExpression(abaplint.Expressions.SQLCond);
if (cond) {
select += "WHERE " + traversal.traverse(node).getCode();
}
const orderBy = selectExpression?.findDirectExpression(abaplint.Expressions.SQLOrderBy);
if (orderBy) {
select += "ORDER BY " + traversal.traverse(node).getCode();
}
const options = [];
const connection = node.findDirectExpression(abaplint.Expressions.DatabaseConnection);
if (connection) {
const con = (0, insert_database_1.findConnection)(connection);
options.push(`"connection": "${con}"`);
}
return new chunk_1.Chunk().append(`await abap.statements.openCursor(${target}, "${select}", {${options.join(", ")}});`, node, traversal);
}
}
exports.OpenCursorTranspiler = OpenCursorTranspiler;
//# sourceMappingURL=open_cursor.js.map