summaryrefslogtreecommitdiff
path: root/src/database/include/database.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/database/include/database.hpp')
-rw-r--r--src/database/include/database.hpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/database/include/database.hpp b/src/database/include/database.hpp
index b9df5fd4..cb1437df 100644
--- a/src/database/include/database.hpp
+++ b/src/database/include/database.hpp
@@ -1,13 +1,18 @@
#pragma once
+#include <string>
#include <memory>
+#include <optional>
#include "leveldb/cache.h"
#include "leveldb/db.h"
+#include "leveldb/iterator.h"
#include "result.hpp"
namespace database {
+class Iterator;
+
class Database {
public:
enum DatabaseError {
@@ -18,7 +23,10 @@ class Database {
~Database();
auto Initialise() -> void;
- auto Update() -> void;
+ auto ByTitle() -> Iterator;
+
+ Database(const Database&) = delete;
+ Database& operator=(const Database&) = delete;
private:
std::unique_ptr<leveldb::DB> db_;
@@ -27,4 +35,17 @@ class Database {
Database(leveldb::DB* db, leveldb::Cache* cache);
};
+class Iterator {
+ public:
+ explicit Iterator(leveldb::Iterator *it) : it_(it) {}
+
+ auto Next() -> std::optional<std::string>;
+
+ Iterator(const Iterator&) = delete;
+ Iterator& operator=(const Iterator&) = delete;
+
+ private:
+ std::unique_ptr<leveldb::Iterator> it_;
+};
+
} // namespace database