#pragma once #include "sinkcommon_export.h" #include #include #include #include "storage.h" /** * An index for value pairs. */ class SINKCOMMON_EXPORT Index { public: enum ErrorCodes { IndexNotAvailable = -1 }; class Error { public: Error(const QByteArray &s, int c, const QByteArray &m) : store(s), message(m), code(c) {} QByteArray store; QByteArray message; int code; }; Index(const QString &storageRoot, const QString &name, Sink::Storage::AccessMode mode = Sink::Storage::ReadOnly); Index(const QByteArray &name, Sink::Storage::Transaction &); void add(const QByteArray &key, const QByteArray &value); void remove(const QByteArray &key, const QByteArray &value); void lookup(const QByteArray &key, const std::function &resultHandler, const std::function &errorHandler); QByteArray lookup(const QByteArray &key); private: Q_DISABLE_COPY(Index); Sink::Storage::Transaction mTransaction; Sink::Storage::NamedDatabase mDb; };