diff --git a/lib/cartodb/models/aggregation/aggregation-map-config.js b/lib/cartodb/models/aggregation/aggregation-map-config.js index d0e5bffb..b2c3b60e 100644 --- a/lib/cartodb/models/aggregation/aggregation-map-config.js +++ b/lib/cartodb/models/aggregation/aggregation-map-config.js @@ -1,4 +1,5 @@ const MapConfig = require('windshaft').model.MapConfig; +const aggregationQuery = require('./aggregation-query'); module.exports = class AggregationMapConfig extends MapConfig { static get THRESHOLD () { @@ -19,6 +20,26 @@ module.exports = class AggregationMapConfig extends MapConfig { this.validate(); } + getAggregatedQuery (index) { + const { sql_raw, sql } = this.getLayer(index).options; + const { + resolution = 1, + threshold = AggregationMapConfig.THRESHOLD, + placement = 'centroid', + columns = {}, + dimmensions = {} + } = this.getAggregation(index); + + return aggregationQuery({ + query: sql_raw || sql, + resolution, + threshold, + placement, + columns, + dimmensions + }); + } + isAggregationMapConfig () { return this.isVectorOnlyMapConfig() || this.hasAnyLayerAggregation(); } diff --git a/lib/cartodb/models/aggregation/aggregation.js b/lib/cartodb/models/aggregation/aggregation.js deleted file mode 100644 index e6c0f9a8..00000000 --- a/lib/cartodb/models/aggregation/aggregation.js +++ /dev/null @@ -1,23 +0,0 @@ -const aggregationQuery = require('./aggregation-query'); -const AggregationMapConfig = require('./aggregation-map-config'); - -module.exports = class Aggregation { - constructor (mapconfig, query, { - resolution = 1, - threshold = AggregationMapConfig.THRESHOLD, - placement = 'centroid', - columns = {}, - dimensions = {} - } = {}) { - this.mapconfig = mapconfig; - this.query = query; - this.resolution = resolution; - this.threshold = threshold; - this.placement = placement; - this.columns = columns; - this.dimensions = dimensions; - } - sql () { - return aggregationQuery(this); - } -}; diff --git a/lib/cartodb/models/mapconfig/adapter/aggregation-mapconfig-adapter.js b/lib/cartodb/models/mapconfig/adapter/aggregation-mapconfig-adapter.js index 73247b42..2572ecdf 100644 --- a/lib/cartodb/models/mapconfig/adapter/aggregation-mapconfig-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/aggregation-mapconfig-adapter.js @@ -1,4 +1,3 @@ -const Aggregation = require('../../aggregation/aggregation'); const AggregationMapConfig = require('../../aggregation/aggregation-map-config'); const queryUtils = require('../../../utils/query-utils'); @@ -84,11 +83,9 @@ module.exports = class AggregationMapConfigAdapter { } if (shouldAdapt) { - const sql = layer.options.sql_raw ? layer.options.sql_raw : layer.options.sql; - const aggregation = new Aggregation(mapConfig, sql, layer.options.aggregation); const sqlQueryWrap = layer.options.sql_wrap; - let aggregationSql = aggregation.sql(); + let aggregationSql = mapConfig.getAggregatedQuery(index); if (sqlQueryWrap) { aggregationSql = sqlQueryWrap.replace(/<%=\s*sql\s*%>/g, aggregationSql);