From 1e7071755405d4e96dbbfc09af3149afd2bcfe79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Mon, 30 Jul 2018 17:31:42 +0200 Subject: [PATCH 01/18] indentation --- .../adapter/mapconfig-overviews-adapter.js | 162 +++++++++--------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index a104c592..308b078d 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -9,93 +9,93 @@ function MapConfigOverviewsAdapter(overviewsMetadataBackend, filterStatsBackend) module.exports = MapConfigOverviewsAdapter; -MapConfigOverviewsAdapter.prototype.getMapConfig = function(user, requestMapConfig, params, context, callback) { - var self = this; +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); - } - - var augmentLayersQueue = queue(layers.length); - - function augmentLayer(layer, done) { - if ( layer.type !== 'mapnik' && layer.type !== 'cartodb' ) { - return done(null, layer); - } - self.overviewsMetadataBackend.getOverviewsMetadata(user, layer.options.sql, function(err, metadata){ - if (err) { - done(err, layer); - } else { - var query_rewrite_data = { overviews: metadata }; - step( - function collectFiltersData() { - var filters, unfiltered_query; - if ( layer.options.source && analysesResults && !layer.options.sql_wrap) { - var sourceId = layer.options.source.id; - var node = _.find(analysesResults, function(a){ return a.rootNode.params.id === sourceId; }); - if ( node ) { - node = node.rootNode; - filters = node.getFilters(); - var filters_disabler = Object.keys(filters).reduce( - function(disabler, filter_id){ disabler[filter_id] = false; return disabler; }, - {} - ); - unfiltered_query = node.getQuery(filters_disabler); - query_rewrite_data.filters = filters; - query_rewrite_data.unfiltered_query = unfiltered_query; - } - } - this(null, filters, unfiltered_query); - }, - function collectStatsData(err, filters, unfiltered_query) { - var next_step = this; - if ( filters ) { - self.filterStatsBackend.getFilterStats( - user, - unfiltered_query, filters, - function(err, stats) { - if ( !err ) { - query_rewrite_data.filter_stats = stats; - } - return next_step(err); - } - ); - } else { - return next_step(null); - } - }, - function addDataToLayer(err) { - if ( !err && !_.isEmpty(metadata) ) { - layer = _.extend({}, layer); - layer.options = _.extend({}, layer.options, { query_rewrite_data: query_rewrite_data }); - } - done(null, layer); - } - ); - } - }); - } - - function layersAugmentQueueFinish(err, layers) { - if (err) { - return callback(err); - } + var layers = requestMapConfig.layers; + var analysesResults = context.analysesResults; if (!layers || layers.length === 0) { - return callback(new Error('Missing layers array from layergroup config')); + return callback(null, requestMapConfig); } - requestMapConfig.layers = layers; + var augmentLayersQueue = queue(layers.length); - return callback(null, requestMapConfig); - } + function augmentLayer(layer, done) { + if (layer.type !== 'mapnik' && layer.type !== 'cartodb') { + return done(null, layer); + } + self.overviewsMetadataBackend.getOverviewsMetadata(user, layer.options.sql, function (err, metadata) { + if (err) { + done(err, layer); + } else { + var query_rewrite_data = { overviews: metadata }; + step( + function collectFiltersData() { + var filters, unfiltered_query; + if (layer.options.source && analysesResults && !layer.options.sql_wrap) { + var sourceId = layer.options.source.id; + var node = _.find(analysesResults, function (a) { return a.rootNode.params.id === sourceId; }); + if (node) { + node = node.rootNode; + filters = node.getFilters(); + var filters_disabler = Object.keys(filters).reduce( + function (disabler, filter_id) { disabler[filter_id] = false; return disabler; }, + {} + ); + unfiltered_query = node.getQuery(filters_disabler); + query_rewrite_data.filters = filters; + query_rewrite_data.unfiltered_query = unfiltered_query; + } + } + this(null, filters, unfiltered_query); + }, + function collectStatsData(err, filters, unfiltered_query) { + var next_step = this; + if (filters) { + self.filterStatsBackend.getFilterStats( + user, + unfiltered_query, filters, + function (err, stats) { + if (!err) { + query_rewrite_data.filter_stats = stats; + } + return next_step(err); + } + ); + } else { + return next_step(null); + } + }, + function addDataToLayer(err) { + if (!err && !_.isEmpty(metadata)) { + layer = _.extend({}, layer); + layer.options = _.extend({}, layer.options, { query_rewrite_data: query_rewrite_data }); + } + done(null, layer); + } + ); + } + }); + } - layers.forEach(function(layer) { - augmentLayersQueue.defer(augmentLayer, layer); - }); - augmentLayersQueue.awaitAll(layersAugmentQueueFinish); + function layersAugmentQueueFinish(err, layers) { + if (err) { + return callback(err); + } + + if (!layers || layers.length === 0) { + return callback(new Error('Missing layers array from layergroup config')); + } + + requestMapConfig.layers = layers; + + return callback(null, requestMapConfig); + } + + layers.forEach(function (layer) { + augmentLayersQueue.defer(augmentLayer, layer); + }); + augmentLayersQueue.awaitAll(layersAugmentQueueFinish); }; From 1f6bb6839a90aaf824d1a39f02c2ae667cd6df95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Mon, 30 Jul 2018 17:32:57 +0200 Subject: [PATCH 02/18] remove step --- .../adapter/mapconfig-overviews-adapter.js | 84 +++++++++---------- 1 file changed, 41 insertions(+), 43 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 308b078d..c8df8b21 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -1,4 +1,3 @@ -var step = require('step'); var queue = require('queue-async'); var _ = require('underscore'); @@ -30,51 +29,50 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon done(err, layer); } else { var query_rewrite_data = { overviews: metadata }; - step( - function collectFiltersData() { - var filters, unfiltered_query; - if (layer.options.source && analysesResults && !layer.options.sql_wrap) { - var sourceId = layer.options.source.id; - var node = _.find(analysesResults, function (a) { return a.rootNode.params.id === sourceId; }); - if (node) { - node = node.rootNode; - filters = node.getFilters(); - var filters_disabler = Object.keys(filters).reduce( - function (disabler, filter_id) { disabler[filter_id] = false; return disabler; }, - {} - ); - unfiltered_query = node.getQuery(filters_disabler); - query_rewrite_data.filters = filters; - query_rewrite_data.unfiltered_query = unfiltered_query; - } - } - this(null, filters, unfiltered_query); - }, - function collectStatsData(err, filters, unfiltered_query) { - var next_step = this; - if (filters) { - self.filterStatsBackend.getFilterStats( - user, - unfiltered_query, filters, - function (err, stats) { - if (!err) { - query_rewrite_data.filter_stats = stats; - } - return next_step(err); - } + + function collectFiltersData() { + var filters, unfiltered_query; + if (layer.options.source && analysesResults && !layer.options.sql_wrap) { + var sourceId = layer.options.source.id; + var node = _.find(analysesResults, function (a) { return a.rootNode.params.id === sourceId; }); + if (node) { + node = node.rootNode; + filters = node.getFilters(); + var filters_disabler = Object.keys(filters).reduce( + function (disabler, filter_id) { disabler[filter_id] = false; return disabler; }, + {} ); - } else { - return next_step(null); + unfiltered_query = node.getQuery(filters_disabler); + query_rewrite_data.filters = filters; + query_rewrite_data.unfiltered_query = unfiltered_query; } - }, - function addDataToLayer(err) { - if (!err && !_.isEmpty(metadata)) { - layer = _.extend({}, layer); - layer.options = _.extend({}, layer.options, { query_rewrite_data: query_rewrite_data }); - } - done(null, layer); } - ); + this(null, filters, unfiltered_query); + }, + function collectStatsData(err, filters, unfiltered_query) { + var next_step = this; + if (filters) { + self.filterStatsBackend.getFilterStats( + user, + unfiltered_query, filters, + function (err, stats) { + if (!err) { + query_rewrite_data.filter_stats = stats; + } + return next_step(err); + } + ); + } else { + return next_step(null); + } + }, + function addDataToLayer(err) { + if (!err && !_.isEmpty(metadata)) { + layer = _.extend({}, layer); + layer.options = _.extend({}, layer.options, { query_rewrite_data: query_rewrite_data }); + } + done(null, layer); + } } }); } From a89131c043f2321997b6ee175c6890cf97894734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Mon, 30 Jul 2018 17:34:14 +0200 Subject: [PATCH 03/18] remove step: function 1 --- .../adapter/mapconfig-overviews-adapter.js | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index c8df8b21..9bae339b 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -30,25 +30,23 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon } else { var query_rewrite_data = { overviews: metadata }; - function collectFiltersData() { - var filters, unfiltered_query; - if (layer.options.source && analysesResults && !layer.options.sql_wrap) { - var sourceId = layer.options.source.id; - var node = _.find(analysesResults, function (a) { return a.rootNode.params.id === sourceId; }); - if (node) { - node = node.rootNode; - filters = node.getFilters(); - var filters_disabler = Object.keys(filters).reduce( - function (disabler, filter_id) { disabler[filter_id] = false; return disabler; }, - {} - ); - unfiltered_query = node.getQuery(filters_disabler); - query_rewrite_data.filters = filters; - query_rewrite_data.unfiltered_query = unfiltered_query; - } + var filters, unfiltered_query; + if (layer.options.source && analysesResults && !layer.options.sql_wrap) { + var sourceId = layer.options.source.id; + var node = _.find(analysesResults, function (a) { return a.rootNode.params.id === sourceId; }); + if (node) { + node = node.rootNode; + filters = node.getFilters(); + var filters_disabler = Object.keys(filters).reduce( + function (disabler, filter_id) { disabler[filter_id] = false; return disabler; }, + {} + ); + unfiltered_query = node.getQuery(filters_disabler); + query_rewrite_data.filters = filters; + query_rewrite_data.unfiltered_query = unfiltered_query; } - this(null, filters, unfiltered_query); - }, + } + function collectStatsData(err, filters, unfiltered_query) { var next_step = this; if (filters) { From fe9f4939d5c883005a95a7c5216aeb70556026a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Mon, 30 Jul 2018 17:49:20 +0200 Subject: [PATCH 04/18] remove step: function 2 --- .../adapter/mapconfig-overviews-adapter.js | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 9bae339b..dd07ccd9 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -47,23 +47,26 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon } } - function collectStatsData(err, filters, unfiltered_query) { - var next_step = this; - if (filters) { - self.filterStatsBackend.getFilterStats( - user, - unfiltered_query, filters, - function (err, stats) { - if (!err) { - query_rewrite_data.filter_stats = stats; - } - return next_step(err); + if (filters) { + self.filterStatsBackend.getFilterStats( + user, + unfiltered_query, + filters, + function (err, stats) { + if (err) { + // next with error } - ); - } else { - return next_step(null); - } - }, + + query_rewrite_data.filter_stats = stats; + + // next + } + ); + } else { + // next + } + + function addDataToLayer(err) { if (!err && !_.isEmpty(metadata)) { layer = _.extend({}, layer); From 20c8d07a4653b949eeb4ef7d8b54eb4f8cf17d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Mon, 30 Jul 2018 17:59:06 +0200 Subject: [PATCH 05/18] remove step: last function --- .../adapter/mapconfig-overviews-adapter.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index dd07ccd9..06b67b64 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -54,25 +54,26 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon filters, function (err, stats) { if (err) { - // next with error + return done(null, layer); } query_rewrite_data.filter_stats = stats; - // next + if (!_.isEmpty(metadata)) { + layer = _.extend({}, layer); + layer.options = _.extend({}, layer.options, { query_rewrite_data: query_rewrite_data }); + } + + return done(null, layer); } ); } else { - // next - } - - - function addDataToLayer(err) { - if (!err && !_.isEmpty(metadata)) { + if (!_.isEmpty(metadata)) { layer = _.extend({}, layer); layer.options = _.extend({}, layer.options, { query_rewrite_data: query_rewrite_data }); } - done(null, layer); + + return done(null, layer); } } }); From 324e61490267ae93324bf21bdd7a9fd026963fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Mon, 30 Jul 2018 18:25:26 +0200 Subject: [PATCH 06/18] change _.extend by Object.assign --- .../mapconfig/adapter/mapconfig-overviews-adapter.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 06b67b64..4134b19f 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -60,8 +60,8 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon query_rewrite_data.filter_stats = stats; if (!_.isEmpty(metadata)) { - layer = _.extend({}, layer); - layer.options = _.extend({}, layer.options, { query_rewrite_data: query_rewrite_data }); + layer = Object.assign({}, layer); + layer.options = Object.assign({}, layer.options, { query_rewrite_data }); } return done(null, layer); @@ -69,8 +69,8 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon ); } else { if (!_.isEmpty(metadata)) { - layer = _.extend({}, layer); - layer.options = _.extend({}, layer.options, { query_rewrite_data: query_rewrite_data }); + layer = Object.assign({}, layer); + layer.options = Object.assign({}, layer.options, { query_rewrite_data }); } return done(null, layer); From ea0805b017559bd58be3655a2bf01faefacb753d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Tue, 31 Jul 2018 15:01:22 +0200 Subject: [PATCH 07/18] early return --- .../adapter/mapconfig-overviews-adapter.js | 84 +++++++++---------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 4134b19f..2f458f0d 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -26,55 +26,55 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon } self.overviewsMetadataBackend.getOverviewsMetadata(user, layer.options.sql, function (err, metadata) { if (err) { - done(err, layer); - } else { - var query_rewrite_data = { overviews: metadata }; + return done(err, layer); + } - var filters, unfiltered_query; - if (layer.options.source && analysesResults && !layer.options.sql_wrap) { - var sourceId = layer.options.source.id; - var node = _.find(analysesResults, function (a) { return a.rootNode.params.id === sourceId; }); - if (node) { - node = node.rootNode; - filters = node.getFilters(); - var filters_disabler = Object.keys(filters).reduce( - function (disabler, filter_id) { disabler[filter_id] = false; return disabler; }, - {} - ); - unfiltered_query = node.getQuery(filters_disabler); - query_rewrite_data.filters = filters; - query_rewrite_data.unfiltered_query = unfiltered_query; - } + var query_rewrite_data = { overviews: metadata }; + + var filters, unfiltered_query; + if (layer.options.source && analysesResults && !layer.options.sql_wrap) { + var sourceId = layer.options.source.id; + var node = _.find(analysesResults, function (a) { return a.rootNode.params.id === sourceId; }); + if (node) { + node = node.rootNode; + filters = node.getFilters(); + var filters_disabler = Object.keys(filters).reduce( + function (disabler, filter_id) { disabler[filter_id] = false; return disabler; }, + {} + ); + unfiltered_query = node.getQuery(filters_disabler); + query_rewrite_data.filters = filters; + query_rewrite_data.unfiltered_query = unfiltered_query; } + } - if (filters) { - self.filterStatsBackend.getFilterStats( - user, - unfiltered_query, - filters, - function (err, stats) { - if (err) { - return done(null, layer); - } - - query_rewrite_data.filter_stats = stats; - - if (!_.isEmpty(metadata)) { - layer = Object.assign({}, layer); - layer.options = Object.assign({}, layer.options, { query_rewrite_data }); - } - + if (filters) { + self.filterStatsBackend.getFilterStats( + user, + unfiltered_query, + filters, + function (err, stats) { + if (err) { return done(null, layer); } - ); - } else { - if (!_.isEmpty(metadata)) { - layer = Object.assign({}, layer); - layer.options = Object.assign({}, layer.options, { query_rewrite_data }); - } - return done(null, layer); + query_rewrite_data.filter_stats = stats; + + if (!_.isEmpty(metadata)) { + layer = Object.assign({}, layer); + layer.options = Object.assign({}, layer.options, { query_rewrite_data }); + } + + return done(null, layer); + } + ); + } else { + if (!_.isEmpty(metadata)) { + layer = Object.assign({}, layer); + layer.options = Object.assign({}, layer.options, { query_rewrite_data }); } + + return done(null, layer); } }); } From 843f4b8e28c16fef807d74f8c322282f948e3c29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 1 Aug 2018 15:53:43 +0200 Subject: [PATCH 08/18] Use early return --- .../adapter/mapconfig-overviews-adapter.js | 37 ++++++++----------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 2f458f0d..6e8619e1 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -48,27 +48,7 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon } } - if (filters) { - self.filterStatsBackend.getFilterStats( - user, - unfiltered_query, - filters, - function (err, stats) { - if (err) { - return done(null, layer); - } - - query_rewrite_data.filter_stats = stats; - - if (!_.isEmpty(metadata)) { - layer = Object.assign({}, layer); - layer.options = Object.assign({}, layer.options, { query_rewrite_data }); - } - - return done(null, layer); - } - ); - } else { + if (!filters) { if (!_.isEmpty(metadata)) { layer = Object.assign({}, layer); layer.options = Object.assign({}, layer.options, { query_rewrite_data }); @@ -76,6 +56,21 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon return done(null, layer); } + + self.filterStatsBackend.getFilterStats(user, unfiltered_query, filters, function (err, stats) { + if (err) { + return done(null, layer); + } + + query_rewrite_data.filter_stats = stats; + + if (!_.isEmpty(metadata)) { + layer = Object.assign({}, layer); + layer.options = Object.assign({}, layer.options, { query_rewrite_data }); + } + + return done(null, layer); + }); }); } From d25740ed51eace3dbadec11b7ab758e2ba35ccdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 1 Aug 2018 16:02:05 +0200 Subject: [PATCH 09/18] Extract function to avoid dynamic clousures --- .../adapter/mapconfig-overviews-adapter.js | 125 +++++++++--------- 1 file changed, 66 insertions(+), 59 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 6e8619e1..ec44ef0f 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -20,61 +20,18 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon var augmentLayersQueue = queue(layers.length); - function augmentLayer(layer, done) { - if (layer.type !== 'mapnik' && layer.type !== 'cartodb') { - return done(null, layer); - } - self.overviewsMetadataBackend.getOverviewsMetadata(user, layer.options.sql, function (err, metadata) { - if (err) { - return done(err, layer); - } + layers.forEach(function (layer) { + augmentLayersQueue.defer( + augmentLayer, + self.overviewsMetadataBackend, + self.filterStatsBackend, + user, + layer, + analysesResults + ); + }); - var query_rewrite_data = { overviews: metadata }; - - var filters, unfiltered_query; - if (layer.options.source && analysesResults && !layer.options.sql_wrap) { - var sourceId = layer.options.source.id; - var node = _.find(analysesResults, function (a) { return a.rootNode.params.id === sourceId; }); - if (node) { - node = node.rootNode; - filters = node.getFilters(); - var filters_disabler = Object.keys(filters).reduce( - function (disabler, filter_id) { disabler[filter_id] = false; return disabler; }, - {} - ); - unfiltered_query = node.getQuery(filters_disabler); - query_rewrite_data.filters = filters; - query_rewrite_data.unfiltered_query = unfiltered_query; - } - } - - if (!filters) { - if (!_.isEmpty(metadata)) { - layer = Object.assign({}, layer); - layer.options = Object.assign({}, layer.options, { query_rewrite_data }); - } - - return done(null, layer); - } - - self.filterStatsBackend.getFilterStats(user, unfiltered_query, filters, function (err, stats) { - if (err) { - return done(null, layer); - } - - query_rewrite_data.filter_stats = stats; - - if (!_.isEmpty(metadata)) { - layer = Object.assign({}, layer); - layer.options = Object.assign({}, layer.options, { query_rewrite_data }); - } - - return done(null, layer); - }); - }); - } - - function layersAugmentQueueFinish(err, layers) { + augmentLayersQueue.awaitAll(function layersAugmentQueueFinish (err, layers) { if (err) { return callback(err); } @@ -86,11 +43,61 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon requestMapConfig.layers = layers; return callback(null, requestMapConfig); - } - - layers.forEach(function (layer) { - augmentLayersQueue.defer(augmentLayer, layer); }); - augmentLayersQueue.awaitAll(layersAugmentQueueFinish); }; + +function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, analysesResults, done) { + if (layer.type !== 'mapnik' && layer.type !== 'cartodb') { + return done(null, layer); + } + + overviewsMetadataBackend.getOverviewsMetadata(user, layer.options.sql, function (err, metadata) { + if (err) { + return done(err, layer); + } + + var query_rewrite_data = { overviews: metadata }; + + var filters, unfiltered_query; + if (layer.options.source && analysesResults && !layer.options.sql_wrap) { + var sourceId = layer.options.source.id; + var node = _.find(analysesResults, function (a) { return a.rootNode.params.id === sourceId; }); + if (node) { + node = node.rootNode; + filters = node.getFilters(); + var filters_disabler = Object.keys(filters).reduce( + function (disabler, filter_id) { disabler[filter_id] = false; return disabler; }, + {} + ); + unfiltered_query = node.getQuery(filters_disabler); + query_rewrite_data.filters = filters; + query_rewrite_data.unfiltered_query = unfiltered_query; + } + } + + if (!filters) { + if (!_.isEmpty(metadata)) { + layer = Object.assign({}, layer); + layer.options = Object.assign({}, layer.options, { query_rewrite_data }); + } + + return done(null, layer); + } + + filterStatsBackend.getFilterStats(user, unfiltered_query, filters, function (err, stats) { + if (err) { + return done(null, layer); + } + + query_rewrite_data.filter_stats = stats; + + if (!_.isEmpty(metadata)) { + layer = Object.assign({}, layer); + layer.options = Object.assign({}, layer.options, { query_rewrite_data }); + } + + return done(null, layer); + }); + }); +} From 6a6ec4300b0cdce9fe20b29496a413f18328bf6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 1 Aug 2018 16:30:59 +0200 Subject: [PATCH 10/18] Extract functions to compose query-rewrite-data --- .../adapter/mapconfig-overviews-adapter.js | 50 ++++++++++++++----- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index ec44ef0f..6da4a726 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -59,23 +59,15 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, var query_rewrite_data = { overviews: metadata }; - var filters, unfiltered_query; if (layer.options.source && analysesResults && !layer.options.sql_wrap) { var sourceId = layer.options.source.id; - var node = _.find(analysesResults, function (a) { return a.rootNode.params.id === sourceId; }); - if (node) { - node = node.rootNode; - filters = node.getFilters(); - var filters_disabler = Object.keys(filters).reduce( - function (disabler, filter_id) { disabler[filter_id] = false; return disabler; }, - {} - ); - unfiltered_query = node.getQuery(filters_disabler); - query_rewrite_data.filters = filters; - query_rewrite_data.unfiltered_query = unfiltered_query; - } + + query_rewrite_data.filters = getFilters(analysesResults, sourceId); + query_rewrite_data.unfiltered_query = getUnfilteredQuery(analysesResults, sourceId); } + var filters = query_rewrite_data.filters; + if (!filters) { if (!_.isEmpty(metadata)) { layer = Object.assign({}, layer); @@ -85,6 +77,8 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, return done(null, layer); } + var unfiltered_query = query_rewrite_data.unfiltered_query; + filterStatsBackend.getFilterStats(user, unfiltered_query, filters, function (err, stats) { if (err) { return done(null, layer); @@ -101,3 +95,33 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, }); }); } + +function getRootNode (analysesResults, sourceId) { + var node = _.find(analysesResults, function (a) { + return a.rootNode.params.id === sourceId; + }); + + return node ? node.rootNode : undefined; +} + +function getUnfilteredQuery (analysesResults, sourceId) { + var node = getRootNode(analysesResults, sourceId); + + if (node) { + var filters = node.getFilters(); + var filters_disabler = Object.keys(filters).reduce(function (disabler, filter_id) { + disabler[filter_id] = false; + return disabler; + }, {}); + + return node.getQuery(filters_disabler); + } +} + +function getFilters (analysesResults, sourceId) { + var node = getRootNode(analysesResults, sourceId); + + if (node) { + return node.getFilters(); + } +} From c8c22a787e6bd7b3632fc407cdd9abf31375a06e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 1 Aug 2018 16:34:35 +0200 Subject: [PATCH 11/18] CamelCase --- .../adapter/mapconfig-overviews-adapter.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 6da4a726..2f55f3ff 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -57,38 +57,38 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, return done(err, layer); } - var query_rewrite_data = { overviews: metadata }; + var queryRewriteData = { overviews: metadata }; if (layer.options.source && analysesResults && !layer.options.sql_wrap) { var sourceId = layer.options.source.id; - query_rewrite_data.filters = getFilters(analysesResults, sourceId); - query_rewrite_data.unfiltered_query = getUnfilteredQuery(analysesResults, sourceId); + queryRewriteData.filters = getFilters(analysesResults, sourceId); + queryRewriteData.unfiltered_query = getUnfilteredQuery(analysesResults, sourceId); } - var filters = query_rewrite_data.filters; + var filters = queryRewriteData.filters; if (!filters) { if (!_.isEmpty(metadata)) { layer = Object.assign({}, layer); - layer.options = Object.assign({}, layer.options, { query_rewrite_data }); + layer.options = Object.assign({}, layer.options, { queryRewriteData }); } return done(null, layer); } - var unfiltered_query = query_rewrite_data.unfiltered_query; + var unfilteredQuery = queryRewriteData.unfiltered_query; - filterStatsBackend.getFilterStats(user, unfiltered_query, filters, function (err, stats) { + filterStatsBackend.getFilterStats(user, unfilteredQuery, filters, function (err, stats) { if (err) { return done(null, layer); } - query_rewrite_data.filter_stats = stats; + queryRewriteData.filter_stats = stats; if (!_.isEmpty(metadata)) { layer = Object.assign({}, layer); - layer.options = Object.assign({}, layer.options, { query_rewrite_data }); + layer.options = Object.assign({}, layer.options, { queryRewriteData }); } return done(null, layer); From 64329c3facb5d09a0d496deb4275f0020c6c2a5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 1 Aug 2018 16:39:15 +0200 Subject: [PATCH 12/18] Rename callback --- .../mapconfig/adapter/mapconfig-overviews-adapter.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 2f55f3ff..074129ad 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -47,14 +47,14 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon }; -function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, analysesResults, done) { +function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, analysesResults, callback) { if (layer.type !== 'mapnik' && layer.type !== 'cartodb') { - return done(null, layer); + return callback(null, layer); } overviewsMetadataBackend.getOverviewsMetadata(user, layer.options.sql, function (err, metadata) { if (err) { - return done(err, layer); + return callback(err, layer); } var queryRewriteData = { overviews: metadata }; @@ -74,14 +74,14 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, layer.options = Object.assign({}, layer.options, { queryRewriteData }); } - return done(null, layer); + return callback(null, layer); } var unfilteredQuery = queryRewriteData.unfiltered_query; filterStatsBackend.getFilterStats(user, unfilteredQuery, filters, function (err, stats) { if (err) { - return done(null, layer); + return callback(null, layer); } queryRewriteData.filter_stats = stats; @@ -91,7 +91,7 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, layer.options = Object.assign({}, layer.options, { queryRewriteData }); } - return done(null, layer); + return callback(null, layer); }); }); } From 8f763d655d2a9e6e94aec58cf7293ca1fb6cdfe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 1 Aug 2018 17:16:14 +0200 Subject: [PATCH 13/18] Do not rename output values --- .../models/mapconfig/adapter/mapconfig-overviews-adapter.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 074129ad..057a008c 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -71,7 +71,7 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, if (!filters) { if (!_.isEmpty(metadata)) { layer = Object.assign({}, layer); - layer.options = Object.assign({}, layer.options, { queryRewriteData }); + layer.options = Object.assign({}, layer.options, { query_rewrite_data: queryRewriteData }); } return callback(null, layer); @@ -88,7 +88,7 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, if (!_.isEmpty(metadata)) { layer = Object.assign({}, layer); - layer.options = Object.assign({}, layer.options, { queryRewriteData }); + layer.options = Object.assign({}, layer.options, { query_rewrite_data: queryRewriteData }); } return callback(null, layer); From 78f4cf3155cc5c85cef5981e0dcd9f5856b2645f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 1 Aug 2018 17:33:20 +0200 Subject: [PATCH 14/18] Move code --- .../adapter/mapconfig-overviews-adapter.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 057a008c..7ba3c1f1 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -52,19 +52,21 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, return callback(null, layer); } + var queryRewriteData = {}; + + if (layer.options.source && analysesResults && !layer.options.sql_wrap) { + var sourceId = layer.options.source.id; + + queryRewriteData.filters = getFilters(analysesResults, sourceId); + queryRewriteData.unfiltered_query = getUnfilteredQuery(analysesResults, sourceId); + } + overviewsMetadataBackend.getOverviewsMetadata(user, layer.options.sql, function (err, metadata) { if (err) { return callback(err, layer); } - var queryRewriteData = { overviews: metadata }; - - if (layer.options.source && analysesResults && !layer.options.sql_wrap) { - var sourceId = layer.options.source.id; - - queryRewriteData.filters = getFilters(analysesResults, sourceId); - queryRewriteData.unfiltered_query = getUnfilteredQuery(analysesResults, sourceId); - } + queryRewriteData.overviews = metadata; var filters = queryRewriteData.filters; From 732a2d77425f63680220795d9ce9bae8e5892a84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 1 Aug 2018 17:39:08 +0200 Subject: [PATCH 15/18] Early return is the way to go. Avoid checking conditions later --- .../adapter/mapconfig-overviews-adapter.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 7ba3c1f1..9a5a1417 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -66,15 +66,17 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, return callback(err, layer); } + if (_.isEmpty(metadata)) { + return callback(null, layer); + } + queryRewriteData.overviews = metadata; var filters = queryRewriteData.filters; if (!filters) { - if (!_.isEmpty(metadata)) { - layer = Object.assign({}, layer); - layer.options = Object.assign({}, layer.options, { query_rewrite_data: queryRewriteData }); - } + layer = Object.assign({}, layer); + layer.options = Object.assign({}, layer.options, { query_rewrite_data: queryRewriteData }); return callback(null, layer); } @@ -88,10 +90,8 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, queryRewriteData.filter_stats = stats; - if (!_.isEmpty(metadata)) { - layer = Object.assign({}, layer); - layer.options = Object.assign({}, layer.options, { query_rewrite_data: queryRewriteData }); - } + layer = Object.assign({}, layer); + layer.options = Object.assign({}, layer.options, { query_rewrite_data: queryRewriteData }); return callback(null, layer); }); From df14afb55f5157de452ca36daf84305bd4ac5e44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 1 Aug 2018 19:15:28 +0200 Subject: [PATCH 16/18] Remove unnecessary code --- .../models/mapconfig/adapter/mapconfig-overviews-adapter.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 9a5a1417..240ace22 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -75,7 +75,6 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, var filters = queryRewriteData.filters; if (!filters) { - layer = Object.assign({}, layer); layer.options = Object.assign({}, layer.options, { query_rewrite_data: queryRewriteData }); return callback(null, layer); @@ -90,7 +89,6 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, queryRewriteData.filter_stats = stats; - layer = Object.assign({}, layer); layer.options = Object.assign({}, layer.options, { query_rewrite_data: queryRewriteData }); return callback(null, layer); From 593a72a967d8026e4731bc5cf27a2f03f5547f13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 2 Aug 2018 11:40:41 +0200 Subject: [PATCH 17/18] Reorganize code, estract methods and rename others --- .../adapter/mapconfig-overviews-adapter.js | 80 ++++++++++--------- 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 240ace22..a50bfae0 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -9,8 +9,6 @@ function MapConfigOverviewsAdapter(overviewsMetadataBackend, filterStatsBackend) module.exports = MapConfigOverviewsAdapter; MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapConfig, params, context, callback) { - var self = this; - var layers = requestMapConfig.layers; var analysesResults = context.analysesResults; @@ -23,8 +21,8 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon layers.forEach(function (layer) { augmentLayersQueue.defer( augmentLayer, - self.overviewsMetadataBackend, - self.filterStatsBackend, + this.overviewsMetadataBackend, + this.filterStatsBackend, user, layer, analysesResults @@ -44,7 +42,6 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon return callback(null, requestMapConfig); }); - }; function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, analysesResults, callback) { @@ -52,15 +49,6 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, return callback(null, layer); } - var queryRewriteData = {}; - - if (layer.options.source && analysesResults && !layer.options.sql_wrap) { - var sourceId = layer.options.source.id; - - queryRewriteData.filters = getFilters(analysesResults, sourceId); - queryRewriteData.unfiltered_query = getUnfilteredQuery(analysesResults, sourceId); - } - overviewsMetadataBackend.getOverviewsMetadata(user, layer.options.sql, function (err, metadata) { if (err) { return callback(err, layer); @@ -70,26 +58,27 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, return callback(null, layer); } - queryRewriteData.overviews = metadata; - - var filters = queryRewriteData.filters; + var filters = getFilters(analysesResults, layer); if (!filters) { - layer.options = Object.assign({}, layer.options, { query_rewrite_data: queryRewriteData }); + layer.options = Object.assign({}, layer.options, getQueryRewriteData(layer, analysesResults, { + overviews: metadata + })); return callback(null, layer); } - var unfilteredQuery = queryRewriteData.unfiltered_query; + var unfilteredQuery = getUnfilteredQuery(analysesResults, layer); filterStatsBackend.getFilterStats(user, unfilteredQuery, filters, function (err, stats) { if (err) { return callback(null, layer); } - queryRewriteData.filter_stats = stats; - - layer.options = Object.assign({}, layer.options, { query_rewrite_data: queryRewriteData }); + layer.options = Object.assign({}, layer.options, getQueryRewriteData(layer, analysesResults, { + overviews: metadata, + filter_stats: stats + })); return callback(null, layer); }); @@ -104,24 +93,43 @@ function getRootNode (analysesResults, sourceId) { return node ? node.rootNode : undefined; } -function getUnfilteredQuery (analysesResults, sourceId) { - var node = getRootNode(analysesResults, sourceId); +function getFilters (analysesResults, layer) { + if (layer.options.source && analysesResults && !layer.options.sql_wrap) { + var sourceId = layer.options.source.id; + var node = getRootNode(analysesResults, sourceId); - if (node) { - var filters = node.getFilters(); - var filters_disabler = Object.keys(filters).reduce(function (disabler, filter_id) { - disabler[filter_id] = false; - return disabler; - }, {}); - - return node.getQuery(filters_disabler); + if (node) { + return node.getFilters(); + } } } -function getFilters (analysesResults, sourceId) { - var node = getRootNode(analysesResults, sourceId); +function getUnfilteredQuery (analysesResults, layer) { + if (layer.options.source && analysesResults && !layer.options.sql_wrap) { + var sourceId = layer.options.source.id; + var node = getRootNode(analysesResults, sourceId); - if (node) { - return node.getFilters(); + if (node) { + var filters = node.getFilters(); + var filters_disabler = Object.keys(filters).reduce(function (disabler, filter_id) { + disabler[filter_id] = false; + return disabler; + }, {}); + + return node.getQuery(filters_disabler); + } } } + +function getQueryRewriteData (layer, analysesResults, extend = {}) { + var queryRewriteData = {}; + + if (layer.options.source && analysesResults && !layer.options.sql_wrap) { + queryRewriteData.filters = getFilters(analysesResults, layer); + queryRewriteData.unfiltered_query = getUnfilteredQuery(analysesResults, layer); + } + + queryRewriteData = Object.assign({}, queryRewriteData, extend); + + return { query_rewrite_data: queryRewriteData }; +} From 63e4bcebefdd77f6be347472268f05bb9b11b02a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 2 Aug 2018 13:13:48 +0200 Subject: [PATCH 18/18] Move function to class as private method --- .../adapter/mapconfig-overviews-adapter.js | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index a50bfae0..e67a2513 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -18,16 +18,7 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon var augmentLayersQueue = queue(layers.length); - layers.forEach(function (layer) { - augmentLayersQueue.defer( - augmentLayer, - this.overviewsMetadataBackend, - this.filterStatsBackend, - user, - layer, - analysesResults - ); - }); + layers.forEach(layer => augmentLayersQueue.defer(this._augmentLayer.bind(this), user, layer, analysesResults)); augmentLayersQueue.awaitAll(function layersAugmentQueueFinish (err, layers) { if (err) { @@ -44,12 +35,12 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function (user, requestMapCon }); }; -function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, analysesResults, callback) { +MapConfigOverviewsAdapter.prototype._augmentLayer = function (user, layer, analysesResults, callback) { if (layer.type !== 'mapnik' && layer.type !== 'cartodb') { return callback(null, layer); } - overviewsMetadataBackend.getOverviewsMetadata(user, layer.options.sql, function (err, metadata) { + this.overviewsMetadataBackend.getOverviewsMetadata(user, layer.options.sql, (err, metadata) => { if (err) { return callback(err, layer); } @@ -70,7 +61,7 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, var unfilteredQuery = getUnfilteredQuery(analysesResults, layer); - filterStatsBackend.getFilterStats(user, unfilteredQuery, filters, function (err, stats) { + this.filterStatsBackend.getFilterStats(user, unfilteredQuery, filters, function (err, stats) { if (err) { return callback(null, layer); } @@ -83,7 +74,7 @@ function augmentLayer(overviewsMetadataBackend, filterStatsBackend, user, layer, return callback(null, layer); }); }); -} +}; function getRootNode (analysesResults, sourceId) { var node = _.find(analysesResults, function (a) {