42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
var assert = require('assert');
|
|
var PSQL = require('cartodb-psql');
|
|
var step = require('step');
|
|
|
|
function PgQueryRunner(pgConnection) {
|
|
this.pgConnection = pgConnection;
|
|
}
|
|
|
|
module.exports = PgQueryRunner;
|
|
|
|
|
|
PgQueryRunner.prototype.run = function(username, query, queryHandler, callback) {
|
|
var self = this;
|
|
|
|
var params = {};
|
|
|
|
step(
|
|
function setAuth() {
|
|
self.pgConnection.setDBAuth(username, params, this);
|
|
},
|
|
function setConn(err) {
|
|
assert.ifError(err);
|
|
self.pgConnection.setDBConn(username, params, this);
|
|
},
|
|
function executeQuery(err) {
|
|
assert.ifError(err);
|
|
var psql = new PSQL({
|
|
user: params.dbuser,
|
|
pass: params.dbpass,
|
|
host: params.dbhost,
|
|
port: params.dbport,
|
|
dbname: params.dbname
|
|
});
|
|
psql.query(query, function(err, resultSet) {
|
|
resultSet = resultSet || {};
|
|
var rows = resultSet.rows || [];
|
|
queryHandler(err, rows, callback);
|
|
});
|
|
}
|
|
);
|
|
};
|