diff options
author | Minijackson <minijackson@riseup.net> | 2018-06-11 11:08:12 +0200 |
---|---|---|
committer | Minijackson <minijackson@riseup.net> | 2018-06-11 11:08:12 +0200 |
commit | a520527c8983bf1cba50fd3d86d406e7e68ddb88 (patch) | |
tree | a2b4a104e00c6a14c11651a2112b6b45ce93babd /common/typeindex.h | |
parent | bdf8ada25760ca9f4054d9ac719c703ce8abc300 (diff) | |
download | sink-a520527c8983bf1cba50fd3d86d406e7e68ddb88.tar.gz sink-a520527c8983bf1cba50fd3d86d406e7e68ddb88.zip |
Add overlap query
Diffstat (limited to 'common/typeindex.h')
-rw-r--r-- | common/typeindex.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/common/typeindex.h b/common/typeindex.h index 793dc1e..a8c0e10 100644 --- a/common/typeindex.h +++ b/common/typeindex.h | |||
@@ -73,10 +73,19 @@ public: | |||
73 | mCustomIndexer << CustomIndexer::Ptr::create(); | 73 | mCustomIndexer << CustomIndexer::Ptr::create(); |
74 | } | 74 | } |
75 | 75 | ||
76 | template <typename Begin, typename End> | ||
77 | void addSampledPeriodIndex(const QByteArray &beginProperty, const QByteArray &endProperty); | ||
78 | |||
79 | template <typename Begin, typename End> | ||
80 | void addSampledPeriodIndex() | ||
81 | { | ||
82 | addSampledPeriodIndex<typename Begin::Type, typename End::Type>(Begin::name, End::name); | ||
83 | } | ||
84 | |||
76 | void add(const QByteArray &identifier, const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Storage::DataStore::Transaction &transaction, const QByteArray &resourceInstanceId); | 85 | void add(const QByteArray &identifier, const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Storage::DataStore::Transaction &transaction, const QByteArray &resourceInstanceId); |
77 | void remove(const QByteArray &identifier, const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Storage::DataStore::Transaction &transaction, const QByteArray &resourceInstanceId); | 86 | void remove(const QByteArray &identifier, const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Storage::DataStore::Transaction &transaction, const QByteArray &resourceInstanceId); |
78 | 87 | ||
79 | QVector<QByteArray> query(const Sink::QueryBase &query, QSet<QByteArray> &appliedFilters, QByteArray &appliedSorting, Sink::Storage::DataStore::Transaction &transaction, const QByteArray &resourceInstanceId); | 88 | QVector<QByteArray> query(const Sink::QueryBase &query, QSet<QByteArrayList> &appliedFilters, QByteArray &appliedSorting, Sink::Storage::DataStore::Transaction &transaction, const QByteArray &resourceInstanceId); |
80 | QVector<QByteArray> lookup(const QByteArray &property, const QVariant &value, Sink::Storage::DataStore::Transaction &transaction); | 89 | QVector<QByteArray> lookup(const QByteArray &property, const QVariant &value, Sink::Storage::DataStore::Transaction &transaction); |
81 | 90 | ||
82 | template <typename Left, typename Right> | 91 | template <typename Left, typename Right> |
@@ -115,6 +124,7 @@ private: | |||
115 | void updateIndex(bool add, const QByteArray &identifier, const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Storage::DataStore::Transaction &transaction, const QByteArray &resourceInstanceId); | 124 | void updateIndex(bool add, const QByteArray &identifier, const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Storage::DataStore::Transaction &transaction, const QByteArray &resourceInstanceId); |
116 | QByteArray indexName(const QByteArray &property, const QByteArray &sortProperty = QByteArray()) const; | 125 | QByteArray indexName(const QByteArray &property, const QByteArray &sortProperty = QByteArray()) const; |
117 | QByteArray sortedIndexName(const QByteArray &property) const; | 126 | QByteArray sortedIndexName(const QByteArray &property) const; |
127 | QByteArray sampledPeriodIndexName(const QByteArray &rangeBeginProperty, const QByteArray &rangeEndProperty) const; | ||
118 | Sink::Log::Context mLogCtx; | 128 | Sink::Log::Context mLogCtx; |
119 | QByteArray mType; | 129 | QByteArray mType; |
120 | QByteArrayList mProperties; | 130 | QByteArrayList mProperties; |
@@ -122,9 +132,11 @@ private: | |||
122 | QMap<QByteArray, QByteArray> mGroupedSortedProperties; | 132 | QMap<QByteArray, QByteArray> mGroupedSortedProperties; |
123 | //<Property, ResultProperty> | 133 | //<Property, ResultProperty> |
124 | QMap<QByteArray, QByteArray> mSecondaryProperties; | 134 | QMap<QByteArray, QByteArray> mSecondaryProperties; |
135 | QSet<QPair<QByteArray, QByteArray>> mSampledPeriodProperties; | ||
125 | QList<Sink::Indexer::Ptr> mCustomIndexer; | 136 | QList<Sink::Indexer::Ptr> mCustomIndexer; |
126 | Sink::Storage::DataStore::Transaction *mTransaction; | 137 | Sink::Storage::DataStore::Transaction *mTransaction; |
127 | QHash<QByteArray, std::function<void(bool, const QByteArray &identifier, const QVariant &value, Sink::Storage::DataStore::Transaction &transaction)>> mIndexer; | 138 | QHash<QByteArray, std::function<void(bool, const QByteArray &identifier, const QVariant &value, Sink::Storage::DataStore::Transaction &transaction)>> mIndexer; |
128 | QHash<QByteArray, std::function<void(bool, const QByteArray &identifier, const QVariant &value, Sink::Storage::DataStore::Transaction &transaction)>> mSortIndexer; | 139 | QHash<QByteArray, std::function<void(bool, const QByteArray &identifier, const QVariant &value, Sink::Storage::DataStore::Transaction &transaction)>> mSortIndexer; |
129 | QHash<QByteArray, std::function<void(bool, const QByteArray &identifier, const QVariant &value, const QVariant &sortValue, Sink::Storage::DataStore::Transaction &transaction)>> mGroupedSortIndexer; | 140 | QHash<QByteArray, std::function<void(bool, const QByteArray &identifier, const QVariant &value, const QVariant &sortValue, Sink::Storage::DataStore::Transaction &transaction)>> mGroupedSortIndexer; |
141 | QHash<QPair<QByteArray, QByteArray>, std::function<void(bool, const QByteArray &identifier, const QVariant &begin, const QVariant &end, Sink::Storage::DataStore::Transaction &transaction)>> mSampledPeriodIndexer; | ||
130 | }; | 142 | }; |