knex/lib/dialects/oracle/oracle-query-stream.js
2014-09-01 17:19:34 +02:00

43 lines
913 B
JavaScript

'use strict';
/*jslint node:true, nomen: true*/
var inherits = require('util').inherits;
var Readable = require('stream').Readable;
var _ = require('lodash');
function OracleQueryStream(connection, sql, bindings, options) {
try {
Readable.call(this, _.merge({}, {
objectMode: true,
highWaterMark: 1000
}, options));
this.oracleReader = connection.reader(sql, bindings || []);
} catch (err) {
throw err;
}
}
inherits(OracleQueryStream, Readable);
OracleQueryStream.prototype._read = function () {
var self = this;
this.oracleReader.nextRow(function (err, row) {
if (err) {
return self.emit('error', err);
}
if (!row) {
process.nextTick(function () {
self.push(null);
});
}
self.push(row);
});
};
module.exports = OracleQueryStream;