@teqed/interact-ibmi
Version:
Menus for interacting with IBMi AS400 using node-odbc.
28 lines (27 loc) • 1.05 kB
JavaScript
import chalk from 'chalk';
import ora from 'ora';
import { parseODBCErrorMessage } from '../qcmdexc/qcmdexc-util.js';
import { queryOdbc } from './odbc-util.js';
export default async (statement) => {
const spinner = ora(`Executing SQL statement...`).start();
try {
const query = await queryOdbc(statement);
// Destructure query into an array of objects
const rows = query.map(row => {
const object = {};
for (const column of query.columns) {
object[column.name] = row[column.name];
}
return object;
});
spinner.succeed(`SQL statement executed!`);
return rows;
}
catch (error) {
const parsedError = await parseODBCErrorMessage(error);
spinner.fail(`${chalk.red(parsedError.messageIdentifier)} - ${chalk.yellow(parsedError.messageText)}`);
// Return a promise of an empty string.
// eslint-disable-next-line unicorn/no-useless-promise-resolve-reject
return Promise.resolve(``);
}
};