aboutsummaryrefslogtreecommitdiff
path: root/src/DatabaseStorage.cpp
diff options
context:
space:
mode:
authorAleksi Lindeman <0xdec05eba@gmail.com>2018-02-13 00:46:46 +0100
committerAleksi Lindeman <0xdec05eba@gmail.com>2018-02-13 00:46:54 +0100
commit9cd9c99e4bb4bbace8ba2d4a2dbd6830750ad521 (patch)
tree2fa81b1f61f2fd04e99c832e5dee8dd2af6cf333 /src/DatabaseStorage.cpp
parentf24cd8b5708bdaf538508bfbca837299cecfba5b (diff)
Add database storage (in memory), need to store it on disk later
Diffstat (limited to 'src/DatabaseStorage.cpp')
-rw-r--r--src/DatabaseStorage.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/DatabaseStorage.cpp b/src/DatabaseStorage.cpp
new file mode 100644
index 0000000..2028c63
--- /dev/null
+++ b/src/DatabaseStorage.cpp
@@ -0,0 +1,35 @@
+#include "../include/DatabaseStorage.hpp"
+
+using namespace std;
+
+namespace odhtdb
+{
+ void DatabaseStorage::createStorage(const Key &key, vector<Group*> &&groups, u64 timestamp)
+ {
+ if(storageMap.find(key) != storageMap.end())
+ {
+ string errMsg = "Database storage with key ";
+ errMsg += key.hashedKey.toString();
+ errMsg += " already exists";
+ throw DatabaseStorageAlreadyExists(errMsg);
+ }
+
+ DatabaseStorageObjectList *databaseStorageObjectList = new DatabaseStorageObjectList();
+ databaseStorageObjectList->timestamp = timestamp;
+ databaseStorageObjectList->groups = move(groups);
+ storageMap[key] = databaseStorageObjectList;
+ }
+
+ void DatabaseStorage::appendStorage(const Key &key, DataView &data, u64 timestamp, const Signature::PublicKey &creatorPublicKey)
+ {
+ auto it = storageMap.find(key);
+ if(it == storageMap.end())
+ {
+ string errMsg = "Database storage with key ";
+ errMsg += key.hashedKey.toString();
+ errMsg += " not found";
+ throw DatabaseStorageNotFound(errMsg);
+ }
+ it->second->objects.push_back({data, timestamp, creatorPublicKey});
+ }
+}