From 8da8cd31db0d57e30e93fd3e98026bd98e4afb82 Mon Sep 17 00:00:00 2001 From: Will Breitkreutz Date: Fri, 27 Jan 2017 09:12:41 -0600 Subject: [PATCH] update --- src/simple-oracledb-wrapper.js | 58 ++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/simple-oracledb-wrapper.js b/src/simple-oracledb-wrapper.js index b2f91af..716967c 100644 --- a/src/simple-oracledb-wrapper.js +++ b/src/simple-oracledb-wrapper.js @@ -118,8 +118,66 @@ function execute(sql, args, callback){ }) } +function _closeConnection(connection){ + connection.close(function(err){ + if(err) console.log(err.message); + }) +} + +function _releaseRSandConnection(connection, resultSet){ + resultSet.close(function(err){ + if(err) console.log(err.message); + _closeConnection(connection); + }) +} + +function stream(sql, args, numRows, callback){ + var pool = getPool(); + pool.getConnection(function(err, connection){ + if(err){ + return callback(err); + }else{ + connection.execute(sql, args, { resultSet: true }, function(err, result){ + if(err){ + connection.release(function(err){ + if(err) return callback(err); + }) + return callback(err); + }else{ + _fetchRowsFromRs(connection, result.resultSet, numRows, callback); + } + }) + } + }) +} + +function _fetchRowsFromRs(connection, resultSet, numRows, callback){ + resultSet.getRows(numRows, function(err, rows){ + if(err){ + return callback(err); + }else if(rows.length > 0){ + var data = enflate({ + metaData: resultSet.metaData, + rows: rows + }, { + camelCase: true + }) + callback(null, data); + if(rows.length === numRows){ + _fetchRowsFromRs(connection, resultSet, numRows, callback); + }else{ + _releaseRSandConnection(connection, resultSet); + } + }else{ + callback(null, []); + _releaseRSandConnection(connection, resultSet); + } + }) +} + module.exports.createPool = createPool; module.exports.getPool = getPool; module.exports.select = select; +module.exports.stream = stream; module.exports.execute = execute; module.exports.testConnection = testConnection;