nodejs-jdbc
Version:
JDBC wrapper for Node
59 lines • 2.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResultSet = void 0;
const jinst_1 = require("./jinst");
const ResultSetMetadata_1 = require("./ResultSetMetadata");
const Helper_1 = require("./Helper");
if (!(0, jinst_1.isJvmCreated)()) {
(0, jinst_1.addOption)('-Xrs');
}
class ResultSet {
constructor(resultSet) {
this.resultSet = resultSet;
}
next() {
return this.resultSet.nextSync();
}
fetchResult(metas) {
const result = {};
for (const meta of metas) {
if (meta.type.name === 'BigDecimal')
meta.type.name = 'Double';
const getterName = 'get' + meta.type.name + 'Sync';
if (typeof this.resultSet[getterName] !== 'function') {
throw new Error(`Unknown type getter (${getterName}) for ${meta.type.name} for column ${meta.name} (${meta.label})`);
}
switch (true) {
case meta.type.name === 'Date' ||
meta.type.name === 'Time' ||
meta.type.name === 'Timestamp':
{
const dateValue = this.resultSet[`${getterName}`](meta.label);
result[meta.label] = dateValue ? dateValue.toStringSync() : null;
break;
}
case meta.type.name === 'Int' &&
(0, Helper_1.isNull)(this.resultSet.getObjectSync(meta.label)):
result[meta.label] = null;
break;
default:
result[meta.label] = this.resultSet[`${getterName}`](meta.label);
break;
}
}
return result;
}
toObjArray() {
const metas = this.getMetaData().getAllColumnMeta();
const results = [];
while (this.next()) {
results.push(this.fetchResult(metas));
}
return results;
}
getMetaData() {
return new ResultSetMetadata_1.ResultSetMetaData(this.resultSet.getMetaDataSync());
}
}
exports.ResultSet = ResultSet;
//# sourceMappingURL=ResultSet.js.map