From e470f65cad943f8a3065c6f5f6287adcc704627e Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 5 Oct 2016 00:09:30 +0200 Subject: Specify base set as part of the filter stages in the query. --- common/datastorequery.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'common/datastorequery.cpp') diff --git a/common/datastorequery.cpp b/common/datastorequery.cpp index dac171c..0cc30e5 100644 --- a/common/datastorequery.cpp +++ b/common/datastorequery.cpp @@ -407,23 +407,25 @@ QByteArrayList DataStoreQuery::executeSubquery(const Query &subquery) void DataStoreQuery::setupQuery() { - for (const auto &k : mQuery.propertyFilter.keys()) { + auto baseFilters = mQuery.getBaseFilters(); + for (const auto &k : baseFilters.keys()) { if (k == ApplicationDomain::Entity::Resource::name) { continue; } - const auto comparator = mQuery.propertyFilter.value(k); + const auto comparator = baseFilters.value(k); if (comparator.value.canConvert()) { SinkTrace() << "Executing subquery for property: " << k; const auto result = executeSubquery(comparator.value.value()); - mQuery.propertyFilter.insert(k, Query::Comparator(QVariant::fromValue(result), Query::Comparator::In)); + baseFilters.insert(k, Query::Comparator(QVariant::fromValue(result), Query::Comparator::In)); } } + mQuery.setBaseFilters(baseFilters); FilterBase::Ptr baseSet; QSet remainingFilters = mQuery.getBaseFilters().keys().toSet(); QByteArray appliedSorting; - if (!mQuery.ids.isEmpty()) { - mSource = Source::Ptr::create(mQuery.ids.toVector(), this); + if (!mQuery.ids().isEmpty()) { + mSource = Source::Ptr::create(mQuery.ids().toVector(), this); baseSet = mSource; } else { QSet appliedFilters; @@ -457,7 +459,7 @@ void DataStoreQuery::setupQuery() /* } */ //Setup the rest of the filter stages on top of the base set - for (const auto &stage : mQuery.filterStages) { + for (const auto &stage : mQuery.filterStages.mid(1)) { if (auto filter = stage.dynamicCast()) { auto f = Filter::Ptr::create(baseSet, this); f->propertyFilter = filter->propertyFilter; -- cgit v1.2.3