summaryrefslogtreecommitdiffstats
path: root/common/typeindex.h
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2018-06-11 11:08:12 +0200
committerMinijackson <minijackson@riseup.net>2018-06-11 11:08:12 +0200
commita520527c8983bf1cba50fd3d86d406e7e68ddb88 (patch)
treea2b4a104e00c6a14c11651a2112b6b45ce93babd /common/typeindex.h
parentbdf8ada25760ca9f4054d9ac719c703ce8abc300 (diff)
downloadsink-a520527c8983bf1cba50fd3d86d406e7e68ddb88.tar.gz
sink-a520527c8983bf1cba50fd3d86d406e7e68ddb88.zip
Add overlap query
Diffstat (limited to 'common/typeindex.h')
-rw-r--r--common/typeindex.h14
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};