diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-06-09 17:27:29 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-06-09 17:27:29 +0200 |
commit | 555c373a0c4dfe386dcd2c88ae9548d95e307409 (patch) | |
tree | 57dd13d7e6d6b5c5929f15f4fafc19881deb84c0 /common/query.h | |
parent | 32a6f2ad3b66431c157e00ba5b1fb40c05e3c407 (diff) | |
download | sink-555c373a0c4dfe386dcd2c88ae9548d95e307409.tar.gz sink-555c373a0c4dfe386dcd2c88ae9548d95e307409.zip |
Moved query logic to EntityReader to make it reusable in the resource.
Diffstat (limited to 'common/query.h')
-rw-r--r-- | common/query.h | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/common/query.h b/common/query.h index 8a7edf6..717ed75 100644 --- a/common/query.h +++ b/common/query.h | |||
@@ -40,6 +40,23 @@ public: | |||
40 | }; | 40 | }; |
41 | Q_DECLARE_FLAGS(Flags, Flag) | 41 | Q_DECLARE_FLAGS(Flags, Flag) |
42 | 42 | ||
43 | struct Comparator { | ||
44 | enum Comparators { | ||
45 | Invalid, | ||
46 | Equals, | ||
47 | Contains | ||
48 | }; | ||
49 | |||
50 | Comparator(); | ||
51 | Comparator(const QVariant &v); | ||
52 | Comparator(const QVariant &v, Comparators c); | ||
53 | bool matches(const QVariant &v) const; | ||
54 | |||
55 | QVariant value; | ||
56 | Comparators comparator; | ||
57 | }; | ||
58 | |||
59 | |||
43 | static Query PropertyFilter(const QByteArray &key, const QVariant &value) | 60 | static Query PropertyFilter(const QByteArray &key, const QVariant &value) |
44 | { | 61 | { |
45 | Query query; | 62 | Query query; |
@@ -161,6 +178,13 @@ public: | |||
161 | } | 178 | } |
162 | 179 | ||
163 | template <typename T> | 180 | template <typename T> |
181 | Query &filter(const Comparator &comparator) | ||
182 | { | ||
183 | propertyFilter.insert(T::name, comparator); | ||
184 | return *this; | ||
185 | } | ||
186 | |||
187 | template <typename T> | ||
164 | Query &filter(const ApplicationDomain::Entity &value) | 188 | Query &filter(const ApplicationDomain::Entity &value) |
165 | { | 189 | { |
166 | propertyFilter.insert(T::name, QVariant::fromValue(value.identifier())); | 190 | propertyFilter.insert(T::name, QVariant::fromValue(value.identifier())); |
@@ -199,22 +223,6 @@ public: | |||
199 | return lhs; | 223 | return lhs; |
200 | } | 224 | } |
201 | 225 | ||
202 | struct Comparator { | ||
203 | enum Comparators { | ||
204 | Invalid, | ||
205 | Equals, | ||
206 | Contains | ||
207 | }; | ||
208 | |||
209 | Comparator(); | ||
210 | Comparator(const QVariant &v); | ||
211 | Comparator(const QVariant &v, Comparators c); | ||
212 | bool matches(const QVariant &v) const; | ||
213 | |||
214 | QVariant value; | ||
215 | Comparators comparator; | ||
216 | }; | ||
217 | |||
218 | QByteArrayList resources; | 226 | QByteArrayList resources; |
219 | QByteArrayList accounts; | 227 | QByteArrayList accounts; |
220 | QByteArrayList ids; | 228 | QByteArrayList ids; |