From 175a49d623a5e37c1c20c80ed7f2077222f3c593 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 14 Nov 2016 16:22:07 +0100 Subject: Hide the Query::limit --- common/query.h | 22 ++++++++++++++-------- common/queryrunner.cpp | 6 +++--- tests/mailquerybenchmark.cpp | 4 ++-- tests/querytest.cpp | 2 +- 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: } - Query(const ApplicationDomain::Entity &value) : limit(0) + Query(const ApplicationDomain::Entity &value) : mLimit(0) { filter(value.identifier()); resourceFilter(value.resourceInstanceIdentifier()); } - Query(Flags flags = Flags()) : limit(0), mFlags(flags) + Query(Flags flags = Flags()) : mLimit(0), mFlags(flags) { } QByteArrayList requestedProperties; QByteArray parentProperty; - int limit; void setFlags(Flags flags) { mFlags = flags; } - void setLimit(int l) - { - limit = l; - } - bool liveQuery() const { return mFlags.testFlag(LiveQuery); @@ -397,6 +391,17 @@ public: return mFlags.testFlag(SynchronousQuery); } + Query &limit(int l) + { + mLimit = l; + return *this; + } + + int limit() const + { + return mLimit; + } + Filter getResourceFilter() const { return mResourceFilter; @@ -434,6 +439,7 @@ public: } private: + int mLimit; Flags mFlags; Filter mResourceFilter; }; 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: template QueryRunner::QueryRunner(const Sink::Query &query, const Sink::ResourceContext &context, const QByteArray &bufferType) - : QueryRunnerBase(), mResourceContext(context), mResourceAccess(mResourceContext.resourceAccess()), mResultProvider(new ResultProvider), mBatchSize(query.limit) + : QueryRunnerBase(), mResourceContext(context), mResourceAccess(mResourceContext.resourceAccess()), mResultProvider(new ResultProvider), mBatchSize(query.limit()) { - SinkTrace() << "Starting query. Is live:" << query.liveQuery() << " Limit: " << query.limit; - if (query.limit && query.sortProperty().isEmpty()) { + SinkTrace() << "Starting query. Is live:" << query.liveQuery() << " Limit: " << query.limit(); + if (query.limit() && query.sortProperty().isEmpty()) { SinkWarning() << "A limited query without sorting is typically a bad idea."; } auto guardPtr = QPointer(&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 emitter->onInitialResultSetComplete([&done](const Mail::Ptr &mail) { done = true; }); emitter->fetch(Mail::Ptr()); QTRY_VERIFY(done); - QCOMPARE(list.size(), query.limit); + QCOMPARE(list.size(), query.limit()); const auto elapsed = time.elapsed(); @@ -157,7 +157,7 @@ private slots: .request(); query.sort(); query.filter("folder1"); - query.limit = 1000; + query.limit(1000); populateDatabase(50000); 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: query.resourceFilter("sink.dummy.instance1"); query.filter(*folderEntity); query.sort(); - query.limit = 1; + query.limit(1); // Ensure all local data is processed VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(QByteArrayList() << "sink.dummy.instance1")); -- cgit v1.2.3