@abaplint/runtime
Version:
Transpiler - Runtime
61 lines • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toValue = toValue;
exports.insertDatabase = insertDatabase;
const prefix_1 = require("../prefix");
const types_1 = require("../types");
function toValue(value) {
if (typeof value === "string") {
// postgres requires ' for values
return "'" + value.replace(/'/g, "''") + "'";
// return '"' + value.replace(/"/g, "\"\"") + '"';
}
else {
return value;
}
}
async function insertDatabase(table, options, context) {
const columns = [];
const values = [];
if (options.values === undefined && options.table === undefined) {
throw "insertDatabase, wrong input";
}
if (options.table !== undefined) {
let subrc = 0;
let dbcnt = 0;
for (const row of options.table.array()) {
await insertDatabase(table, { values: row, connection: options.connection }, context);
subrc = Math.max(subrc, abap.builtin.sy.get().subrc.get());
dbcnt += abap.builtin.sy.get().dbcnt.get();
}
abap.builtin.sy.get().subrc.set(subrc);
abap.builtin.sy.get().dbcnt.set(dbcnt);
return;
}
const structure = options.values.get();
for (const k of Object.keys(structure)) {
const field = structure[k];
if (field instanceof types_1.Structure) {
// then its a group, ignore
continue;
}
columns.push(k);
values.push(toValue(field.get()));
}
if (typeof table !== "string") {
table = table.get().trimEnd().toLowerCase();
}
let db = context.defaultDB();
if (options.connection) {
db = context.databaseConnections[options.connection];
}
const { subrc, dbcnt } = await db.insert({
table: (0, prefix_1.buildDbTableName)(table),
columns,
values,
});
abap.builtin.sy.get().subrc.set(subrc);
abap.builtin.sy.get().dbcnt.set(dbcnt);
return subrc;
}
//# sourceMappingURL=insert_database.js.map