Extract get query with filters

This commit is contained in:
Daniel García Aubert
2018-07-31 13:26:38 +02:00
parent 9124a26a45
commit d4de54f292
+25 -13
View File
@@ -34,9 +34,7 @@ DataviewBackend.prototype.getDataview = function (mapConfigProvider, user, param
return callback(error);
}
var ownFilter = +params.own_filter;
var noFilters = +params.no_filters;
if (Number.isFinite(ownFilter) && Number.isFinite(noFilters)) {
if (!validFilterParams(params)) {
const error = new Error('Both own_filter and no_filters cannot be sent in the same request');
error.type = 'dataview';
error.http_status = 400;
@@ -44,15 +42,8 @@ DataviewBackend.prototype.getDataview = function (mapConfigProvider, user, param
}
var pg = new PSQL(dbParamsFromReqParams(params));
var query = getDataviewQuery(dataviewDefinition, ownFilter, noFilters);
if (params.bbox) {
var bboxFilter = new BBoxFilter({column: 'the_geom_webmercator', srid: 3857}, {bbox: params.bbox});
query = bboxFilter.sql(query);
}
var query = getQueryWithFilters(dataviewDefinition, params);
var queryRewriteData = getQueryRewriteData(mapConfig, dataviewDefinition, params);
var dataviewFactory = DataviewFactoryWithOverviews.getFactory(
overviewsQueryRewriter, queryRewriteData, { bbox: params.bbox }
);
@@ -62,6 +53,7 @@ DataviewBackend.prototype.getDataview = function (mapConfigProvider, user, param
let overrideParams;
try {
var ownFilter = +params.own_filter;
overrideParams = getOverrideParams(params, !!ownFilter);
} catch (error) {
return callback(error);
@@ -77,6 +69,26 @@ DataviewBackend.prototype.getDataview = function (mapConfigProvider, user, param
});
};
function validFilterParams (params) {
var ownFilter = +params.own_filter;
var noFilters = +params.no_filters;
return !(Number.isFinite(ownFilter) && Number.isFinite(noFilters));
}
function getQueryWithFilters (dataviewDefinition, params) {
var ownFilter = +params.own_filter;
var noFilters = +params.no_filters;
var query = getDataviewQuery(dataviewDefinition, ownFilter, noFilters);
if (params.bbox) {
var bboxFilter = new BBoxFilter({column: 'the_geom_webmercator', srid: 3857}, {bbox: params.bbox});
query = bboxFilter.sql(query);
}
return query;
}
function getDataviewQuery(dataviewDefinition, ownFilter, noFilters) {
if (noFilters) {
return dataviewDefinition.sql.no_filters;
@@ -158,7 +170,7 @@ DataviewBackend.prototype.search = function (mapConfigProvider, user, dataviewNa
try {
pg = new PSQL(dbParamsFromReqParams(params));
query = getQueryWithFilters(dataviewDefinition, params);
query = getQueryWithOwnFilters(dataviewDefinition, params);
dataview = DataviewFactory.getDataview(query, dataviewDefinition);
} catch (error) {
return callback(error);
@@ -174,7 +186,7 @@ DataviewBackend.prototype.search = function (mapConfigProvider, user, dataviewNa
});
};
function getQueryWithFilters (dataviewDefinition, params) {
function getQueryWithOwnFilters (dataviewDefinition, params) {
var ownFilter = +params.own_filter;
ownFilter = !!ownFilter;