diff --git a/lib/cartodb/backends/dataview.js b/lib/cartodb/backends/dataview.js index fe549092..1b13a930 100644 --- a/lib/cartodb/backends/dataview.js +++ b/lib/cartodb/backends/dataview.js @@ -152,30 +152,18 @@ DataviewBackend.prototype.search = function (mapConfigProvider, user, dataviewNa } var pg; + var query; + var dataview; try { pg = new PSQL(dbParamsFromReqParams(params)); + query = getQueryWithFilters(dataviewDefinition, params); + dataview = DataviewFactory.getDataview(query, dataviewDefinition); } catch (error) { return callback(error); } - var ownFilter = +params.own_filter; - ownFilter = !!ownFilter; - - var query = (ownFilter) ? dataviewDefinition.sql.own_filter_on : dataviewDefinition.sql.own_filter_off; - - if (params.bbox) { - try { - var bboxFilter = new BBoxFilter({ column: 'the_geom', srid: 4326 }, { bbox: params.bbox }); - query = bboxFilter.sql(query); - } catch (error) { - return callback(error); - } - } - var userQuery = params.q; - - var dataview = DataviewFactory.getDataview(query, dataviewDefinition); dataview.search(pg, userQuery, function (err, result) { if (err) { return callback(err); @@ -186,6 +174,20 @@ DataviewBackend.prototype.search = function (mapConfigProvider, user, dataviewNa }); }; +function getQueryWithFilters (dataviewDefinition, params) { + var ownFilter = +params.own_filter; + ownFilter = !!ownFilter; + + var query = (ownFilter) ? dataviewDefinition.sql.own_filter_on : dataviewDefinition.sql.own_filter_off; + + if (params.bbox) { + var bboxFilter = new BBoxFilter({ column: 'the_geom', srid: 4326 }, { bbox: params.bbox }); + query = bboxFilter.sql(query); + } + + return query; +} + function getDataviewDefinition(mapConfig, dataviewName) { var dataviews = mapConfig.dataviews || {}; return dataviews[dataviewName];