diff options
Diffstat (limited to 'src/database/include/database.hpp')
| -rw-r--r-- | src/database/include/database.hpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/database/include/database.hpp b/src/database/include/database.hpp index 263153fb..327db3cb 100644 --- a/src/database/include/database.hpp +++ b/src/database/include/database.hpp @@ -18,6 +18,7 @@ #include <vector> #include "collation.hpp" +#include "cppbor.h" #include "file_gatherer.hpp" #include "index.hpp" #include "leveldb/cache.h" @@ -105,6 +106,9 @@ class Database { ~Database(); + auto Put(const std::string& key, const std::string& val) -> void; + auto Get(const std::string& key) -> std::optional<std::string>; + auto Update() -> std::future<void>; auto GetTrackPath(TrackId id) -> std::future<std::optional<std::pmr::string>>; @@ -194,6 +198,9 @@ auto Database::ParseRecord<std::pmr::string>(const leveldb::Slice& key, */ class Iterator { public: + static auto Parse(std::weak_ptr<Database>, const cppbor::Array&) + -> std::optional<Iterator>; + Iterator(std::weak_ptr<Database>, const IndexInfo&); Iterator(std::weak_ptr<Database>, const Continuation&); Iterator(const Iterator&); @@ -213,7 +220,13 @@ class Iterator { auto Size() const -> size_t; + auto cbor() const -> cppbor::Array&&; + private: + Iterator(std::weak_ptr<Database>, + std::optional<Continuation>&&, + std::optional<Continuation>&&); + friend class TrackIterator; auto InvokeNull(Callback) -> void; @@ -227,6 +240,9 @@ class Iterator { class TrackIterator { public: + static auto Parse(std::weak_ptr<Database>, const cppbor::Array&) + -> std::optional<TrackIterator>; + TrackIterator(const Iterator&); TrackIterator(const TrackIterator&); @@ -235,7 +251,11 @@ class TrackIterator { auto Next() -> std::optional<TrackId>; auto Size() const -> size_t; + auto cbor() const -> cppbor::Array&&; + private: + TrackIterator(std::weak_ptr<Database>); + auto NextLeaf() -> void; std::weak_ptr<Database> db_; |
