diff --git a/lib/cartodb/backends/dataview.js b/lib/cartodb/backends/dataview.js index d18e1529..6861a02c 100644 --- a/lib/cartodb/backends/dataview.js +++ b/lib/cartodb/backends/dataview.js @@ -140,7 +140,17 @@ DataviewBackend.prototype.getDataview = function (mapConfigProvider, user, param if (params.bbox) { var bboxFilter = new BBoxFilter({column: 'the_geom', srid: 4326}, {bbox: params.bbox}); query = bboxFilter.sql(query); - queryRewriteData = _.extend(queryRewriteData, { bbox_filter: bboxFilter }); + var bbox_filter_definition = { + type: 'bbox', + options: { + column: 'the_geom', + srid: 4326, + }, + params: { + bbox: params.bbox + } + }; + queryRewriteData = _.extend(queryRewriteData, { bbox_filter: bbox_filter_definition }); } var dataviewFactory = DataviewFactoryWithOverviews.getFactory( diff --git a/lib/cartodb/models/filter/camshaft.js b/lib/cartodb/models/filter/camshaft.js new file mode 100644 index 00000000..4fca3b8f --- /dev/null +++ b/lib/cartodb/models/filter/camshaft.js @@ -0,0 +1,13 @@ +// this is meant as a hack for development +// TODO: reproduce here the filter application of Camshaft +var queryBuilder = require('camshaft/lib/filter/query-builder'); + +function CamshaftFilters(filters) { + this.filters = filters; +} + +CamshaftFilters.prototype.sql = function(rawSql) { + return queryBuilder.getSQL(rawSql, filters); +}; + +module.exports = CamshaftFilters; diff --git a/lib/cartodb/utils/overviews_query_rewriter.js b/lib/cartodb/utils/overviews_query_rewriter.js index 7efff2ed..e38f53bd 100644 --- a/lib/cartodb/utils/overviews_query_rewriter.js +++ b/lib/cartodb/utils/overviews_query_rewriter.js @@ -1,15 +1,17 @@ var _ = require('underscore'); var TableNameParser = require('./table_name_parser'); -// this is meant as a hack for development -var queryBuilder = require('camshaft/lib/filter/query-builder'); +var BBoxFilter = require('../models/filter/bbox'); +var CamshaftFilter = require('../models/filter/camshaft'); + function apply_filters_to_query(query, filters, bbox_filter) { - // TODO: implement filter application here if ( filters && !_.isEmpty(filters)) { - query = queryBuilder.getSql(query, filters); + var camshaftFilter = new CamshaftFilter(filters) + query = camshaftFilter.sql(query); } if ( bbox_filter ) { - query = bbox_filter.sql(query); + var bboxFilter = new BBoxFilter(bbox_filter.options, bbox_filter.params); + query = bboxFilter.sql(query); } return query; }