Windshaft-cartodb/lib/backends/pg-query-runner.js

34 lines
944 B
JavaScript
Raw Normal View History

'use strict';
var PSQL = require('cartodb-psql');
2019-11-12 20:12:01 +08:00
const dbParamsFromReqParams = require('../utils/database-params');
function PgQueryRunner(pgConnection) {
this.pgConnection = pgConnection;
}
module.exports = PgQueryRunner;
/**
* Runs `query` with `username`'s PostgreSQL role, callback receives error and rows array.
*
* @param {String} username
* @param {String} query
* @param {Function} callback function({Error}, {Array}) second argument is guaranteed to be an array
*/
PgQueryRunner.prototype.run = function(username, query, callback) {
2018-02-08 19:04:03 +08:00
this.pgConnection.getDatabaseParams(username, (err, databaseParams) => {
if (err) {
return callback(err);
}
2018-02-08 19:04:03 +08:00
2019-11-12 20:12:01 +08:00
const psql = new PSQL(dbParamsFromReqParams(databaseParams));
2018-02-08 19:04:03 +08:00
psql.query(query, function (err, resultSet) {
resultSet = resultSet || {};
return callback(err, resultSet.rows || []);
});
});
};