From 12c44fda6fefeb519a3e6b2c3e1d4da5d6798a0e Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 16:20:42 +0200 Subject: [PATCH 01/17] Unify getMapConfig interface --- lib/cartodb/controllers/map.js | 6 +++++- .../models/mapconfig/adapter/sql-wrap-mapconfig-adapter.js | 2 +- lib/cartodb/models/mapconfig/provider/named-map-provider.js | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 50cc21bd..82081544 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -136,6 +136,10 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { var mapConfig; var analysesResults = []; + var user = req.context.user; + var params = req.params; + var context = {}; + step( function setupParams(){ self.req2params(req, this); @@ -143,7 +147,7 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { prepareConfigFn, function prepareSqlWrap(err, requestMapConfig) { assert.ifError(err); - self.sqlWrapMapConfigAdapter.getMapConfig(requestMapConfig, this); + self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, params, context, this); }, function prepareAnalysisLayers(err, requestMapConfig) { assert.ifError(err); diff --git a/lib/cartodb/models/mapconfig/adapter/sql-wrap-mapconfig-adapter.js b/lib/cartodb/models/mapconfig/adapter/sql-wrap-mapconfig-adapter.js index 6b9a5130..8bb3d201 100644 --- a/lib/cartodb/models/mapconfig/adapter/sql-wrap-mapconfig-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/sql-wrap-mapconfig-adapter.js @@ -4,7 +4,7 @@ function SqlWrapMapConfigAdapter() { module.exports = SqlWrapMapConfigAdapter; -SqlWrapMapConfigAdapter.prototype.getMapConfig = function(requestMapConfig, callback) { +SqlWrapMapConfigAdapter.prototype.getMapConfig = function(user, requestMapConfig, params, context, callback) { if (requestMapConfig && Array.isArray(requestMapConfig.layers)) { requestMapConfig.layers = requestMapConfig.layers.map(function(layer) { if (layer.options) { diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index 25d9b50d..705d44ce 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -60,6 +60,10 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { var rendererParams; var apiKey; + var user = this.owner; + var params = this.params; + var context = {}; + step( function getTemplate() { self.getTemplate(this); @@ -99,7 +103,7 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { }, function prepareSqlWrap(err, requestMapConfig) { assert.ifError(err); - self.sqlWrapMapConfigAdapter.getMapConfig(requestMapConfig, this); + self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, params, context, this); }, function prepareAnalysisLayers(err, requestMapConfig) { assert.ifError(err); From 9c1db98f6786f998fe84e4a1615f980531743baf Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 16:44:14 +0200 Subject: [PATCH 02/17] Unifiy getMapConfig signature --- lib/cartodb/controllers/map.js | 16 +++------------- .../adapter/analysis-mapconfig-adapter.js | 14 ++++++++++++-- .../mapconfig/provider/named-map-provider.js | 15 +++------------ 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 82081544..bc5145d0 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -137,7 +137,6 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { var analysesResults = []; var user = req.context.user; - var params = req.params; var context = {}; step( @@ -147,11 +146,11 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { prepareConfigFn, function prepareSqlWrap(err, requestMapConfig) { assert.ifError(err); - self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, params, context, this); + self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, req.params, context, this); }, function prepareAnalysisLayers(err, requestMapConfig) { assert.ifError(err); - var analysisConfiguration = { + context.analysisConfiguration = { db: { host: req.params.dbhost, port: req.params.dbport, @@ -164,16 +163,7 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { apiKey: req.params.api_key } }; - - var filters = {}; - if (req.params.filters) { - try { - filters = JSON.parse(req.params.filters); - } catch (e) { - // ignore - } - } - self.analysisMapConfigAdapter.getMapConfig(analysisConfiguration, requestMapConfig, filters, this); + self.analysisMapConfigAdapter.getMapConfig(user, requestMapConfig, req.params, context, this); }, function beforeLayergroupCreate(err, requestMapConfig, _analysesResults) { assert.ifError(err); diff --git a/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js b/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js index fa6aee47..0b61be80 100644 --- a/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js @@ -69,15 +69,25 @@ function getFilter(dataview, params) { }; } -AnalysisMapConfigAdapter.prototype.getMapConfig = function(analysisConfiguration, requestMapConfig, filters, callback) { +AnalysisMapConfigAdapter.prototype.getMapConfig = function(user, requestMapConfig, params, context, callback) { // jshint maxcomplexity:7 var self = this; - filters = filters || {}; if (!shouldAdaptLayers(requestMapConfig)) { return callback(null, requestMapConfig); } + var analysisConfiguration = context.analysisConfiguration; + + var filters = {}; + if (params.filters) { + try { + filters = JSON.parse(params.filters); + } catch (e) { + // ignore + } + } + var dataviewsFilters = filters.dataviews || {}; debug(dataviewsFilters); var dataviews = requestMapConfig.dataviews || {}; diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index 705d44ce..f1f43971 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -61,7 +61,6 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { var apiKey; var user = this.owner; - var params = this.params; var context = {}; step( @@ -103,11 +102,11 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { }, function prepareSqlWrap(err, requestMapConfig) { assert.ifError(err); - self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, params, context, this); + self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, rendererParams, context, this); }, function prepareAnalysisLayers(err, requestMapConfig) { assert.ifError(err); - var analysisConfiguration = { + context.analysisConfiguration = { db: { host: rendererParams.dbhost, port: rendererParams.dbport, @@ -121,15 +120,7 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { } }; - var filters = {}; - if (self.params.filters) { - try { - filters = JSON.parse(self.params.filters); - } catch (e) { - // ignore - } - } - self.analysisMapConfigAdapter.getMapConfig(analysisConfiguration, requestMapConfig, filters, this); + self.analysisMapConfigAdapter.getMapConfig(user, requestMapConfig, rendererParams, context, this); }, function prepareLayergroup(err, _mapConfig, analysesResults) { assert.ifError(err); From 70750d2c430bbb320fa6ed5ebd1c5091c49440cf Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 16:50:26 +0200 Subject: [PATCH 03/17] Unify getMapConfig signature --- lib/cartodb/controllers/map.js | 14 ++++++++------ .../mapconfig/adapter/turbo-carto-adapter.js | 4 ++-- .../mapconfig/provider/named-map-provider.js | 14 ++++++++------ 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index bc5145d0..8a702a32 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -196,13 +196,15 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { assert.ifError(err); var next = this; - self.turboCartoAdapter.getMapConfig(req.context.user, requestMapConfig, function (err, requestMapConfig) { - if (err) { - return next(err); - } + self.turboCartoAdapter.getMapConfig(req.context.user, requestMapConfig, req.params, context, + function (err, requestMapConfig) { + if (err) { + return next(err); + } - return next(null, requestMapConfig, datasource); - }); + return next(null, requestMapConfig, datasource); + } + ); }, function createLayergroup(err, requestMapConfig, datasource) { assert.ifError(err); diff --git a/lib/cartodb/models/mapconfig/adapter/turbo-carto-adapter.js b/lib/cartodb/models/mapconfig/adapter/turbo-carto-adapter.js index fd2b0c20..3eb29197 100644 --- a/lib/cartodb/models/mapconfig/adapter/turbo-carto-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/turbo-carto-adapter.js @@ -11,7 +11,7 @@ function TurboCartoAdapter(turboCartoParser) { module.exports = TurboCartoAdapter; -TurboCartoAdapter.prototype.getMapConfig = function (username, requestMapConfig, callback) { +TurboCartoAdapter.prototype.getMapConfig = function (user, requestMapConfig, params, context, callback) { var self = this; var layers = requestMapConfig.layers; @@ -23,7 +23,7 @@ TurboCartoAdapter.prototype.getMapConfig = function (username, requestMapConfig, var parseCartoQueue = queue(layers.length); layers.forEach(function(layer) { - parseCartoQueue.defer(self._parseCartoCss.bind(self), username, layer); + parseCartoQueue.defer(self._parseCartoCss.bind(self), user, layer); }); parseCartoQueue.awaitAll(function (err, layers) { diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index f1f43971..0eead347 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -152,13 +152,15 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { assert.ifError(err); var next = this; - self.turboCartoAdapter.getMapConfig(self.owner, _mapConfig, function (err, _mapConfig) { - if (err) { - return next(err); - } + self.turboCartoAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, + function (err, _mapConfig) { + if (err) { + return next(err); + } - return next(null, _mapConfig, datasource); - }); + return next(null, _mapConfig, datasource); + } + ); }, function prepareContextLimits(err, _mapConfig, _datasource) { assert.ifError(err); From efcb73e0d1764ea1a67b9c546d75d8e9e2eabc73 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 18:03:45 +0200 Subject: [PATCH 04/17] Named layers adapter with getMapConfig signature --- lib/cartodb/cache/named_map_provider_cache.js | 2 +- lib/cartodb/controllers/map.js | 4 ++-- .../adapter/mapconfig-named-layers-adapter.js | 11 +++++----- .../mapconfig/provider/named-map-provider.js | 2 +- .../mapconfig_named_layers_datasource.js | 6 ++++-- .../mapconfig_named_layers_expanded.js | 20 ++++++++++--------- 6 files changed, 25 insertions(+), 20 deletions(-) diff --git a/lib/cartodb/cache/named_map_provider_cache.js b/lib/cartodb/cache/named_map_provider_cache.js index dac98b21..ddfea4a2 100644 --- a/lib/cartodb/cache/named_map_provider_cache.js +++ b/lib/cartodb/cache/named_map_provider_cache.js @@ -15,7 +15,7 @@ function NamedMapProviderCache(templateMaps, pgConnection, metadataBackend, anal this.metadataBackend = metadataBackend; this.userLimitsApi = userLimitsApi; - this.namedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps); + this.namedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps, pgConnection); this.analysisMapConfigAdapter = new AnalysisMapConfigAdapter(analysisBackend); this.overviewsAdapter = overviewsAdapter; this.turboCartoAdapter = turboCartoAdapter; diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 8a702a32..80150699 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -51,7 +51,7 @@ function MapController(authApi, pgConnection, templateMaps, mapBackend, metadata this.turboCartoAdapter = turboCartoAdapter; this.analysisMapConfigAdapter = new AnalysisMapConfigAdapter(analysisBackend); - this.namedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps); + this.namedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps, pgConnection); this.overviewsAdapter = overviewsAdapter; this.sqlWrapMapConfigAdapter = new SqlWrapMapConfigAdapter(); } @@ -169,7 +169,7 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { assert.ifError(err); var next = this; analysesResults = _analysesResults; - self.namedLayersAdapter.getMapConfig(req.context.user, requestMapConfig, self.pgConnection, + self.namedLayersAdapter.getMapConfig(user, requestMapConfig, req.params, context, function(err, requestMapConfig, datasource) { if (err) { return next(err); diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-named-layers-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-named-layers-adapter.js index e8792def..8716bd9d 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-named-layers-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-named-layers-adapter.js @@ -2,13 +2,14 @@ var queue = require('queue-async'); var _ = require('underscore'); var Datasource = require('windshaft').model.Datasource; -function MapConfigNamedLayersAdapter(templateMaps) { +function MapConfigNamedLayersAdapter(templateMaps, pgConnection) { this.templateMaps = templateMaps; + this.pgConnection = pgConnection; } module.exports = MapConfigNamedLayersAdapter; -MapConfigNamedLayersAdapter.prototype.getMapConfig = function(username, requestMapConfig, dbMetadata, callback) { +MapConfigNamedLayersAdapter.prototype.getMapConfig = function (user, requestMapConfig, params, context, callback) { var self = this; var layers = requestMapConfig.layers; @@ -30,9 +31,9 @@ MapConfigNamedLayersAdapter.prototype.getMapConfig = function(username, requestM var templateConfigParams = layer.options.config || {}; var templateAuthTokens = layer.options.auth_tokens; - self.templateMaps.getTemplate(username, templateName, function(err, template) { + self.templateMaps.getTemplate(user, templateName, function(err, template) { if (err || !template) { - return done(new Error("Template '" + templateName + "' of user '" + username + "' not found")); + return done(new Error("Template '" + templateName + "' of user '" + user + "' not found")); } if (self.templateMaps.isAuthorized(template, templateAuthTokens)) { @@ -108,7 +109,7 @@ MapConfigNamedLayersAdapter.prototype.getMapConfig = function(username, requestM if (_.some(layers, isNamedTypeLayer)) { // Lazy load dbAuth - dbMetadata.setDBAuth(username, dbAuth, function(err) { + this.pgConnection.setDBAuth(user, dbAuth, function(err) { if (err) { return callback(err); } diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index 0eead347..c9755fed 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -126,7 +126,7 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { assert.ifError(err); var next = this; self.analysesResults = analysesResults || []; - self.namedLayersAdapter.getMapConfig(self.owner, _mapConfig, self.pgConnection, + self.namedLayersAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, function(err, _mapConfig, datasource) { if (err) { return next(err); diff --git a/test/integration/mapconfig_named_layers_datasource.js b/test/integration/mapconfig_named_layers_datasource.js index d372f138..ec37dddd 100644 --- a/test/integration/mapconfig_named_layers_datasource.js +++ b/test/integration/mapconfig_named_layers_datasource.js @@ -14,7 +14,7 @@ var templateMaps = new TemplateMaps(redisPool, { max_user_templates: global.environment.maxUserTemplates }); -var mapConfigNamedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps); +var mapConfigNamedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps, pgConnection); var wadusSql = 'select 1 wadusLayer, null::geometry the_geom_webmercator'; var wadusLayer = { @@ -294,7 +294,9 @@ describe('named_layers datasources', function() { testScenarios.forEach(function(testScenario) { it('should return a list of layers ' + testScenario.desc, function(done) { - mapConfigNamedLayersAdapter.getMapConfig(username, testScenario.config, pgConnection, + var params = {}; + var context = {}; + mapConfigNamedLayersAdapter.getMapConfig(username, testScenario.config, params, context, function(err, mapConfig, datasource) { testScenario.test(err, mapConfig.layers, datasource, done); } diff --git a/test/integration/mapconfig_named_layers_expanded.js b/test/integration/mapconfig_named_layers_expanded.js index 90c384f4..54245313 100644 --- a/test/integration/mapconfig_named_layers_expanded.js +++ b/test/integration/mapconfig_named_layers_expanded.js @@ -16,7 +16,7 @@ describe('mapconfig-named-layers-adapter', function() { max_user_templates: global.environment.maxUserTemplates }); - var mapConfigNamedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps); + var mapConfigNamedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps, pgConnection); var wadusLayer = { type: 'cartodb', @@ -134,6 +134,8 @@ describe('mapconfig-named-layers-adapter', function() { }; } + var params = {}; + var context = {}; beforeEach(function(done) { templateMaps.addTemplate(username, template, done); @@ -147,7 +149,7 @@ describe('mapconfig-named-layers-adapter', function() { var missingNamedMapLayerConfig = makeNamedMapLayerConfig({ config: {} }); - mapConfigNamedLayersAdapter.getMapConfig(username, missingNamedMapLayerConfig, pgConnection, + mapConfigNamedLayersAdapter.getMapConfig(username, missingNamedMapLayerConfig, params, context, function(err, mapConfig, datasource) { assert.ok(err); assert.ok(!mapConfig); @@ -164,7 +166,7 @@ describe('mapconfig-named-layers-adapter', function() { var nonExistentNamedMapLayerConfig = makeNamedMapLayerConfig({ name: missingTemplateName }); - mapConfigNamedLayersAdapter.getMapConfig(username, nonExistentNamedMapLayerConfig, pgConnection, + mapConfigNamedLayersAdapter.getMapConfig(username, nonExistentNamedMapLayerConfig, params, context, function(err, mapConfig, datasource) { assert.ok(err); assert.ok(!mapConfig); @@ -187,7 +189,7 @@ describe('mapconfig-named-layers-adapter', function() { var nonAuthTokensNamedMapLayerConfig = makeNamedMapLayerConfig({ name: tokenAuthTemplateName }); - mapConfigNamedLayersAdapter.getMapConfig(username, nonAuthTokensNamedMapLayerConfig, pgConnection, + mapConfigNamedLayersAdapter.getMapConfig(username, nonAuthTokensNamedMapLayerConfig, params, context, function(err, mapConfig, datasource) { assert.ok(err); assert.ok(!mapConfig); @@ -209,7 +211,7 @@ describe('mapconfig-named-layers-adapter', function() { var nestedNamedMapLayerConfig = makeNamedMapLayerConfig({ name: nestedNamedMapTemplateName }); - mapConfigNamedLayersAdapter.getMapConfig(username, nestedNamedMapLayerConfig, pgConnection, + mapConfigNamedLayersAdapter.getMapConfig(username, nestedNamedMapLayerConfig, params, context, function(err, mapConfig, datasource) { assert.ok(err); assert.ok(!mapConfig); @@ -226,7 +228,7 @@ describe('mapconfig-named-layers-adapter', function() { var validNamedMapMapLayerConfig = makeNamedMapLayerConfig({ name: templateName }); - mapConfigNamedLayersAdapter.getMapConfig(username, validNamedMapMapLayerConfig, pgConnection, + mapConfigNamedLayersAdapter.getMapConfig(username, validNamedMapMapLayerConfig, params, context, function(err, mapConfig, datasource) { assert.ok(!err); var layers = mapConfig.layers; @@ -249,7 +251,7 @@ describe('mapconfig-named-layers-adapter', function() { name: tokenAuthTemplateName, auth_tokens: ['valid1'] }); - mapConfigNamedLayersAdapter.getMapConfig(username, validAuthTokensNamedMapLayerConfig, pgConnection, + mapConfigNamedLayersAdapter.getMapConfig(username, validAuthTokensNamedMapLayerConfig, params, context, function(err, mapConfig, datasource) { assert.ok(!err); var layers = mapConfig.layers; @@ -272,7 +274,7 @@ describe('mapconfig-named-layers-adapter', function() { name: multipleLayersTemplateName, auth_tokens: ['valid2'] }); - mapConfigNamedLayersAdapter.getMapConfig(username, multipleLayersNamedMapLayerConfig, pgConnection, + mapConfigNamedLayersAdapter.getMapConfig(username, multipleLayersNamedMapLayerConfig, params, context, function(err, mapConfig, datasource) { assert.ok(!err); var layers = mapConfig.layers; @@ -309,7 +311,7 @@ describe('mapconfig-named-layers-adapter', function() { }, auth_tokens: ['valid2'] }); - mapConfigNamedLayersAdapter.getMapConfig(username, multipleLayersNamedMapLayerConfig, pgConnection, + mapConfigNamedLayersAdapter.getMapConfig(username, multipleLayersNamedMapLayerConfig, params, context, function(err, mapConfig, datasource) { assert.ok(!err); var layers = mapConfig.layers; From 31a0b01a27e97b70c9848ac79685ea3528b1da79 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 18:08:42 +0200 Subject: [PATCH 05/17] Rename param --- .../models/mapconfig/adapter/mapconfig-overviews-adapter.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index a438d0ca..9c2dc062 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -9,7 +9,7 @@ function MapConfigOverviewsAdapter(overviewsMetadataApi, filterStatsApi) { module.exports = MapConfigOverviewsAdapter; -MapConfigOverviewsAdapter.prototype.getMapConfig = function(username, requestMapConfig, analysesResults, callback) { +MapConfigOverviewsAdapter.prototype.getMapConfig = function(user, requestMapConfig, analysesResults, callback) { var self = this; var layers = requestMapConfig.layers; @@ -24,7 +24,7 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function(username, requestMap if ( layer.type !== 'mapnik' && layer.type !== 'cartodb' ) { return done(null, layer); } - self.overviewsMetadataApi.getOverviewsMetadata(username, layer.options.sql, function(err, metadata){ + self.overviewsMetadataApi.getOverviewsMetadata(user, layer.options.sql, function(err, metadata){ if (err) { done(err, layer); } else { @@ -53,7 +53,7 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function(username, requestMap var next_step = this; if ( filters ) { self.filterStatsApi.getFilterStats( - username, + user, unfiltered_query, filters, function(err, stats) { if ( !err ) { From 7ad8a993737b057f2b29a46d772b75bec18bf69e Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 18:35:16 +0200 Subject: [PATCH 06/17] Unify getMapConfig signature for overviews adapter --- lib/cartodb/controllers/map.js | 3 ++- .../mapconfig/adapter/mapconfig-overviews-adapter.js | 3 ++- .../models/mapconfig/provider/named-map-provider.js | 4 ++-- test/integration/mapconfig_overviews_adapter.js | 10 ++++++++-- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 80150699..c573a298 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -182,7 +182,8 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { function addOverviewsInformation(err, requestMapConfig, datasource) { assert.ifError(err); var next = this; - self.overviewsAdapter.getMapConfig(req.context.user, requestMapConfig, analysesResults, + context.analysesResults = analysesResults; + self.overviewsAdapter.getMapConfig(req.context.user, requestMapConfig, req.params, context, function(err, requestMapConfig) { if (err) { return next(err); diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 9c2dc062..b8a473b5 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -9,10 +9,11 @@ function MapConfigOverviewsAdapter(overviewsMetadataApi, filterStatsApi) { module.exports = MapConfigOverviewsAdapter; -MapConfigOverviewsAdapter.prototype.getMapConfig = function(user, requestMapConfig, analysesResults, callback) { +MapConfigOverviewsAdapter.prototype.getMapConfig = function(user, requestMapConfig, params, context, callback) { var self = this; var layers = requestMapConfig.layers; + var analysesResults = context.analysesResults; if (!layers || layers.length === 0) { return callback(null, requestMapConfig); diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index c9755fed..8597a07e 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -139,8 +139,8 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { function addOverviewsInformation(err, _mapConfig, datasource) { assert.ifError(err); var next = this; - - self.overviewsAdapter.getMapConfig(self.owner, _mapConfig, self.analysesResults, function(err, _mapConfig) { + context.analysesResults = self.analysesResults; + self.overviewsAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, function(err, _mapConfig) { if (err) { return next(err); } diff --git a/test/integration/mapconfig_overviews_adapter.js b/test/integration/mapconfig_overviews_adapter.js index 6444f18f..87a87935 100644 --- a/test/integration/mapconfig_overviews_adapter.js +++ b/test/integration/mapconfig_overviews_adapter.js @@ -37,7 +37,10 @@ describe('MapConfigOverviewsAdapter', function() { layers: [layer_without_overviews] }; - mapConfigOverviewsAdapter.getMapConfig('localhost', _mapConfig, [], function(err, mapConfig) { + var params = {}; + var context = {}; + + mapConfigOverviewsAdapter.getMapConfig('localhost', _mapConfig, params, context, function(err, mapConfig) { assert.ok(!err); var layers = mapConfig.layers; assert.equal(layers.length, 1); @@ -70,7 +73,10 @@ describe('MapConfigOverviewsAdapter', function() { layers: [layer_with_overviews] }; - mapConfigOverviewsAdapter.getMapConfig('localhost', _mapConfig, [], function(err, mapConfig) { + var params = {}; + var context = {}; + + mapConfigOverviewsAdapter.getMapConfig('localhost', _mapConfig, params, context, function(err, mapConfig) { assert.ok(!err); var layers = mapConfig.layers; assert.equal(layers.length, 1); From a8fdd6726eef012bba4e05540c66e1f192e77940 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 18:36:03 +0200 Subject: [PATCH 07/17] Fix style --- .../mapconfig/provider/named-map-provider.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index 8597a07e..453fcab9 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -140,13 +140,15 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { assert.ifError(err); var next = this; context.analysesResults = self.analysesResults; - self.overviewsAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, function(err, _mapConfig) { - if (err) { - return next(err); - } + self.overviewsAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, + function(err, _mapConfig) { + if (err) { + return next(err); + } - return next(null, _mapConfig, datasource); - }); + return next(null, _mapConfig, datasource); + } + ); }, function parseTurboCarto(err, _mapConfig, datasource) { assert.ifError(err); From a11cc28dc7ee1ae3cbda97cf1e3ec9e19eb7f7c7 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 18:59:23 +0200 Subject: [PATCH 08/17] Use context for analyses results --- lib/cartodb/controllers/map.js | 20 ++++++++++--------- .../adapter/analysis-mapconfig-adapter.js | 4 +++- .../mapconfig/provider/named-map-provider.js | 20 ++++++++++--------- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index c573a298..5f7d0894 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -134,7 +134,6 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { var self = this; var mapConfig; - var analysesResults = []; var user = req.context.user; var context = {}; @@ -144,11 +143,7 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { self.req2params(req, this); }, prepareConfigFn, - function prepareSqlWrap(err, requestMapConfig) { - assert.ifError(err); - self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, req.params, context, this); - }, - function prepareAnalysisLayers(err, requestMapConfig) { + function prepareAdapterMapConfig(err, requestMapConfig) { assert.ifError(err); context.analysisConfiguration = { db: { @@ -163,12 +158,19 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { apiKey: req.params.api_key } }; + return requestMapConfig; + }, + function prepareSqlWrap(err, requestMapConfig) { + assert.ifError(err); + self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, req.params, context, this); + }, + function prepareAnalysisLayers(err, requestMapConfig) { + assert.ifError(err); self.analysisMapConfigAdapter.getMapConfig(user, requestMapConfig, req.params, context, this); }, - function beforeLayergroupCreate(err, requestMapConfig, _analysesResults) { + function beforeLayergroupCreate(err, requestMapConfig) { assert.ifError(err); var next = this; - analysesResults = _analysesResults; self.namedLayersAdapter.getMapConfig(user, requestMapConfig, req.params, context, function(err, requestMapConfig, datasource) { if (err) { @@ -182,7 +184,6 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { function addOverviewsInformation(err, requestMapConfig, datasource) { assert.ifError(err); var next = this; - context.analysesResults = analysesResults; self.overviewsAdapter.getMapConfig(req.context.user, requestMapConfig, req.params, context, function(err, requestMapConfig) { if (err) { @@ -218,6 +219,7 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { }, function afterLayergroupCreate(err, layergroup) { assert.ifError(err); + var analysesResults = context.analysesResults || []; self.afterLayergroupCreate(req, res, mapConfig, analysesResults, layergroup, this); }, function finish(err, layergroup) { diff --git a/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js b/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js index 0b61be80..c48de8a4 100644 --- a/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js @@ -178,7 +178,9 @@ AnalysisMapConfigAdapter.prototype.getMapConfig = function(user, requestMapConfi return callback(missingNodesErrors); } - return callback(null, requestMapConfig, analysesResults); + context.analysesResults = analysesResults; + + return callback(null, requestMapConfig); }); }; diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index 453fcab9..da17c93a 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -100,11 +100,7 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { assert.ifError(err); return self.templateMaps.instance(self.template, templateParams); }, - function prepareSqlWrap(err, requestMapConfig) { - assert.ifError(err); - self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, rendererParams, context, this); - }, - function prepareAnalysisLayers(err, requestMapConfig) { + function prepareAdapterMapConfig(err, requestMapConfig) { assert.ifError(err); context.analysisConfiguration = { db: { @@ -119,13 +115,20 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { apiKey: apiKey } }; - + return requestMapConfig; + }, + function prepareSqlWrap(err, requestMapConfig) { + assert.ifError(err); + self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, rendererParams, context, this); + }, + function prepareAnalysisLayers(err, requestMapConfig) { + assert.ifError(err); self.analysisMapConfigAdapter.getMapConfig(user, requestMapConfig, rendererParams, context, this); }, - function prepareLayergroup(err, _mapConfig, analysesResults) { + function prepareLayergroup(err, _mapConfig) { assert.ifError(err); var next = this; - self.analysesResults = analysesResults || []; + self.analysesResults = context.analysesResults || []; self.namedLayersAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, function(err, _mapConfig, datasource) { if (err) { @@ -139,7 +142,6 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { function addOverviewsInformation(err, _mapConfig, datasource) { assert.ifError(err); var next = this; - context.analysesResults = self.analysesResults; self.overviewsAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, function(err, _mapConfig) { if (err) { From e9d1951d48be400598c8626190184ae6e0cb019d Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 19:09:57 +0200 Subject: [PATCH 09/17] Use context for datasource 1/2 --- lib/cartodb/controllers/map.js | 5 +-- .../adapter/mapconfig-named-layers-adapter.js | 6 ++-- .../mapconfig/provider/named-map-provider.js | 5 ++- .../mapconfig_named_layers_datasource.js | 2 +- .../mapconfig_named_layers_expanded.js | 36 +++++++++---------- 5 files changed, 28 insertions(+), 26 deletions(-) diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 5f7d0894..c3f698da 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -208,9 +208,10 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { } ); }, - function createLayergroup(err, requestMapConfig, datasource) { + function createLayergroup(err, requestMapConfig) { assert.ifError(err); - mapConfig = new MapConfig(requestMapConfig, datasource || Datasource.EmptyDatasource()); + var datasource = context.datasource || Datasource.EmptyDatasource(); + mapConfig = new MapConfig(requestMapConfig, datasource); self.mapBackend.createLayergroup( mapConfig, req.params, new CreateLayergroupMapConfigProvider(mapConfig, req.context.user, self.userLimitsApi, req.params), diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-named-layers-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-named-layers-adapter.js index 8716bd9d..fd00e344 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-named-layers-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-named-layers-adapter.js @@ -100,8 +100,9 @@ MapConfigNamedLayersAdapter.prototype.getMapConfig = function (user, requestMapC }); requestMapConfig.layers = layers; + context.datasource = datasourceBuilder.build(); - return callback(null, requestMapConfig, datasourceBuilder.build()); + return callback(null, requestMapConfig); } @@ -119,7 +120,8 @@ MapConfigNamedLayersAdapter.prototype.getMapConfig = function (user, requestMapC adaptLayersQueue.awaitAll(layersAdaptQueueFinish); }); } else { - return callback(null, requestMapConfig, datasourceBuilder.build()); + context.datasource = datasourceBuilder.build(); + return callback(null, requestMapConfig); } }; diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index da17c93a..73298b98 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -166,15 +166,14 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { } ); }, - function prepareContextLimits(err, _mapConfig, _datasource) { + function prepareContextLimits(err, _mapConfig) { assert.ifError(err); mapConfig = _mapConfig; - datasource = _datasource; self.userLimitsApi.getRenderLimits(self.owner, this); }, function cacheAndReturnMapConfig(err, renderLimits) { self.err = err; - self.mapConfig = (mapConfig === null) ? null : new MapConfig(mapConfig, datasource); + self.mapConfig = (mapConfig === null) ? null : new MapConfig(mapConfig, context.datasource); self.rendererParams = rendererParams; self.context.limits = renderLimits || {}; return callback(self.err, self.mapConfig, self.rendererParams, self.context); diff --git a/test/integration/mapconfig_named_layers_datasource.js b/test/integration/mapconfig_named_layers_datasource.js index ec37dddd..f644c3c5 100644 --- a/test/integration/mapconfig_named_layers_datasource.js +++ b/test/integration/mapconfig_named_layers_datasource.js @@ -298,7 +298,7 @@ describe('named_layers datasources', function() { var context = {}; mapConfigNamedLayersAdapter.getMapConfig(username, testScenario.config, params, context, function(err, mapConfig, datasource) { - testScenario.test(err, mapConfig.layers, datasource, done); + testScenario.test(err, mapConfig.layers, context.datasource, done); } ); }); diff --git a/test/integration/mapconfig_named_layers_expanded.js b/test/integration/mapconfig_named_layers_expanded.js index 54245313..fd542514 100644 --- a/test/integration/mapconfig_named_layers_expanded.js +++ b/test/integration/mapconfig_named_layers_expanded.js @@ -150,10 +150,10 @@ describe('mapconfig-named-layers-adapter', function() { config: {} }); mapConfigNamedLayersAdapter.getMapConfig(username, missingNamedMapLayerConfig, params, context, - function(err, mapConfig, datasource) { + function(err, mapConfig) { assert.ok(err); assert.ok(!mapConfig); - assert.ok(!datasource); + assert.ok(!context.datasource); assert.equal(err.message, 'Missing Named Map `name` in layer options'); done(); @@ -167,10 +167,10 @@ describe('mapconfig-named-layers-adapter', function() { name: missingTemplateName }); mapConfigNamedLayersAdapter.getMapConfig(username, nonExistentNamedMapLayerConfig, params, context, - function(err, mapConfig, datasource) { + function(err, mapConfig) { assert.ok(err); assert.ok(!mapConfig); - assert.ok(!datasource); + assert.ok(!context.datasource); assert.equal( err.message, "Template '" + missingTemplateName + "' of user '" + username + "' not found" ); @@ -190,10 +190,10 @@ describe('mapconfig-named-layers-adapter', function() { name: tokenAuthTemplateName }); mapConfigNamedLayersAdapter.getMapConfig(username, nonAuthTokensNamedMapLayerConfig, params, context, - function(err, mapConfig, datasource) { + function(err, mapConfig) { assert.ok(err); assert.ok(!mapConfig); - assert.ok(!datasource); + assert.ok(!context.datasource); assert.equal(err.message, "Unauthorized '" + tokenAuthTemplateName + "' template instantiation"); templateMaps.delTemplate(username, tokenAuthTemplateName, done); @@ -212,10 +212,10 @@ describe('mapconfig-named-layers-adapter', function() { name: nestedNamedMapTemplateName }); mapConfigNamedLayersAdapter.getMapConfig(username, nestedNamedMapLayerConfig, params, context, - function(err, mapConfig, datasource) { + function(err, mapConfig) { assert.ok(err); assert.ok(!mapConfig); - assert.ok(!datasource); + assert.ok(!context.datasource); assert.equal(err.message, 'Nested named layers are not allowed'); templateMaps.delTemplate(username, nestedNamedMapTemplateName, done); @@ -229,12 +229,12 @@ describe('mapconfig-named-layers-adapter', function() { name: templateName }); mapConfigNamedLayersAdapter.getMapConfig(username, validNamedMapMapLayerConfig, params, context, - function(err, mapConfig, datasource) { + function(err, mapConfig) { assert.ok(!err); var layers = mapConfig.layers; assert.ok(layers.length, 1); assert.ok(layers[0].type, 'cartodb'); - assert.notEqual(datasource.getLayerDatasource(0), undefined); + assert.notEqual(context.datasource.getLayerDatasource(0), undefined); done(); } @@ -252,11 +252,11 @@ describe('mapconfig-named-layers-adapter', function() { auth_tokens: ['valid1'] }); mapConfigNamedLayersAdapter.getMapConfig(username, validAuthTokensNamedMapLayerConfig, params, context, - function(err, mapConfig, datasource) { + function(err, mapConfig) { assert.ok(!err); var layers = mapConfig.layers; assert.equal(layers.length, 1); - assert.notEqual(datasource.getLayerDatasource(0), undefined); + assert.notEqual(context.datasource.getLayerDatasource(0), undefined); templateMaps.delTemplate(username, tokenAuthTemplateName, done); } @@ -275,18 +275,18 @@ describe('mapconfig-named-layers-adapter', function() { auth_tokens: ['valid2'] }); mapConfigNamedLayersAdapter.getMapConfig(username, multipleLayersNamedMapLayerConfig, params, context, - function(err, mapConfig, datasource) { + function(err, mapConfig) { assert.ok(!err); var layers = mapConfig.layers; assert.equal(layers.length, 2); assert.equal(layers[0].type, 'mapnik'); assert.equal(layers[0].options.cartocss, '#layer { polygon-fill: green; }'); - assert.notEqual(datasource.getLayerDatasource(0), undefined); + assert.notEqual(context.datasource.getLayerDatasource(0), undefined); assert.equal(layers[1].type, 'cartodb'); assert.equal(layers[1].options.cartocss, '#layer { marker-fill: red; }'); - assert.notEqual(datasource.getLayerDatasource(1), undefined); + assert.notEqual(context.datasource.getLayerDatasource(1), undefined); templateMaps.delTemplate(username, multipleLayersTemplateName, done); } @@ -312,18 +312,18 @@ describe('mapconfig-named-layers-adapter', function() { auth_tokens: ['valid2'] }); mapConfigNamedLayersAdapter.getMapConfig(username, multipleLayersNamedMapLayerConfig, params, context, - function(err, mapConfig, datasource) { + function(err, mapConfig) { assert.ok(!err); var layers = mapConfig.layers; assert.equal(layers.length, 2); assert.equal(layers[0].type, 'mapnik'); assert.equal(layers[0].options.cartocss, '#layer { polygon-fill: ' + polygonColor + '; }'); - assert.notEqual(datasource.getLayerDatasource(0), undefined); + assert.notEqual(context.datasource.getLayerDatasource(0), undefined); assert.equal(layers[1].type, 'cartodb'); assert.equal(layers[1].options.cartocss, '#layer { marker-fill: ' + color + '; }'); - assert.notEqual(datasource.getLayerDatasource(1), undefined); + assert.notEqual(context.datasource.getLayerDatasource(1), undefined); templateMaps.delTemplate(username, multipleLayersTemplateName, done); } From 02cb80daa181bc512ba00391ecd6741ec73632b5 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 19:14:03 +0200 Subject: [PATCH 10/17] Use context for datasource 2/2 --- lib/cartodb/controllers/map.js | 38 +++--------------- .../mapconfig/provider/named-map-provider.js | 39 +++---------------- 2 files changed, 10 insertions(+), 67 deletions(-) diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index c3f698da..ecce9632 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -170,43 +170,15 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { }, function beforeLayergroupCreate(err, requestMapConfig) { assert.ifError(err); - var next = this; - self.namedLayersAdapter.getMapConfig(user, requestMapConfig, req.params, context, - function(err, requestMapConfig, datasource) { - if (err) { - return next(err); - } - - return next(null, requestMapConfig, datasource); - } - ); + self.namedLayersAdapter.getMapConfig(user, requestMapConfig, req.params, context, this); }, - function addOverviewsInformation(err, requestMapConfig, datasource) { + function addOverviewsInformation(err, requestMapConfig) { assert.ifError(err); - var next = this; - self.overviewsAdapter.getMapConfig(req.context.user, requestMapConfig, req.params, context, - function(err, requestMapConfig) { - if (err) { - return next(err); - } - - return next(null, requestMapConfig, datasource); - } - ); + self.overviewsAdapter.getMapConfig(req.context.user, requestMapConfig, req.params, context, this); }, - function parseTurboCarto(err, requestMapConfig, datasource) { + function parseTurboCarto(err, requestMapConfig) { assert.ifError(err); - - var next = this; - self.turboCartoAdapter.getMapConfig(req.context.user, requestMapConfig, req.params, context, - function (err, requestMapConfig) { - if (err) { - return next(err); - } - - return next(null, requestMapConfig, datasource); - } - ); + self.turboCartoAdapter.getMapConfig(req.context.user, requestMapConfig, req.params, context, this); }, function createLayergroup(err, requestMapConfig) { assert.ifError(err); diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index 73298b98..67522669 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -56,7 +56,6 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { var self = this; var mapConfig = null; - var datasource = null; var rendererParams; var apiKey; @@ -127,44 +126,16 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { }, function prepareLayergroup(err, _mapConfig) { assert.ifError(err); - var next = this; self.analysesResults = context.analysesResults || []; - self.namedLayersAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, - function(err, _mapConfig, datasource) { - if (err) { - return next(err); - } - - return next(null, _mapConfig, datasource); - } - ); + self.namedLayersAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, this); }, - function addOverviewsInformation(err, _mapConfig, datasource) { + function addOverviewsInformation(err, _mapConfig) { assert.ifError(err); - var next = this; - self.overviewsAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, - function(err, _mapConfig) { - if (err) { - return next(err); - } - - return next(null, _mapConfig, datasource); - } - ); + self.overviewsAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, this); }, - function parseTurboCarto(err, _mapConfig, datasource) { + function parseTurboCarto(err, _mapConfig) { assert.ifError(err); - var next = this; - - self.turboCartoAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, - function (err, _mapConfig) { - if (err) { - return next(err); - } - - return next(null, _mapConfig, datasource); - } - ); + self.turboCartoAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, this); }, function prepareContextLimits(err, _mapConfig) { assert.ifError(err); From 8efe84447436f2b5e04eb3bcb9d76dd6009f05a0 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 21:37:06 +0200 Subject: [PATCH 11/17] Use generic adapter --- lib/cartodb/controllers/map.js | 32 ++++++------------- lib/cartodb/models/mapconfig/adapter/index.js | 26 +++++++++++++++ 2 files changed, 36 insertions(+), 22 deletions(-) create mode 100644 lib/cartodb/models/mapconfig/adapter/index.js diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index ecce9632..4646eac3 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -20,6 +20,7 @@ var AnalysisMapConfigAdapter = require('../models/mapconfig/adapter/analysis-map var NamedMapMapConfigProvider = require('../models/mapconfig/provider/named-map-provider'); var CreateLayergroupMapConfigProvider = require('../models/mapconfig/provider/create-layergroup-provider'); var SqlWrapMapConfigAdapter = require('../models/mapconfig/adapter/sql-wrap-mapconfig-adapter'); +var MapConfigAdapter = require('../models/mapconfig/adapter'); /** * @param {AuthApi} authApi @@ -54,6 +55,14 @@ function MapController(authApi, pgConnection, templateMaps, mapBackend, metadata this.namedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps, pgConnection); this.overviewsAdapter = overviewsAdapter; this.sqlWrapMapConfigAdapter = new SqlWrapMapConfigAdapter(); + + this.mapConfigAdapter = new MapConfigAdapter([ + this.sqlWrapMapConfigAdapter, + this.analysisMapConfigAdapter, + this.namedLayersAdapter, + this.overviewsAdapter, + this.turboCartoAdapter + ]); } util.inherits(MapController, BaseController); @@ -135,7 +144,6 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { var mapConfig; - var user = req.context.user; var context = {}; step( @@ -158,27 +166,7 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { apiKey: req.params.api_key } }; - return requestMapConfig; - }, - function prepareSqlWrap(err, requestMapConfig) { - assert.ifError(err); - self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, req.params, context, this); - }, - function prepareAnalysisLayers(err, requestMapConfig) { - assert.ifError(err); - self.analysisMapConfigAdapter.getMapConfig(user, requestMapConfig, req.params, context, this); - }, - function beforeLayergroupCreate(err, requestMapConfig) { - assert.ifError(err); - self.namedLayersAdapter.getMapConfig(user, requestMapConfig, req.params, context, this); - }, - function addOverviewsInformation(err, requestMapConfig) { - assert.ifError(err); - self.overviewsAdapter.getMapConfig(req.context.user, requestMapConfig, req.params, context, this); - }, - function parseTurboCarto(err, requestMapConfig) { - assert.ifError(err); - self.turboCartoAdapter.getMapConfig(req.context.user, requestMapConfig, req.params, context, this); + self.mapConfigAdapter.getMapConfig(req.context.user, requestMapConfig, req.params, context, this); }, function createLayergroup(err, requestMapConfig) { assert.ifError(err); diff --git a/lib/cartodb/models/mapconfig/adapter/index.js b/lib/cartodb/models/mapconfig/adapter/index.js new file mode 100644 index 00000000..f7b49ebc --- /dev/null +++ b/lib/cartodb/models/mapconfig/adapter/index.js @@ -0,0 +1,26 @@ +'use strict'; + +function MapConfigAdapter(adapters) { + this.adapters = adapters; +} + +module.exports = MapConfigAdapter; + +MapConfigAdapter.prototype.getMapConfig = function(user, requestMapConfig, params, context, callback) { + var self = this; + var i = 0; + var tasksLeft = this.adapters.length; + + function next(err, _requestMapConfig) { + if (err) { + return callback(err); + } + if (tasksLeft-- === 0) { + return callback(null, _requestMapConfig); + } + var nextAdapter = self.adapters[i++]; + nextAdapter.getMapConfig(user, _requestMapConfig, params, context, next); + } + + next(null, requestMapConfig); +}; From 9ce4929d875e78b5a671b18beb07ab1ffd88d94d Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 21:56:38 +0200 Subject: [PATCH 12/17] Use generic adapter in named maps --- .../mapconfig/provider/named-map-provider.js | 33 +++++++------------ 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index 67522669..598162ba 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -7,6 +7,7 @@ var MapConfig = require('windshaft').model.MapConfig; var templateName = require('../../../backends/template_maps').templateName; var QueryTables = require('cartodb-query-tables'); var SqlWrapMapConfigAdapter = require('./../adapter/sql-wrap-mapconfig-adapter'); +var MapConfigAdapter = require('./../adapter'); /** * @constructor @@ -25,6 +26,14 @@ function NamedMapMapConfigProvider(templateMaps, pgConnection, metadataBackend, this.overviewsAdapter = overviewsAdapter; this.sqlWrapMapConfigAdapter = new SqlWrapMapConfigAdapter(); + this.mapConfigAdapter = new MapConfigAdapter([ + this.sqlWrapMapConfigAdapter, + this.analysisMapConfigAdapter, + this.namedLayersAdapter, + this.overviewsAdapter, + this.turboCartoAdapter + ]); + this.owner = owner; this.templateName = templateName(templateId); this.config = config; @@ -114,28 +123,7 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { apiKey: apiKey } }; - return requestMapConfig; - }, - function prepareSqlWrap(err, requestMapConfig) { - assert.ifError(err); - self.sqlWrapMapConfigAdapter.getMapConfig(user, requestMapConfig, rendererParams, context, this); - }, - function prepareAnalysisLayers(err, requestMapConfig) { - assert.ifError(err); - self.analysisMapConfigAdapter.getMapConfig(user, requestMapConfig, rendererParams, context, this); - }, - function prepareLayergroup(err, _mapConfig) { - assert.ifError(err); - self.analysesResults = context.analysesResults || []; - self.namedLayersAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, this); - }, - function addOverviewsInformation(err, _mapConfig) { - assert.ifError(err); - self.overviewsAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, this); - }, - function parseTurboCarto(err, _mapConfig) { - assert.ifError(err); - self.turboCartoAdapter.getMapConfig(self.owner, _mapConfig, rendererParams, context, this); + self.mapConfigAdapter.getMapConfig(self.owner, requestMapConfig, rendererParams, context, this); }, function prepareContextLimits(err, _mapConfig) { assert.ifError(err); @@ -145,6 +133,7 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { function cacheAndReturnMapConfig(err, renderLimits) { self.err = err; self.mapConfig = (mapConfig === null) ? null : new MapConfig(mapConfig, context.datasource); + self.analysesResults = context.analysesResults || []; self.rendererParams = rendererParams; self.context.limits = renderLimits || {}; return callback(self.err, self.mapConfig, self.rendererParams, self.context); From f012e6092fe76a7b4de7322553b144af68dfe46c Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 21:58:42 +0200 Subject: [PATCH 13/17] Remove unused var --- lib/cartodb/models/mapconfig/provider/named-map-provider.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index 598162ba..94d6356e 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -68,7 +68,6 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { var rendererParams; var apiKey; - var user = this.owner; var context = {}; step( From 4137de5adf4c52f7094bbf98def320f8295ef2b3 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 22:01:08 +0200 Subject: [PATCH 14/17] Remove class members --- .../mapconfig/provider/named-map-provider.js | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index 94d6356e..f9c97e09 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -20,18 +20,13 @@ function NamedMapMapConfigProvider(templateMaps, pgConnection, metadataBackend, this.pgConnection = pgConnection; this.metadataBackend = metadataBackend; this.userLimitsApi = userLimitsApi; - this.namedLayersAdapter = namedLayersAdapter; - this.turboCartoAdapter = turboCartoAdapter; - this.analysisMapConfigAdapter = analysisMapConfigAdapter; - this.overviewsAdapter = overviewsAdapter; - this.sqlWrapMapConfigAdapter = new SqlWrapMapConfigAdapter(); this.mapConfigAdapter = new MapConfigAdapter([ - this.sqlWrapMapConfigAdapter, - this.analysisMapConfigAdapter, - this.namedLayersAdapter, - this.overviewsAdapter, - this.turboCartoAdapter + new SqlWrapMapConfigAdapter(), + analysisMapConfigAdapter, + namedLayersAdapter, + overviewsAdapter, + turboCartoAdapter ]); this.owner = owner; From a785ebef652b17f3001784a82360b94330fda765 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 23:29:06 +0200 Subject: [PATCH 15/17] Use generic map config adapter --- lib/cartodb/cache/named_map_provider_cache.js | 16 +++----------- lib/cartodb/controllers/map.js | 5 +---- .../mapconfig/provider/named-map-provider.js | 14 ++----------- lib/cartodb/server.js | 21 ++++++++++++++----- 4 files changed, 22 insertions(+), 34 deletions(-) diff --git a/lib/cartodb/cache/named_map_provider_cache.js b/lib/cartodb/cache/named_map_provider_cache.js index ddfea4a2..ebafbbac 100644 --- a/lib/cartodb/cache/named_map_provider_cache.js +++ b/lib/cartodb/cache/named_map_provider_cache.js @@ -1,24 +1,17 @@ var _ = require('underscore'); var dot = require('dot'); var NamedMapMapConfigProvider = require('../models/mapconfig/provider/named-map-provider'); -var MapConfigNamedLayersAdapter = require('../models/mapconfig/adapter/mapconfig-named-layers-adapter'); -var AnalysisMapConfigAdapter = require('../models/mapconfig/adapter/analysis-mapconfig-adapter'); var templateName = require('../backends/template_maps').templateName; var queue = require('queue-async'); var LruCache = require("lru-cache"); -function NamedMapProviderCache(templateMaps, pgConnection, metadataBackend, analysisBackend, userLimitsApi, - overviewsAdapter, turboCartoAdapter) { +function NamedMapProviderCache(templateMaps, pgConnection, metadataBackend, userLimitsApi, mapConfigAdapter) { this.templateMaps = templateMaps; this.pgConnection = pgConnection; this.metadataBackend = metadataBackend; this.userLimitsApi = userLimitsApi; - - this.namedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps, pgConnection); - this.analysisMapConfigAdapter = new AnalysisMapConfigAdapter(analysisBackend); - this.overviewsAdapter = overviewsAdapter; - this.turboCartoAdapter = turboCartoAdapter; + this.mapConfigAdapter = mapConfigAdapter; this.providerCache = new LruCache({ max: 2000 }); } @@ -36,10 +29,7 @@ NamedMapProviderCache.prototype.get = function(user, templateId, config, authTok this.pgConnection, this.metadataBackend, this.userLimitsApi, - this.namedLayersAdapter, - this.overviewsAdapter, - this.turboCartoAdapter, - this.analysisMapConfigAdapter, + this.mapConfigAdapter, user, templateId, config, diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 4646eac3..66b42e7b 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -218,10 +218,7 @@ MapController.prototype.instantiateTemplate = function(req, res, prepareParamsFn self.pgConnection, self.metadataBackend, self.userLimitsApi, - self.namedLayersAdapter, - self.overviewsAdapter, - self.turboCartoAdapter, - self.analysisMapConfigAdapter, + self.mapConfigAdapter, cdbuser, req.params.template_id, templateParams, diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index f9c97e09..7c9c0dc5 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -6,28 +6,18 @@ var step = require('step'); var MapConfig = require('windshaft').model.MapConfig; var templateName = require('../../../backends/template_maps').templateName; var QueryTables = require('cartodb-query-tables'); -var SqlWrapMapConfigAdapter = require('./../adapter/sql-wrap-mapconfig-adapter'); -var MapConfigAdapter = require('./../adapter'); /** * @constructor * @type {NamedMapMapConfigProvider} */ -function NamedMapMapConfigProvider(templateMaps, pgConnection, metadataBackend, userLimitsApi, - namedLayersAdapter, overviewsAdapter, turboCartoAdapter, analysisMapConfigAdapter, +function NamedMapMapConfigProvider(templateMaps, pgConnection, metadataBackend, userLimitsApi, mapConfigAdapter, owner, templateId, config, authToken, params) { this.templateMaps = templateMaps; this.pgConnection = pgConnection; this.metadataBackend = metadataBackend; this.userLimitsApi = userLimitsApi; - - this.mapConfigAdapter = new MapConfigAdapter([ - new SqlWrapMapConfigAdapter(), - analysisMapConfigAdapter, - namedLayersAdapter, - overviewsAdapter, - turboCartoAdapter - ]); + this.mapConfigAdapter = mapConfigAdapter; this.owner = owner; this.templateName = templateName(templateId); diff --git a/lib/cartodb/server.js b/lib/cartodb/server.js index cb8cc452..cc3ac029 100644 --- a/lib/cartodb/server.js +++ b/lib/cartodb/server.js @@ -34,11 +34,16 @@ var AnalysisBackend = require('./backends/analysis'); var timeoutErrorTilePath = __dirname + '/../../assets/render-timeout-fallback.png'; var timeoutErrorTile = require('fs').readFileSync(timeoutErrorTilePath, {encoding: null}); -var MapConfigOverviewsAdapter = require('./models/mapconfig/adapter/mapconfig-overviews-adapter'); - var TurboCartoParser = require('./utils/style/turbo-carto-parser'); + +var SqlWrapMapConfigAdapter = require('./models/mapconfig/adapter/sql-wrap-mapconfig-adapter'); +var MapConfigNamedLayersAdapter = require('./models/mapconfig/adapter/mapconfig-named-layers-adapter'); +var AnalysisMapConfigAdapter = require('./models/mapconfig/adapter/analysis-mapconfig-adapter'); +var MapConfigOverviewsAdapter = require('./models/mapconfig/adapter/mapconfig-overviews-adapter'); var TurboCartoAdapter = require('./models/mapconfig/adapter/turbo-carto-adapter'); +var MapConfigAdapter = require('./models/mapconfig/adapter'); + module.exports = function(serverOptions) { // Make stats client globally accessible global.statsClient = StatsClient.getInstance(serverOptions.statsd); @@ -155,14 +160,20 @@ module.exports = function(serverOptions) { var turboCartoParser = new TurboCartoParser(pgQueryRunner); var turboCartoAdapter = new TurboCartoAdapter(turboCartoParser); + var mapConfigAdapter = new MapConfigAdapter([ + new SqlWrapMapConfigAdapter(), + new AnalysisMapConfigAdapter(analysisBackend), + new MapConfigNamedLayersAdapter(templateMaps, pgConnection), + overviewsAdapter, + turboCartoAdapter + ]); + var namedMapProviderCache = new NamedMapProviderCache( templateMaps, pgConnection, metadataBackend, - analysisBackend, userLimitsApi, - overviewsAdapter, - turboCartoAdapter + mapConfigAdapter ); ['update', 'delete'].forEach(function(eventType) { From 5e6529363bab0b2638eb4245532a70c78e59ddd5 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 23:29:41 +0200 Subject: [PATCH 16/17] Remove unused var --- test/integration/mapconfig_named_layers_datasource.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/mapconfig_named_layers_datasource.js b/test/integration/mapconfig_named_layers_datasource.js index f644c3c5..aac8d335 100644 --- a/test/integration/mapconfig_named_layers_datasource.js +++ b/test/integration/mapconfig_named_layers_datasource.js @@ -297,7 +297,7 @@ describe('named_layers datasources', function() { var params = {}; var context = {}; mapConfigNamedLayersAdapter.getMapConfig(username, testScenario.config, params, context, - function(err, mapConfig, datasource) { + function(err, mapConfig) { testScenario.test(err, mapConfig.layers, context.datasource, done); } ); From faa24caf5ba303000df04c3953c0613aafe279ff Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 23 May 2016 23:35:42 +0200 Subject: [PATCH 17/17] Use generic map config adapter --- lib/cartodb/controllers/map.js | 25 +++---------------------- lib/cartodb/server.js | 4 +--- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 66b42e7b..32459059 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -15,12 +15,8 @@ var Datasource = windshaft.model.Datasource; var NamedMapsCacheEntry = require('../cache/model/named_maps_entry'); -var MapConfigNamedLayersAdapter = require('../models/mapconfig/adapter/mapconfig-named-layers-adapter'); -var AnalysisMapConfigAdapter = require('../models/mapconfig/adapter/analysis-mapconfig-adapter'); var NamedMapMapConfigProvider = require('../models/mapconfig/provider/named-map-provider'); var CreateLayergroupMapConfigProvider = require('../models/mapconfig/provider/create-layergroup-provider'); -var SqlWrapMapConfigAdapter = require('../models/mapconfig/adapter/sql-wrap-mapconfig-adapter'); -var MapConfigAdapter = require('../models/mapconfig/adapter'); /** * @param {AuthApi} authApi @@ -31,14 +27,11 @@ var MapConfigAdapter = require('../models/mapconfig/adapter'); * @param {SurrogateKeysCache} surrogateKeysCache * @param {UserLimitsApi} userLimitsApi * @param {LayergroupAffectedTables} layergroupAffectedTables - * @param {MapConfigOverviewsAdapter} overviewsAdapter - * @param {TurboCartoAdapter} turboCartoAdapter - * @param {AnalysisBackend} analysisBackend + * @param {MapConfigAdapter} mapConfigAdapter * @constructor */ function MapController(authApi, pgConnection, templateMaps, mapBackend, metadataBackend, - surrogateKeysCache, userLimitsApi, layergroupAffectedTables, - overviewsAdapter, turboCartoAdapter, analysisBackend) { + surrogateKeysCache, userLimitsApi, layergroupAffectedTables, mapConfigAdapter) { BaseController.call(this, authApi, pgConnection); @@ -49,20 +42,8 @@ function MapController(authApi, pgConnection, templateMaps, mapBackend, metadata this.surrogateKeysCache = surrogateKeysCache; this.userLimitsApi = userLimitsApi; this.layergroupAffectedTables = layergroupAffectedTables; - this.turboCartoAdapter = turboCartoAdapter; - this.analysisMapConfigAdapter = new AnalysisMapConfigAdapter(analysisBackend); - this.namedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps, pgConnection); - this.overviewsAdapter = overviewsAdapter; - this.sqlWrapMapConfigAdapter = new SqlWrapMapConfigAdapter(); - - this.mapConfigAdapter = new MapConfigAdapter([ - this.sqlWrapMapConfigAdapter, - this.analysisMapConfigAdapter, - this.namedLayersAdapter, - this.overviewsAdapter, - this.turboCartoAdapter - ]); + this.mapConfigAdapter = mapConfigAdapter; } util.inherits(MapController, BaseController); diff --git a/lib/cartodb/server.js b/lib/cartodb/server.js index cc3ac029..826fe2f8 100644 --- a/lib/cartodb/server.js +++ b/lib/cartodb/server.js @@ -212,9 +212,7 @@ module.exports = function(serverOptions) { surrogateKeysCache, userLimitsApi, layergroupAffectedTablesCache, - overviewsAdapter, - turboCartoAdapter, - analysisBackend + mapConfigAdapter ).register(app); new controller.NamedMaps(