#include "../include/DatabaseStorage.hpp" #include using namespace std; namespace odhtdb { void DatabaseStorage::createStorage(const Hash &hash, Group *creatorGroup, u64 timestamp, const u8 *data, usize dataSize) { /* if(storageMap.find(hash) != storageMap.end()) { string errMsg = "Database storage with hash "; errMsg += hash.toString(); errMsg += " already exists"; throw DatabaseStorageAlreadyExists(errMsg); } */ DatabaseStorageObjectList *databaseStorageObjectList = new DatabaseStorageObjectList(); databaseStorageObjectList->timestamp = timestamp; 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 Hash &hash, DataView &data, u64 timestamp, const Signature::PublicKey &creatorPublicKey) { auto it = storageMap.find(hash); if(it == storageMap.end()) { 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; } }