|
|
|
@ -7,6 +7,7 @@ const AggregationMapConfig = require('../models/aggregation/aggregation-mapconfi
|
|
|
|
|
|
|
|
|
|
const WebMercatorHelper = require('cartodb-query-tables').utils.webMercatorHelper;
|
|
|
|
|
const webmercator = new WebMercatorHelper();
|
|
|
|
|
const queryUtils = require('../../lib/utils/query-utils');
|
|
|
|
|
|
|
|
|
|
module.exports = class ClusterBackend {
|
|
|
|
|
getClusterFeatures (mapConfigProvider, params, callback) {
|
|
|
|
@ -75,15 +76,6 @@ const SKIP_COLUMNS = {
|
|
|
|
|
the_geom_webmercator: true
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function stripQuotes(columnName) {
|
|
|
|
|
const quotedName = columnName.length > 2 && columnName[0] === '"' && columnName[columnName.length - 1] === '"';
|
|
|
|
|
if (quotedName)
|
|
|
|
|
{
|
|
|
|
|
return columnName.substring(1, columnName.length - 1);
|
|
|
|
|
}
|
|
|
|
|
return columnName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getColumnsName (pg, query, callback) {
|
|
|
|
|
const sql = schemaQuery({
|
|
|
|
|
query: query
|
|
|
|
@ -98,7 +90,7 @@ function getColumnsName (pg, query, callback) {
|
|
|
|
|
|
|
|
|
|
const fields = resultSet.fields || [];
|
|
|
|
|
const columnNames = fields.map(field => field.name)
|
|
|
|
|
.filter(columnName => !SKIP_COLUMNS[stripQuotes(columnName)]);
|
|
|
|
|
.filter(columnName => !SKIP_COLUMNS[queryUtils.stripQuotes(columnName)]);
|
|
|
|
|
|
|
|
|
|
return callback(null, columnNames);
|
|
|
|
|
}, true);
|
|
|
|
|