diff --git a/services/backup/docker-server/contents/server/CMakeLists.txt b/services/backup/docker-server/contents/server/CMakeLists.txt --- a/services/backup/docker-server/contents/server/CMakeLists.txt +++ b/services/backup/docker-server/contents/server/CMakeLists.txt @@ -49,7 +49,7 @@ set(DEV_HEADERS_PATH "./dev") endif() -file(GLOB SOURCE_CODE "./src/*.cpp") +file(GLOB SOURCE_CODE "./src/*.cpp" "./src/**/*.cpp") list(FILTER SOURCE_CODE EXCLUDE REGEX ".*.dev.cpp$") foreach (ITEM ${DEV_SOURCE_CODE}) diff --git a/services/backup/docker-server/contents/server/src/DatabaseEntities/DatabaseEntitiesTools.h b/services/backup/docker-server/contents/server/src/DatabaseEntities/DatabaseEntitiesTools.h --- a/services/backup/docker-server/contents/server/src/DatabaseEntities/DatabaseEntitiesTools.h +++ b/services/backup/docker-server/contents/server/src/DatabaseEntities/DatabaseEntitiesTools.h @@ -2,6 +2,8 @@ #include "Item.h" +#include "UserPersistItem.h" + #include #include diff --git a/services/backup/docker-server/contents/server/src/DatabaseEntities/UserPersistItem.h b/services/backup/docker-server/contents/server/src/DatabaseEntities/UserPersistItem.h new file mode 100644 --- /dev/null +++ b/services/backup/docker-server/contents/server/src/DatabaseEntities/UserPersistItem.h @@ -0,0 +1,45 @@ +#pragma once + +#include "Item.h" + +#include + +namespace comm { +namespace network { +namespace database { + +class UserPersistItem : public Item { + + std::string userID; + std::vector backupIDs; + std::string recoveryData; + + void validate() const override; + +public: + static std::string tableName; + static const std::string FIELD_USER_ID; + static const std::string FIELD_BACKUP_IDS; + static const std::string FIELD_RECOVERY_DATA; + + UserPersistItem() { + } + UserPersistItem( + const std::string userID, + std::vector backupIDs, + std::string recoveryData); + UserPersistItem(const AttributeValues &itemFromDB); + + void assignItemFromDatabase(const AttributeValues &itemFromDB) override; + + std::string getTableName() const override; + std::string getPrimaryKey() const override; + + std::string getUserID() const; + std::vector getBackupIDs() const; + std::string getRecoveryData() const; +}; + +} // namespace database +} // namespace network +} // namespace comm diff --git a/services/backup/docker-server/contents/server/src/DatabaseEntities/UserPersistItem.cpp b/services/backup/docker-server/contents/server/src/DatabaseEntities/UserPersistItem.cpp new file mode 100644 --- /dev/null +++ b/services/backup/docker-server/contents/server/src/DatabaseEntities/UserPersistItem.cpp @@ -0,0 +1,65 @@ +#include "UserPersistItem.h" + +#include "AwsTools.h" +#include "Constants.h" + +namespace comm { +namespace network { +namespace database { + +const std::string UserPersistItem::FIELD_USER_ID = "userID"; +const std::string UserPersistItem::FIELD_BACKUP_IDS = "backupIDs"; +const std::string UserPersistItem::FIELD_RECOVERY_DATA = "recoveryData"; + +std::string UserPersistItem::tableName = USER_PERSIST_TABLE_NAME; + +UserPersistItem::UserPersistItem( + const std::string userID, + std::vector backupIDs, + std::string recoveryData) + : userID(userID), backupIDs(backupIDs), recoveryData(recoveryData) { + this->validate(); +} + +UserPersistItem::UserPersistItem(const AttributeValues &itemFromDB) { + this->assignItemFromDatabase(itemFromDB); +} + +void UserPersistItem::validate() const { + if (!this->userID.size()) { + throw std::runtime_error("userID empty"); + } +} + +void UserPersistItem::assignItemFromDatabase( + const AttributeValues &itemFromDB) { + this->userID = itemFromDB.at(UserPersistItem::FIELD_USER_ID).GetS(); + this->backupIDs = itemFromDB.at(UserPersistItem::FIELD_BACKUP_IDS).GetSS(); + this->recoveryData = + itemFromDB.at(UserPersistItem::FIELD_RECOVERY_DATA).GetS(); + this->validate(); +} + +std::string UserPersistItem::getTableName() const { + return UserPersistItem::tableName; +} + +std::string UserPersistItem::getPrimaryKey() const { + return UserPersistItem::FIELD_USER_ID; +} + +std::string UserPersistItem::getUserID() const { + return this->userID; +} + +std::vector UserPersistItem::getBackupIDs() const { + return this->backupIDs; +} + +std::string UserPersistItem::getRecoveryData() const { + return this->recoveryData; +} + +} // namespace database +} // namespace network +} // namespace comm