From 00a2777fc154537fe9fc9cfac082a29f70bf6b75 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Tue, 13 Feb 2018 00:46:46 +0100 Subject: Add database storage (in memory), need to store it on disk later --- src/DatabaseStorage.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/DatabaseStorage.cpp (limited to 'src/DatabaseStorage.cpp') 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 &&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}); + } +} -- cgit v1.2.3