UNPKG

plywood-mysql-requester

Version:
58 lines (57 loc) 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var mysql = require("mysql"); var plywood_base_api_1 = require("plywood-base-api"); var readable_stream_1 = require("readable-stream"); function mySqlRequesterFactory(parameters) { var locator = parameters.locator; if (!locator) { var host = parameters.host; if (!host) throw new Error("must have a `host` or a `locator`"); locator = plywood_base_api_1.basicLocator(host, 3306); } var user = parameters.user; var password = parameters.password; var database = parameters.database; return function (request) { var query = request.query; var connection = null; var stream = new readable_stream_1.Readable({ objectMode: true, read: function () { connection && connection.resume(); } }); locator() .then(function (location) { connection = mysql.createConnection({ host: location.hostname, port: location.port || 3306, user: user, password: password, database: database, charset: 'UTF8_BIN', timezone: '+00:00' }); connection.connect(); var q = connection.query(query); q.on('result', function (row) { if (!stream.push(row)) connection.pause(); }); q.on('error', function (err) { stream.emit('error', err); }); q.on('end', function () { stream.push(null); }); connection.end(); }) .catch(function (err) { stream.emit('error', err); }); return stream; }; } exports.mySqlRequesterFactory = mySqlRequesterFactory;