summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-11-14 16:22:07 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-11-14 16:22:07 +0100
commit175a49d623a5e37c1c20c80ed7f2077222f3c593 (patch)
tree0078863cf6c95b53095b247f55f7c3afb20e2f2d
parent3950140fadba01ea0a4a1a335ee7b6b653e45bf6 (diff)
downloadsink-175a49d623a5e37c1c20c80ed7f2077222f3c593.tar.gz
sink-175a49d623a5e37c1c20c80ed7f2077222f3c593.zip
Hide the Query::limit
-rw-r--r--common/query.h22
-rw-r--r--common/queryrunner.cpp6
-rw-r--r--tests/mailquerybenchmark.cpp4
-rw-r--r--tests/querytest.cpp2
4 files changed, 20 insertions, 14 deletions
diff --git a/common/query.h b/common/query.h
index 57f8a4d..8459850 100644
--- a/common/query.h
+++ b/common/query.h
@@ -363,30 +363,24 @@ public:
363 } 363 }
364 364
365 365
366 Query(const ApplicationDomain::Entity &value) : limit(0) 366 Query(const ApplicationDomain::Entity &value) : mLimit(0)
367 { 367 {
368 filter(value.identifier()); 368 filter(value.identifier());
369 resourceFilter(value.resourceInstanceIdentifier()); 369 resourceFilter(value.resourceInstanceIdentifier());
370 } 370 }
371 371
372 Query(Flags flags = Flags()) : limit(0), mFlags(flags) 372 Query(Flags flags = Flags()) : mLimit(0), mFlags(flags)
373 { 373 {
374 } 374 }
375 375
376 QByteArrayList requestedProperties; 376 QByteArrayList requestedProperties;
377 QByteArray parentProperty; 377 QByteArray parentProperty;
378 int limit;
379 378
380 void setFlags(Flags flags) 379 void setFlags(Flags flags)
381 { 380 {
382 mFlags = flags; 381 mFlags = flags;
383 } 382 }
384 383
385 void setLimit(int l)
386 {
387 limit = l;
388 }
389
390 bool liveQuery() const 384 bool liveQuery() const
391 { 385 {
392 return mFlags.testFlag(LiveQuery); 386 return mFlags.testFlag(LiveQuery);
@@ -397,6 +391,17 @@ public:
397 return mFlags.testFlag(SynchronousQuery); 391 return mFlags.testFlag(SynchronousQuery);
398 } 392 }
399 393
394 Query &limit(int l)
395 {
396 mLimit = l;
397 return *this;
398 }
399
400 int limit() const
401 {
402 return mLimit;
403 }
404
400 Filter getResourceFilter() const 405 Filter getResourceFilter() const
401 { 406 {
402 return mResourceFilter; 407 return mResourceFilter;
@@ -434,6 +439,7 @@ public:
434 } 439 }
435 440
436private: 441private:
442 int mLimit;
437 Flags mFlags; 443 Flags mFlags;
438 Filter mResourceFilter; 444 Filter mResourceFilter;
439}; 445};
diff --git a/common/queryrunner.cpp b/common/queryrunner.cpp
index 99f9c2d..b6c9aee 100644
--- a/common/queryrunner.cpp
+++ b/common/queryrunner.cpp
@@ -60,10 +60,10 @@ private:
60 60
61template <class DomainType> 61template <class DomainType>
62QueryRunner<DomainType>::QueryRunner(const Sink::Query &query, const Sink::ResourceContext &context, const QByteArray &bufferType) 62QueryRunner<DomainType>::QueryRunner(const Sink::Query &query, const Sink::ResourceContext &context, const QByteArray &bufferType)
63 : QueryRunnerBase(), mResourceContext(context), mResourceAccess(mResourceContext.resourceAccess()), mResultProvider(new ResultProvider<typename DomainType::Ptr>), mBatchSize(query.limit) 63 : QueryRunnerBase(), mResourceContext(context), mResourceAccess(mResourceContext.resourceAccess()), mResultProvider(new ResultProvider<typename DomainType::Ptr>), mBatchSize(query.limit())
64{ 64{
65 SinkTrace() << "Starting query. Is live:" << query.liveQuery() << " Limit: " << query.limit; 65 SinkTrace() << "Starting query. Is live:" << query.liveQuery() << " Limit: " << query.limit();
66 if (query.limit && query.sortProperty().isEmpty()) { 66 if (query.limit() && query.sortProperty().isEmpty()) {
67 SinkWarning() << "A limited query without sorting is typically a bad idea."; 67 SinkWarning() << "A limited query without sorting is typically a bad idea.";
68 } 68 }
69 auto guardPtr = QPointer<QObject>(&guard); 69 auto guardPtr = QPointer<QObject>(&guard);
diff --git a/tests/mailquerybenchmark.cpp b/tests/mailquerybenchmark.cpp
index e2c6864..702239d 100644
--- a/tests/mailquerybenchmark.cpp
+++ b/tests/mailquerybenchmark.cpp
@@ -102,7 +102,7 @@ class MailQueryBenchmark : public QObject
102 emitter->onInitialResultSetComplete([&done](const Mail::Ptr &mail) { done = true; }); 102 emitter->onInitialResultSetComplete([&done](const Mail::Ptr &mail) { done = true; });
103 emitter->fetch(Mail::Ptr()); 103 emitter->fetch(Mail::Ptr());
104 QTRY_VERIFY(done); 104 QTRY_VERIFY(done);
105 QCOMPARE(list.size(), query.limit); 105 QCOMPARE(list.size(), query.limit());
106 106
107 const auto elapsed = time.elapsed(); 107 const auto elapsed = time.elapsed();
108 108
@@ -157,7 +157,7 @@ private slots:
157 .request<Mail::Date>(); 157 .request<Mail::Date>();
158 query.sort<Mail::Date>(); 158 query.sort<Mail::Date>();
159 query.filter<Mail::Folder>("folder1"); 159 query.filter<Mail::Folder>("folder1");
160 query.limit = 1000; 160 query.limit(1000);
161 161
162 populateDatabase(50000); 162 populateDatabase(50000);
163 testLoad(query, 50000); 163 testLoad(query, 50000);
diff --git a/tests/querytest.cpp b/tests/querytest.cpp
index 594e55c..d823304 100644
--- a/tests/querytest.cpp
+++ b/tests/querytest.cpp
@@ -443,7 +443,7 @@ private slots:
443 query.resourceFilter("sink.dummy.instance1"); 443 query.resourceFilter("sink.dummy.instance1");
444 query.filter<Mail::Folder>(*folderEntity); 444 query.filter<Mail::Folder>(*folderEntity);
445 query.sort<Mail::Date>(); 445 query.sort<Mail::Date>();
446 query.limit = 1; 446 query.limit(1);
447 447
448 // Ensure all local data is processed 448 // Ensure all local data is processed
449 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(QByteArrayList() << "sink.dummy.instance1")); 449 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(QByteArrayList() << "sink.dummy.instance1"));