diff --git a/services/tunnelbroker/docker-server/contents/server/src/Database/DatabaseManager.h b/services/tunnelbroker/docker-server/contents/server/src/Database/DatabaseManager.h --- a/services/tunnelbroker/docker-server/contents/server/src/Database/DatabaseManager.h +++ b/services/tunnelbroker/docker-server/contents/server/src/Database/DatabaseManager.h @@ -3,7 +3,6 @@ #include "AwsTools.h" #include "Constants.h" #include "DatabaseEntitiesTools.h" -#include "DeviceSessionItem.h" #include "Tools.h" #include @@ -48,6 +47,10 @@ void putPublicKeyItem(const PublicKeyItem &item); std::shared_ptr findPublicKeyItem(const std::string &deviceID); void removePublicKeyItem(const std::string &deviceID); + + void putMessageItem(const MessageItem &item); + std::shared_ptr findMessageItem(const std::string &messageID); + void removeMessageItem(const std::string &messageID); }; } // namespace database diff --git a/services/tunnelbroker/docker-server/contents/server/src/Database/DatabaseManager.cpp b/services/tunnelbroker/docker-server/contents/server/src/Database/DatabaseManager.cpp --- a/services/tunnelbroker/docker-server/contents/server/src/Database/DatabaseManager.cpp +++ b/services/tunnelbroker/docker-server/contents/server/src/Database/DatabaseManager.cpp @@ -160,6 +160,43 @@ this->innerRemoveItem(*(createItemByType()), deviceID); } +void DatabaseManager::putMessageItem(const MessageItem &item) { + Aws::DynamoDB::Model::PutItemRequest request; + request.SetTableName(item.getTableName()); + request.AddItem( + MessageItem::FIELD_MESSAGE_ID, + Aws::DynamoDB::Model::AttributeValue(item.getMessageID())); + request.AddItem( + MessageItem::FIELD_FROM_DEVICE_ID, + Aws::DynamoDB::Model::AttributeValue(item.getFromDeviceID())); + request.AddItem( + MessageItem::FIELD_TO_DEVICE_ID, + Aws::DynamoDB::Model::AttributeValue(item.getToDeviceID())); + request.AddItem( + MessageItem::FIELD_PAYLOAD, + Aws::DynamoDB::Model::AttributeValue(item.getPayload())); + request.AddItem( + MessageItem::FIELD_BLOB_HASHES, + Aws::DynamoDB::Model::AttributeValue(item.getBlobHashes())); + request.AddItem( + MessageItem::FIELD_EXPIRE, + Aws::DynamoDB::Model::AttributeValue(std::to_string(item.getExpire()))); + this->innerPutItem(std::make_shared(item), request); +} + +std::shared_ptr +DatabaseManager::findMessageItem(const std::string &messageID) { + Aws::DynamoDB::Model::GetItemRequest request; + request.AddKey( + MessageItem::FIELD_MESSAGE_ID, + Aws::DynamoDB::Model::AttributeValue(messageID)); + return std::move(this->innerFindItem(request)); +} + +void DatabaseManager::removeMessageItem(const std::string &messageID) { + this->innerRemoveItem(*(createItemByType()), messageID); +} + } // namespace database } // namespace network } // namespace comm diff --git a/services/tunnelbroker/docker-server/contents/server/src/Service/TunnelbrokerServiceImpl.cpp b/services/tunnelbroker/docker-server/contents/server/src/Service/TunnelbrokerServiceImpl.cpp --- a/services/tunnelbroker/docker-server/contents/server/src/Service/TunnelbrokerServiceImpl.cpp +++ b/services/tunnelbroker/docker-server/contents/server/src/Service/TunnelbrokerServiceImpl.cpp @@ -20,7 +20,9 @@ config::ConfigManager::getInstance().getParameter( config::ConfigManager::OPTION_DYNAMODB_SESSIONS_VERIFICATION_TABLE), config::ConfigManager::getInstance().getParameter( - config::ConfigManager::OPTION_DYNAMODB_SESSIONS_PUBLIC_KEY_TABLE)}; + config::ConfigManager::OPTION_DYNAMODB_SESSIONS_PUBLIC_KEY_TABLE), + config::ConfigManager::getInstance().getParameter( + config::ConfigManager::OPTION_DYNAMODB_MESSAGES_TABLE)}; for (const std::string &table : tablesList) { if (!database::DatabaseManager::getInstance().isTableAvailable(table)) { throw std::runtime_error(