Changeset View
Changeset View
Standalone View
Standalone View
common/datastorequery.h
Show All 16 Lines | |||||
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | 17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
18 | */ | 18 | */ | ||
19 | #pragma once | 19 | #pragma once | ||
20 | 20 | | |||
21 | #include "query.h" | 21 | #include "query.h" | ||
22 | #include "resultset.h" | 22 | #include "resultset.h" | ||
23 | #include "log.h" | 23 | #include "log.h" | ||
24 | #include "storage/entitystore.h" | 24 | #include "storage/entitystore.h" | ||
25 | 25 | #include "storage/key.h" | |||
26 | 26 | | |||
27 | class Source; | 27 | class Source; | ||
28 | class Bloom; | 28 | class Bloom; | ||
29 | class Reduce; | 29 | class Reduce; | ||
30 | class Filter; | 30 | class Filter; | ||
31 | class FilterBase; | 31 | class FilterBase; | ||
32 | 32 | | |||
33 | class DataStoreQuery { | 33 | class DataStoreQuery { | ||
Show All 20 Lines | 39 | public: | |||
54 | 54 | | |||
55 | State::Ptr getState(); | 55 | State::Ptr getState(); | ||
56 | 56 | | |||
57 | private: | 57 | private: | ||
58 | 58 | | |||
59 | typedef std::function<bool(const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation)> FilterFunction; | 59 | typedef std::function<bool(const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation)> FilterFunction; | ||
60 | typedef std::function<void(const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation)> BufferCallback; | 60 | typedef std::function<void(const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation)> BufferCallback; | ||
61 | 61 | | |||
62 | QVector<QByteArray> indexLookup(const QByteArray &property, const QVariant &value); | 62 | QVector<Sink::Storage::Identifier> indexLookup(const QByteArray &property, const QVariant &value); | ||
63 | 63 | | |||
64 | void readEntity(const QByteArray &key, const BufferCallback &resultCallback); | 64 | void readEntity(const Sink::Storage::Identifier &id, const BufferCallback &resultCallback); | ||
65 | void readPrevious(const QByteArray &key, const std::function<void (const Sink::ApplicationDomain::ApplicationDomainType &)> &callback); | 65 | void readPrevious(const Sink::Storage::Identifier &id, const std::function<void (const Sink::ApplicationDomain::ApplicationDomainType &)> &callback); | ||
66 | 66 | | |||
67 | ResultSet createFilteredSet(ResultSet &resultSet, const FilterFunction &); | 67 | ResultSet createFilteredSet(ResultSet &resultSet, const FilterFunction &); | ||
68 | QVector<QByteArray> loadIncrementalResultSet(qint64 baseRevision); | 68 | QVector<Sink::Storage::Key> loadIncrementalResultSet(qint64 baseRevision); | ||
69 | 69 | | |||
70 | void setupQuery(const Sink::QueryBase &query_); | 70 | void setupQuery(const Sink::QueryBase &query_); | ||
71 | QByteArrayList executeSubquery(const Sink::QueryBase &subquery); | 71 | QByteArrayList executeSubquery(const Sink::QueryBase &subquery); | ||
72 | 72 | | |||
73 | const QByteArray mType; | 73 | const QByteArray mType; | ||
74 | QSharedPointer<FilterBase> mCollector; | 74 | QSharedPointer<FilterBase> mCollector; | ||
75 | QSharedPointer<Source> mSource; | 75 | QSharedPointer<Source> mSource; | ||
76 | 76 | | |||
Show All 14 Lines | 83 | public: | |||
91 | FilterBase(FilterBase::Ptr source, DataStoreQuery *store) | 91 | FilterBase(FilterBase::Ptr source, DataStoreQuery *store) | ||
92 | : mSource(source), | 92 | : mSource(source), | ||
93 | mDatastore(store) | 93 | mDatastore(store) | ||
94 | { | 94 | { | ||
95 | } | 95 | } | ||
96 | 96 | | |||
97 | virtual ~FilterBase(){} | 97 | virtual ~FilterBase(){} | ||
98 | 98 | | |||
99 | void readEntity(const QByteArray &key, const std::function<void(const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation)> &callback) | 99 | void readEntity(const Sink::Storage::Identifier &id, const std::function<void(const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation)> &callback) | ||
100 | { | 100 | { | ||
101 | Q_ASSERT(mDatastore); | 101 | Q_ASSERT(mDatastore); | ||
102 | mDatastore->readEntity(key, callback); | 102 | mDatastore->readEntity(id, callback); | ||
103 | } | 103 | } | ||
104 | 104 | | |||
105 | QVector<QByteArray> indexLookup(const QByteArray &property, const QVariant &value) | 105 | QVector<Sink::Storage::Identifier> indexLookup(const QByteArray &property, const QVariant &value) | ||
106 | { | 106 | { | ||
107 | Q_ASSERT(mDatastore); | 107 | Q_ASSERT(mDatastore); | ||
108 | return mDatastore->indexLookup(property, value); | 108 | return mDatastore->indexLookup(property, value); | ||
109 | } | 109 | } | ||
110 | 110 | | |||
111 | void readPrevious(const QByteArray &key, const std::function<void (const Sink::ApplicationDomain::ApplicationDomainType &)> &callback) | 111 | void readPrevious(const Sink::Storage::Identifier &id, const std::function<void (const Sink::ApplicationDomain::ApplicationDomainType &)> &callback) | ||
112 | { | 112 | { | ||
113 | Q_ASSERT(mDatastore); | 113 | Q_ASSERT(mDatastore); | ||
114 | mDatastore->readPrevious(key, callback); | 114 | mDatastore->readPrevious(id, callback); | ||
115 | } | 115 | } | ||
116 | 116 | | |||
117 | virtual void skip() { mSource->skip(); } | 117 | virtual void skip() { mSource->skip(); } | ||
118 | 118 | | |||
119 | //Returns true for as long as a result is available | 119 | //Returns true for as long as a result is available | ||
120 | virtual bool next(const std::function<void(const ResultSet::Result &)> &callback) = 0; | 120 | virtual bool next(const std::function<void(const ResultSet::Result &)> &callback) = 0; | ||
121 | 121 | | |||
122 | virtual void updateComplete() { } | 122 | virtual void updateComplete() { } | ||
123 | 123 | | |||
124 | FilterBase::Ptr mSource; | 124 | FilterBase::Ptr mSource; | ||
125 | DataStoreQuery *mDatastore{nullptr}; | 125 | DataStoreQuery *mDatastore{nullptr}; | ||
126 | bool mIncremental = false; | 126 | bool mIncremental = false; | ||
127 | }; | 127 | }; | ||
128 | 128 | |