diff --git a/common/cpp/src/database/mongodb_client.cpp b/common/cpp/src/database/mongodb_client.cpp index 9d54658f43af71418e1ad5693ab6eeff145fc94c..ab20bd80aec5855814a3670b54edea2edb3a8f0d 100644 --- a/common/cpp/src/database/mongodb_client.cpp +++ b/common/cpp/src/database/mongodb_client.cpp @@ -238,7 +238,7 @@ Error MongoDBClient::AddBsonDocumentToArray(bson_t* query, bson_t* update, bool } Error MongoDBClient::InsertAsSubset(const std::string &collection, const FileInfo &file, - uint64_t id_in_subset, + uint64_t subset_id, uint64_t subset_size, bool ignore_duplicates) const { if (!connected_) { @@ -248,14 +248,12 @@ Error MongoDBClient::InsertAsSubset(const std::string &collection, const FileInf UpdateCurrentCollectionIfNeeded(collection); Error err; - auto new_fi = file; - new_fi.id = id_in_subset; - auto document = PrepareBsonDocument(new_fi, &err); + auto document = PrepareBsonDocument(file, &err); if (err) { return err; } - auto query = BCON_NEW ("$and", "[", "{", "_id", BCON_INT64(file.id), "}", "{", "images._id", "{", "$ne", - BCON_INT64(id_in_subset), "}", "}", "]"); + auto query = BCON_NEW ("$and", "[", "{", "_id", BCON_INT64(subset_id), "}", "{", "images._id", "{", "$ne", + BCON_INT64(file.id), "}", "}", "]"); auto update = BCON_NEW ("$setOnInsert", "{", "size", BCON_INT64(subset_size), "timestamp", BCON_INT64((int64_t) NanosecsEpochFromTimePoint(file.timestamp)), @@ -337,9 +335,9 @@ Error MongoDBClient::GetById(const std::string &collection, uint64_t id, FileInf return nullptr; } -Error MongoDBClient::GetDataSetById(const std::string &collection, uint64_t set_id, uint64_t id, FileInfo* file) const { +Error MongoDBClient::GetDataSetById(const std::string &collection, uint64_t id_in_set, uint64_t id, FileInfo* file) const { std::string record_str; - auto err = GetRecordFromDb(collection, set_id, GetRecordMode::kById, &record_str); + auto err = GetRecordFromDb(collection, id, GetRecordMode::kById, &record_str); if (err) { return err; } @@ -350,7 +348,7 @@ Error MongoDBClient::GetDataSetById(const std::string &collection, uint64_t set_ } for (const auto &fileinfo : dataset.content) { - if (fileinfo.id == id) { + if (fileinfo.id == id_in_set) { *file = fileinfo; return nullptr; } diff --git a/common/cpp/src/database/mongodb_client.h b/common/cpp/src/database/mongodb_client.h index c932760f0b215d815ac4e97989aeff257d248520..f06b4f9479e33a6b54ef9c7d497e2b1f3c2e6b8d 100644 --- a/common/cpp/src/database/mongodb_client.h +++ b/common/cpp/src/database/mongodb_client.h @@ -44,11 +44,11 @@ class MongoDBClient final : public Database { MongoDBClient(); Error Connect(const std::string& address, const std::string& database) override; Error Insert(const std::string& collection, const FileInfo& file, bool ignore_duplicates) const override; - Error InsertAsSubset(const std::string& collection, const FileInfo& file, uint64_t id_in_subset, uint64_t subset_size, + Error InsertAsSubset(const std::string& collection, const FileInfo& file, uint64_t subset_id, uint64_t subset_size, bool ignore_duplicates) const override; Error Upsert(const std::string& collection, uint64_t id, const uint8_t* data, uint64_t size) const override; Error GetById(const std::string& collection, uint64_t id, FileInfo* file) const override; - Error GetDataSetById(const std::string& collection, uint64_t set_id, uint64_t id, FileInfo* file) const override; + Error GetDataSetById(const std::string& collection, uint64_t id_in_set, uint64_t id, FileInfo* file) const override; Error GetStreamInfo(const std::string& collection, StreamInfo* info) const override; Error GetLastStream(StreamInfo* info) const override; ~MongoDBClient() override; diff --git a/receiver/src/request_handler/request_handler_db_check_request.cpp b/receiver/src/request_handler/request_handler_db_check_request.cpp index 23d88c10f215498c7d37afbe1eb0decb17d117bb..f2d6f0b9df1494e1fda3ab4b347e35ed5eb36774 100644 --- a/receiver/src/request_handler/request_handler_db_check_request.cpp +++ b/receiver/src/request_handler/request_handler_db_check_request.cpp @@ -29,10 +29,10 @@ Error RequestHandlerDbCheckRequest::GetRecordFromDb(const Request* request, File } return err; } else { - auto subset_id = request->GetCustomData()[1]; - err = db_client__->GetDataSetById(col_name, subset_id, id, record); + auto id_in_set = request->GetCustomData()[1]; + err = db_client__->GetDataSetById(col_name, id_in_set, id, record); if (!err) { - log__->Debug(std::string{"get subset record id "} + std::to_string(subset_id) + " from " + col_name + " in " + + log__->Debug(std::string{"get subset record id "} + std::to_string(id) + " from " + col_name + " in " + db_name_ + " at " + GetReceiverConfig()->database_uri); } return err; diff --git a/receiver/src/request_handler/request_handler_db_write.cpp b/receiver/src/request_handler/request_handler_db_write.cpp index 9a8aaa64f5ee371f828c723a194eff70fecdf38f..6477b8fe4eb29cbb853f2b0513831995de0ba0cf 100644 --- a/receiver/src/request_handler/request_handler_db_write.cpp +++ b/receiver/src/request_handler/request_handler_db_write.cpp @@ -65,12 +65,13 @@ Error RequestHandlerDbWrite::InsertRecordToDb(const Request* request) const { " at " + GetReceiverConfig()->database_uri); } } else { - auto id_in_subset = request->GetCustomData()[1]; + auto subset_id = file_info.id; + file_info.id = request->GetCustomData()[1]; auto subset_size = request->GetCustomData()[2]; - err = db_client__->InsertAsSubset(col_name, file_info, id_in_subset, subset_size, false); + err = db_client__->InsertAsSubset(col_name, file_info, subset_id, subset_size, false); if (!err) { log__->Debug(std::string{"insert record as subset id "} + std::to_string(file_info.id) + ", id in subset: " + - std::to_string(id_in_subset) + " to " + col_name + " in " + + std::to_string(subset_id) + " to " + col_name + " in " + db_name_ + " at " + GetReceiverConfig()->database_uri); } diff --git a/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp b/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp index d54e63487b1af0a26be2d1170d2a2ca207db81b5..8e04f6e4790e39145b3217d6438b0db8a4104606 100644 --- a/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp +++ b/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp @@ -17,8 +17,8 @@ void Assert(const Error& error, const std::string& expect) { } struct Args { - std::string keyword; - int file_id; + std::string keyword; + int file_id; }; Args GetArgs(int argc, char* argv[]) { @@ -64,7 +64,7 @@ int main(int argc, char* argv[]) { if (args.keyword == "OK") { // check retrieve asapo::FileInfo fi_db; - err = db.GetDataSetById("test", subset_id, fi.id, &fi_db); + err = db.GetDataSetById("test", fi.id,subset_id, &fi_db); M_AssertTrue(fi_db == fi, "get record from db"); M_AssertEq(nullptr, err); err = db.GetDataSetById("test", 0, 0, &fi_db);