summaryrefslogtreecommitdiffstats
path: root/common/queryrunner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/queryrunner.cpp')
-rw-r--r--common/queryrunner.cpp18
1 files changed, 6 insertions, 12 deletions
diff --git a/common/queryrunner.cpp b/common/queryrunner.cpp
index 4422229..67e83ea 100644
--- a/common/queryrunner.cpp
+++ b/common/queryrunner.cpp
@@ -176,10 +176,7 @@ QueryWorker<DomainType>::~QueryWorker()
176template <class DomainType> 176template <class DomainType>
177void QueryWorker<DomainType>::resultProviderCallback(const Sink::Query &query, Sink::ResultProviderInterface<typename DomainType::Ptr> &resultProvider, const ResultSet::Result &result) 177void QueryWorker<DomainType>::resultProviderCallback(const Sink::Query &query, Sink::ResultProviderInterface<typename DomainType::Ptr> &resultProvider, const ResultSet::Result &result)
178{ 178{
179 auto adaptor = mResourceContext.adaptorFactory<DomainType>().createAdaptor(result.buffer.entity()); 179 auto valueCopy = Sink::ApplicationDomain::ApplicationDomainType::getInMemoryRepresentation<DomainType>(result.entity, query.requestedProperties).template staticCast<DomainType>();
180 Q_ASSERT(adaptor);
181 auto domainObject = DomainType{mResourceContext.instanceId(), result.uid, result.buffer.revision(), adaptor};
182 auto valueCopy = Sink::ApplicationDomain::ApplicationDomainType::getInMemoryRepresentation<DomainType>(domainObject, query.requestedProperties).template staticCast<DomainType>();
183 for (auto it = result.aggregateValues.constBegin(); it != result.aggregateValues.constEnd(); it++) { 180 for (auto it = result.aggregateValues.constBegin(); it != result.aggregateValues.constEnd(); it++) {
184 valueCopy->setProperty(it.key(), it.value()); 181 valueCopy->setProperty(it.key(), it.value());
185 } 182 }
@@ -208,12 +205,10 @@ QPair<qint64, qint64> QueryWorker<DomainType>::executeIncrementalQuery(const Sin
208 QTime time; 205 QTime time;
209 time.start(); 206 time.start();
210 207
211 auto entityStore = EntityStore::Ptr::create(mResourceContext);
212
213 const qint64 baseRevision = resultProvider.revision() + 1; 208 const qint64 baseRevision = resultProvider.revision() + 1;
214 209 auto entityStore = EntityStore::Ptr::create(mResourceContext);
215 auto preparedQuery = ApplicationDomain::TypeImplementation<DomainType>::prepareQuery(query, entityStore); 210 auto preparedQuery = DataStoreQuery{query, ApplicationDomain::getTypeName<DomainType>(), entityStore};
216 auto resultSet = preparedQuery->update(baseRevision); 211 auto resultSet = preparedQuery.update(baseRevision);
217 SinkTrace() << "Filtered set retrieved. " << Log::TraceTime(time.elapsed()); 212 SinkTrace() << "Filtered set retrieved. " << Log::TraceTime(time.elapsed());
218 auto replayedEntities = resultSet.replaySet(0, 0, [this, query, &resultProvider](const ResultSet::Result &result) { 213 auto replayedEntities = resultSet.replaySet(0, 0, [this, query, &resultProvider](const ResultSet::Result &result) {
219 resultProviderCallback(query, resultProvider, result); 214 resultProviderCallback(query, resultProvider, result);
@@ -242,9 +237,8 @@ QPair<qint64, qint64> QueryWorker<DomainType>::executeInitialQuery(
242 } 237 }
243 238
244 auto entityStore = EntityStore::Ptr::create(mResourceContext); 239 auto entityStore = EntityStore::Ptr::create(mResourceContext);
245 240 auto preparedQuery = DataStoreQuery{query, ApplicationDomain::getTypeName<DomainType>(), entityStore};
246 auto preparedQuery = ApplicationDomain::TypeImplementation<DomainType>::prepareQuery(query, entityStore); 241 auto resultSet = preparedQuery.execute();
247 auto resultSet = preparedQuery->execute();
248 242
249 SinkTrace() << "Filtered set retrieved. " << Log::TraceTime(time.elapsed()); 243 SinkTrace() << "Filtered set retrieved. " << Log::TraceTime(time.elapsed());
250 auto replayedEntities = resultSet.replaySet(offset, batchsize, [this, query, &resultProvider](const ResultSet::Result &result) { 244 auto replayedEntities = resultSet.replaySet(offset, batchsize, [this, query, &resultProvider](const ResultSet::Result &result) {