summaryrefslogtreecommitdiff
path: root/src/database/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/database/include')
-rw-r--r--src/database/include/database.hpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/database/include/database.hpp b/src/database/include/database.hpp
index 544e4a62..972871db 100644
--- a/src/database/include/database.hpp
+++ b/src/database/include/database.hpp
@@ -183,4 +183,21 @@ auto Database::ParseRecord<std::pmr::string>(const leveldb::Slice& key,
const leveldb::Slice& val)
-> std::shared_ptr<std::pmr::string>;
+/*
+ * Utility for accessing a large set of database records, one record at a time.
+ */
+class Iterator {
+ public:
+ Iterator(std::weak_ptr<Database>, const IndexInfo&);
+ Iterator(std::weak_ptr<Database>, const Continuation&);
+
+ auto Prev() -> std::optional<IndexRecord>;
+ auto Next() -> std::optional<IndexRecord>;
+
+ private:
+ std::weak_ptr<Database> db_;
+ std::optional<Continuation> prev_pos_;
+ std::optional<Continuation> current_pos_;
+};
+
} // namespace database