UNPKG

@abaplint/runtime

Version:
67 lines 2.18 kB
"use strict"; 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); // @ts-ignore subrc = Math.max(subrc, abap.builtin.sy.get().subrc.get()); // @ts-ignore dbcnt += abap.builtin.sy.get().dbcnt.get(); } // @ts-ignore abap.builtin.sy.get().subrc.set(subrc); // @ts-ignore 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, }); // @ts-ignore abap.builtin.sy.get().subrc.set(subrc); // @ts-ignore abap.builtin.sy.get().dbcnt.set(dbcnt); return subrc; } //# sourceMappingURL=insert_database.js.map