summaryrefslogtreecommitdiffstats
path: root/common/query.h
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-06-09 17:27:29 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-06-09 17:27:29 +0200
commit555c373a0c4dfe386dcd2c88ae9548d95e307409 (patch)
tree57dd13d7e6d6b5c5929f15f4fafc19881deb84c0 /common/query.h
parent32a6f2ad3b66431c157e00ba5b1fb40c05e3c407 (diff)
downloadsink-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.h40
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;