diff --git a/services/backup/src/DatabaseManager.h b/services/backup/src/DatabaseManager.h --- a/services/backup/src/DatabaseManager.h +++ b/services/backup/src/DatabaseManager.h @@ -28,6 +28,8 @@ void removeBackupItem(std::shared_ptr item); void putLogItem(const LogItem &item); + std::shared_ptr + findLogItem(const std::string &backupID, const std::string &logID); std::vector> findLogItemsForBackup(const std::string &backupID); void removeLogItem(std::shared_ptr item); diff --git a/services/backup/src/DatabaseManager.cpp b/services/backup/src/DatabaseManager.cpp --- a/services/backup/src/DatabaseManager.cpp +++ b/services/backup/src/DatabaseManager.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include @@ -121,6 +122,18 @@ this->innerPutItem(std::make_shared(item), request); } +std::shared_ptr DatabaseManager::findLogItem( + const std::string &backupID, + const std::string &logID) { + Aws::DynamoDB::Model::GetItemRequest request; + request.AddKey( + LogItem::FIELD_BACKUP_ID, Aws::DynamoDB::Model::AttributeValue(backupID)); + request.AddKey( + LogItem::FIELD_LOG_ID, Aws::DynamoDB::Model::AttributeValue(logID)); + + return std::move(this->innerFindItem(request)); +} + std::vector> DatabaseManager::findLogItemsForBackup(const std::string &backupID) { std::vector> result; diff --git a/services/backup/test/DatabaseManagerTest.cpp b/services/backup/test/DatabaseManagerTest.cpp --- a/services/backup/test/DatabaseManagerTest.cpp +++ b/services/backup/test/DatabaseManagerTest.cpp @@ -71,11 +71,15 @@ for (const std::string &logID : logIDs1) { DatabaseManager::getInstance().putLogItem( generateLogItem(backupID1, logID)); + EXPECT_NE( + DatabaseManager::getInstance().findLogItem(backupID1, logID), nullptr); } std::vector logIDs2 = {"log021", "log022"}; for (const std::string &logID : logIDs2) { DatabaseManager::getInstance().putLogItem( generateLogItem(backupID2, logID)); + EXPECT_NE( + DatabaseManager::getInstance().findLogItem(backupID2, logID), nullptr); } std::vector> items1 = @@ -90,6 +94,9 @@ for (size_t i = 0; i < items1.size(); ++i) { EXPECT_EQ(logIDs1.at(i), items1.at(i)->getLogID()); DatabaseManager::getInstance().removeLogItem(items1.at(i)); + EXPECT_EQ( + DatabaseManager::getInstance().findLogItem(backupID1, logIDs1.at(i)), + nullptr); } EXPECT_EQ( DatabaseManager::getInstance().findLogItemsForBackup(backupID1).size(), @@ -98,6 +105,9 @@ for (size_t i = 0; i < items2.size(); ++i) { EXPECT_EQ(logIDs2.at(i), items2.at(i)->getLogID()); DatabaseManager::getInstance().removeLogItem(items2.at(i)); + EXPECT_EQ( + DatabaseManager::getInstance().findLogItem(backupID2, logIDs2.at(i)), + nullptr); } EXPECT_EQ( DatabaseManager::getInstance().findLogItemsForBackup(backupID2).size(),