summaryrefslogtreecommitdiffstats
path: root/common/datastorequery.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/datastorequery.h')
-rw-r--r--common/datastorequery.h20
1 files changed, 13 insertions, 7 deletions
diff --git a/common/datastorequery.h b/common/datastorequery.h
index cf9d9e2..7712ac7 100644
--- a/common/datastorequery.h
+++ b/common/datastorequery.h
@@ -27,24 +27,29 @@
27 27
28class DataStoreQuery { 28class DataStoreQuery {
29public: 29public:
30 typedef QSharedPointer<DataStoreQuery> Ptr;
31
30 DataStoreQuery(const Sink::Query &query, const QByteArray &type, Sink::Storage::Transaction &transaction, TypeIndex &typeIndex, std::function<QVariant(const Sink::Entity &entity, const QByteArray &property)> getProperty); 32 DataStoreQuery(const Sink::Query &query, const QByteArray &type, Sink::Storage::Transaction &transaction, TypeIndex &typeIndex, std::function<QVariant(const Sink::Entity &entity, const QByteArray &property)> getProperty);
31 ResultSet execute(); 33 ResultSet execute();
32 ResultSet update(qint64 baseRevision); 34 ResultSet update(qint64 baseRevision);
33 35
34private: 36protected:
35 37
36 typedef std::function<bool(const QByteArray &uid, const Sink::EntityBuffer &entityBuffer)> FilterFunction; 38 typedef std::function<bool(const QByteArray &uid, const Sink::EntityBuffer &entityBuffer)> FilterFunction;
37 typedef std::function<void(const QByteArray &uid, const Sink::EntityBuffer &entityBuffer)> BufferCallback; 39 typedef std::function<void(const QByteArray &uid, const Sink::EntityBuffer &entityBuffer)> BufferCallback;
38 40
39 QVariant getProperty(const Sink::Entity &entity, const QByteArray &property); 41 virtual QVariant getProperty(const Sink::Entity &entity, const QByteArray &property);
42
43 virtual void readEntity(const QByteArray &key, const BufferCallback &resultCallback);
40 44
41 void readEntity(const QByteArray &key, const BufferCallback &resultCallback); 45 virtual ResultSet loadInitialResultSet(QSet<QByteArray> &remainingFilters, QByteArray &remainingSorting);
46 virtual ResultSet loadIncrementalResultSet(qint64 baseRevision, QSet<QByteArray> &remainingFilters);
42 47
43 ResultSet loadInitialResultSet(QSet<QByteArray> &remainingFilters, QByteArray &remainingSorting); 48 virtual ResultSet filterAndSortSet(ResultSet &resultSet, const FilterFunction &filter, const QByteArray &sortProperty);
44 ResultSet loadIncrementalResultSet(qint64 baseRevision, QSet<QByteArray> &remainingFilters); 49 virtual ResultSet postSortFilter(ResultSet &resultSet);
50 virtual FilterFunction getFilter(const QSet<QByteArray> &remainingFilters);
45 51
46 ResultSet filterAndSortSet(ResultSet &resultSet, const FilterFunction &filter, bool initialQuery, const QByteArray &sortProperty); 52 ResultSet createFilteredSet(ResultSet &resultSet, const std::function<bool(const QByteArray &, const Sink::EntityBuffer &buffer)> &);
47 FilterFunction getFilter(const QSet<QByteArray> &remainingFilters);
48 53
49 Sink::Query mQuery; 54 Sink::Query mQuery;
50 Sink::Storage::Transaction &mTransaction; 55 Sink::Storage::Transaction &mTransaction;
@@ -52,6 +57,7 @@ private:
52 TypeIndex &mTypeIndex; 57 TypeIndex &mTypeIndex;
53 Sink::Storage::NamedDatabase mDb; 58 Sink::Storage::NamedDatabase mDb;
54 std::function<QVariant(const Sink::Entity &entity, const QByteArray &property)> mGetProperty; 59 std::function<QVariant(const Sink::Entity &entity, const QByteArray &property)> mGetProperty;
60 bool mInitialQuery;
55}; 61};
56 62
57 63