39 lines
948 B
JavaScript
39 lines
948 B
JavaScript
|
'use strict';
|
||
|
|
||
|
const Readable = require('stream').Readable;
|
||
|
|
||
|
// copy-paste from https://github.com/mysqljs/mysql/blob/master/lib/protocol/sequences/Query.js
|
||
|
module.exports = function(command, connectionStream) {
|
||
|
command.stream = function(options) {
|
||
|
let stream;
|
||
|
|
||
|
options = options || {};
|
||
|
options.objectMode = true;
|
||
|
(stream = new Readable(options)),
|
||
|
(stream._read = function() {
|
||
|
connectionStream.resume();
|
||
|
});
|
||
|
|
||
|
this.on('result', (row, i) => {
|
||
|
if (!stream.push(row)) {
|
||
|
connectionStream.pause();
|
||
|
}
|
||
|
stream.emit('result', row, i); // replicate old emitter
|
||
|
});
|
||
|
|
||
|
this.on('error', err => {
|
||
|
stream.emit('error', err); // Pass on any errors
|
||
|
});
|
||
|
|
||
|
this.on('end', () => {
|
||
|
stream.push(null); // pushing null, indicating EOF
|
||
|
});
|
||
|
|
||
|
this.on('fields', (fields, i) => {
|
||
|
stream.emit('fields', fields, i); // replicate old emitter
|
||
|
});
|
||
|
|
||
|
return stream;
|
||
|
};
|
||
|
};
|