Merge branch 'master' into eslint
This commit is contained in:
@@ -85,9 +85,13 @@ module.exports = class ApiRouter {
|
||||
const metadataBackend = cartodbRedis({ pool: redisPool });
|
||||
const pgConnection = new PgConnection(metadataBackend);
|
||||
|
||||
const windshaftLogger = environmentOptions.log_windshaft && global.log4js ?
|
||||
global.log4js.getLogger('[windshaft]') :
|
||||
null;
|
||||
const mapStore = new windshaft.storage.MapStore({
|
||||
pool: redisPool,
|
||||
expire_time: serverOptions.grainstore.default_layergroup_ttl
|
||||
expire_time: serverOptions.grainstore.default_layergroup_ttl,
|
||||
logger: windshaftLogger
|
||||
});
|
||||
|
||||
const rendererFactory = createRendererFactory({ redisPool, serverOptions, environmentOptions });
|
||||
|
||||
@@ -8,7 +8,7 @@ var DataviewFactoryWithOverviews = require('../models/dataview/overviews/factory
|
||||
const dbParamsFromReqParams = require('../utils/database-params');
|
||||
var OverviewsQueryRewriter = require('../utils/overviews-query-rewriter');
|
||||
var overviewsQueryRewriter = new OverviewsQueryRewriter({
|
||||
zoom_level: 'CDB_ZoomFromScale(!scale_denominator!)'
|
||||
zoom_level: 'cartodb.CDB_ZoomFromScale(!scale_denominator!)'
|
||||
});
|
||||
|
||||
var dot = require('dot');
|
||||
|
||||
@@ -12,9 +12,9 @@ OverviewsMetadataBackend.prototype.getOverviewsMetadata = function (username, sq
|
||||
// FIXME: Currently using internal function _cdb_schema_name
|
||||
// CDB_Overviews should provide the schema information directly.
|
||||
const query = `
|
||||
SELECT *, _cdb_schema_name(base_table)
|
||||
FROM CDB_Overviews(
|
||||
CDB_QueryTablesText($windshaft$${queryUtils.substituteDummyTokens(sql)}$windshaft$)
|
||||
SELECT *, cartodb._cdb_schema_name(base_table)
|
||||
FROM cartodb.CDB_Overviews(
|
||||
cartodb.CDB_QueryTablesText($windshaft$${queryUtils.substituteDummyTokens(sql)}$windshaft$)
|
||||
);
|
||||
`;
|
||||
this.pgQueryRunner.run(username, query, function handleOverviewsRows (err, rows) {
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
var PSQL = require('cartodb-psql');
|
||||
var _ = require('underscore');
|
||||
const debug = require('debug')('cachechan');
|
||||
const dbParamsFromReqParams = require('../utils/database-params');
|
||||
|
||||
function PgConnection (metadataBackend) {
|
||||
this.metadataBackend = metadataBackend;
|
||||
@@ -122,13 +123,7 @@ PgConnection.prototype.getConnection = function (username, callback) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
return callback(err, new PSQL({
|
||||
user: databaseParams.dbuser,
|
||||
pass: databaseParams.dbpass,
|
||||
host: databaseParams.dbhost,
|
||||
port: databaseParams.dbport,
|
||||
dbname: databaseParams.dbname
|
||||
}));
|
||||
return callback(err, new PSQL(dbParamsFromReqParams(databaseParams)));
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var PSQL = require('cartodb-psql');
|
||||
const dbParamsFromReqParams = require('../utils/database-params');
|
||||
|
||||
function PgQueryRunner (pgConnection) {
|
||||
this.pgConnection = pgConnection;
|
||||
@@ -21,13 +22,7 @@ PgQueryRunner.prototype.run = function (username, query, callback) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
const psql = new PSQL({
|
||||
user: databaseParams.dbuser,
|
||||
pass: databaseParams.dbpass,
|
||||
host: databaseParams.dbhost,
|
||||
port: databaseParams.dbport,
|
||||
dbname: databaseParams.dbname
|
||||
});
|
||||
const psql = new PSQL(dbParamsFromReqParams(databaseParams));
|
||||
|
||||
psql.query(query, function (err, resultSet) {
|
||||
resultSet = resultSet || {};
|
||||
|
||||
@@ -94,6 +94,8 @@ var CATEGORIES_LIMIT = 6;
|
||||
function Aggregation (query, options, queryRewriter, queryRewriteData, params, queries) {
|
||||
BaseOverviewsDataview.call(this, query, options, BaseDataview, queryRewriter, queryRewriteData, params, queries);
|
||||
|
||||
this._checkOptions(options);
|
||||
|
||||
this.query = query;
|
||||
this.queries = queries;
|
||||
this.column = options.column;
|
||||
@@ -219,7 +221,27 @@ var aggregationFnQueryTpl = {
|
||||
sum: dot.template('sum({{=it._aggregationColumn}}*_feature_count)')
|
||||
};
|
||||
|
||||
Aggregation.prototype.getAggregationSql = function () {
|
||||
const VALID_OPERATIONS = {
|
||||
count: [],
|
||||
sum: ['aggregationColumn']
|
||||
};
|
||||
|
||||
Aggregation.prototype._checkOptions = function (options) {
|
||||
if (!VALID_OPERATIONS[options.aggregation]) {
|
||||
throw new Error(`Aggregation does not support '${options.aggregation}' operation in dataview overview options`);
|
||||
}
|
||||
|
||||
const requiredOptions = VALID_OPERATIONS[options.aggregation];
|
||||
const missingOptions = requiredOptions.filter(requiredOption => !options.hasOwnProperty(requiredOption));
|
||||
|
||||
if (missingOptions.length > 0) {
|
||||
throw new Error(
|
||||
`Aggregation '${options.aggregation}' is missing some options for overview: ${missingOptions.join(',')}`
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
Aggregation.prototype.getAggregationSql = function() {
|
||||
return aggregationFnQueryTpl[this.aggregation]({
|
||||
_aggregationFn: this.aggregation,
|
||||
_aggregationColumn: this.aggregationColumn || 1
|
||||
|
||||
@@ -89,7 +89,12 @@ MapConfigNamedLayersAdapter.prototype.getMapConfig = function (user, requestMapC
|
||||
layers.push(layer);
|
||||
if (layersResult.datasource) {
|
||||
datasourceBuilder.withLayerDatasource(currentLayerIndex, {
|
||||
user: dbAuth.dbuser
|
||||
user: dbAuth.dbuser,
|
||||
// Used internally (PSQL)
|
||||
pass: dbAuth.dbpassword,
|
||||
dbpassword: dbAuth.dbpassword,
|
||||
// Used by Mapnik
|
||||
password: dbAuth.dbpassword
|
||||
});
|
||||
}
|
||||
currentLayerIndex++;
|
||||
|
||||
@@ -242,7 +242,7 @@ module.exports = class NamedMapMapConfigProvider extends BaseMapConfigProvider {
|
||||
}
|
||||
|
||||
dbParams.dbuser = databaseParams.dbuser;
|
||||
dbParams.dbpass = databaseParams.dbpass;
|
||||
dbParams.dbpassword = databaseParams.dbpassword;
|
||||
dbParams.dbhost = databaseParams.dbhost;
|
||||
dbParams.dbport = databaseParams.dbport;
|
||||
dbParams.dbname = databaseParams.dbname;
|
||||
|
||||
@@ -31,11 +31,11 @@ var rendererConfig = _.defaults(global.environment.renderer || {}, {
|
||||
});
|
||||
|
||||
rendererConfig.mapnik.queryRewriter = new OverviewsQueryRewriter({
|
||||
zoom_level: 'CDB_ZoomFromScale(!scale_denominator!)'
|
||||
zoom_level: 'cartodb.CDB_ZoomFromScale(!scale_denominator!)'
|
||||
});
|
||||
|
||||
rendererConfig.mvt.queryRewriter = new OverviewsQueryRewriter({
|
||||
zoom_level: 'CDB_ZoomFromScale(!scale_denominator!)'
|
||||
zoom_level: 'cartodb.CDB_ZoomFromScale(!scale_denominator!)'
|
||||
});
|
||||
|
||||
// Perform keyword substitution in statsd
|
||||
|
||||
@@ -7,8 +7,8 @@ module.exports.getQueryActualRowCount = function (query) {
|
||||
return `select COUNT(*) AS rows FROM (${substituteDummyTokens(query)}) AS __cdb_query`;
|
||||
};
|
||||
|
||||
function getQueryRowEstimation (query) {
|
||||
return 'select CDB_EstimateRowCount($windshaft$' + substituteDummyTokens(query) + '$windshaft$) as rows';
|
||||
function getQueryRowEstimation(query) {
|
||||
return 'select cartodb.CDB_EstimateRowCount($windshaft$' + substituteDummyTokens(query) + '$windshaft$) as rows';
|
||||
}
|
||||
module.exports.getQueryRowEstimation = getQueryRowEstimation;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user