aboutsummaryrefslogtreecommitdiff
path: root/src/DatabaseStorage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/DatabaseStorage.cpp')
-rw-r--r--src/DatabaseStorage.cpp36
1 files changed, 25 insertions, 11 deletions
diff --git a/src/DatabaseStorage.cpp b/src/DatabaseStorage.cpp
index 62a2e77..25d41fb 100644
--- a/src/DatabaseStorage.cpp
+++ b/src/DatabaseStorage.cpp
@@ -1,35 +1,49 @@
#include "../include/DatabaseStorage.hpp"
+#include <cstring>
using namespace std;
namespace odhtdb
{
- void DatabaseStorage::createStorage(const Key &key, vector<Group*> &&groups, u64 timestamp)
+ void DatabaseStorage::createStorage(const Hash &hash, Group *creatorGroup, u64 timestamp, const u8 *data, usize dataSize)
{
- if(storageMap.find(key) != storageMap.end())
+ /*
+ if(storageMap.find(hash) != storageMap.end())
{
- string errMsg = "Database storage with key ";
- errMsg += key.hashedKey.toString();
+ string errMsg = "Database storage with hash ";
+ errMsg += hash.toString();
errMsg += " already exists";
throw DatabaseStorageAlreadyExists(errMsg);
}
+ */
DatabaseStorageObjectList *databaseStorageObjectList = new DatabaseStorageObjectList();
databaseStorageObjectList->timestamp = timestamp;
- databaseStorageObjectList->groups = move(groups);
- storageMap[key] = databaseStorageObjectList;
+ databaseStorageObjectList->groups.push_back(creatorGroup);
+ databaseStorageObjectList->createData = new u8[dataSize];
+ memcpy(databaseStorageObjectList->createData, data, dataSize);
+ databaseStorageObjectList->createDataSize = dataSize;
+ storageMap[hash] = databaseStorageObjectList;
}
- void DatabaseStorage::appendStorage(const Key &key, DataView &data, u64 timestamp, const Signature::PublicKey &creatorPublicKey)
+ void DatabaseStorage::appendStorage(const Hash &hash, DataView &data, u64 timestamp, const Signature::PublicKey &creatorPublicKey)
{
- auto it = storageMap.find(key);
+ auto it = storageMap.find(hash);
if(it == storageMap.end())
{
- string errMsg = "Database storage with key ";
- errMsg += key.hashedKey.toString();
- errMsg += " not found. Storage for a key needs to be created before data can be appended to it";
+ string errMsg = "Database storage with hash ";
+ errMsg += hash.toString();
+ errMsg += " not found. Storage for a hash needs to be created before data can be appended to it";
throw DatabaseStorageNotFound(errMsg);
}
it->second->objects.push_back({data, timestamp, creatorPublicKey});
}
+
+ const DatabaseStorageObjectList* DatabaseStorage::getStorage(const Hash &hash) const
+ {
+ auto it = storageMap.find(hash);
+ if(it != storageMap.end())
+ return it->second;
+ return nullptr;
+ }
}