39 lines
		
	
	
		
			959 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
		
			959 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; | ||
|  |   }; | ||
|  | }; |