diff --git a/src/DAO/IUserTreatmentSchemesDAO.h b/src/DAO/IUserTreatmentSchemesDAO.h index 55124a7..0435ed9 100644 --- a/src/DAO/IUserTreatmentSchemesDAO.h +++ b/src/DAO/IUserTreatmentSchemesDAO.h @@ -8,7 +8,7 @@ namespace uad { class IUserTreatmentSchemeDAO { public: - virtual std::vector FindByUserLogin(const std::string& login) = 0; + virtual std::vector FindByUserUUID(const std::string& login) = 0; virtual ~IUserTreatmentSchemeDAO() = default; }; diff --git a/src/DAO/MySQLUserTreatmentSchemesDAO.cpp b/src/DAO/MySQLUserTreatmentSchemesDAO.cpp index 6661c59..6090cd5 100644 --- a/src/DAO/MySQLUserTreatmentSchemesDAO.cpp +++ b/src/DAO/MySQLUserTreatmentSchemesDAO.cpp @@ -10,8 +10,8 @@ MySQLUserTreatmentSchemesDAO::MySQLUserTreatmentSchemesDAO(mysqlx::Session& sess { } -std::vector MySQLUserTreatmentSchemesDAO::FindByUserLogin( - const std::string& login) +std::vector MySQLUserTreatmentSchemesDAO::FindByUserUUID( + const std::string& user_uuid) { static const std::string query = R"( SELECT @@ -24,11 +24,14 @@ std::vector MySQLUserTreatmentSchemesDAO::FindByUserL ON uts.user_uuid = u.uuid LEFT JOIN up_and_down.treatment_schemes ts ON ts.user_treatment_schemes_uuid = uts.uuid - WHERE u.login = ? + WHERE u.uuid = ? ORDER BY uts.uuid )"; - mysqlx::SqlResult result = session_.sql(query).bind(login).execute(); + mysqlx::SqlResult result = session_ + .sql(query) + .bind(user_uuid) + .execute(); std::unordered_map scheme_map; @@ -62,6 +65,6 @@ std::vector MySQLUserTreatmentSchemesDAO::FindByUserL schemes.push_back(std::move(dto)); } - return schemes; + return std::move(schemes); } } // uad diff --git a/src/DAO/MySQLUserTreatmentSchemesDAO.h b/src/DAO/MySQLUserTreatmentSchemesDAO.h index 23849b0..e96ad43 100644 --- a/src/DAO/MySQLUserTreatmentSchemesDAO.h +++ b/src/DAO/MySQLUserTreatmentSchemesDAO.h @@ -11,6 +11,6 @@ class MySQLUserTreatmentSchemesDAO : public IUserTreatmentSchemeDAO public: explicit MySQLUserTreatmentSchemesDAO(mysqlx::Session& session); - std::vector FindByUserLogin(const std::string& login) override; + std::vector FindByUserUUID(const std::string& uuid) override; }; } // uad diff --git a/src/endpoints_handlers/GetUserTreatmentSchemeExecutor.h b/src/endpoints_handlers/GetUserTreatmentSchemeExecutor.h index 59a77e6..b100916 100644 --- a/src/endpoints_handlers/GetUserTreatmentSchemeExecutor.h +++ b/src/endpoints_handlers/GetUserTreatmentSchemeExecutor.h @@ -65,57 +65,7 @@ public: std::string_view user_login_ref = auth_dao_->GetUUID(auth_token); const std::string user_uuid{user_login_ref.begin(), user_login_ref.end()}; - static const std::string query = R"( - SELECT - uts.uuid, - uts.treatment_name, - uts.instructions, - ts.medication_uuid - FROM up_and_down.users u - JOIN up_and_down.user_treatment_schemes uts - ON uts.user_uuid = u.uuid - LEFT JOIN up_and_down.treatment_schemes ts - ON ts.user_treatment_schemes_uuid = uts.uuid - WHERE u.uuid = ? - ORDER BY uts.uuid - )"; - - mysqlx::SqlResult result = session_ - .sql(query) - .bind(user_uuid) - .execute(); - - std::unordered_map scheme_map; - - for (const mysqlx::Row& row : result) - { - const std::string scheme_uuid = row[0].get(); - - if (scheme_map.find(scheme_uuid) == scheme_map.end()) - { - user_treatment_scheme_dto dto; - dto.uuid = scheme_uuid; - dto.treatment_name = row[1].isNull() ? "" : row[1].get(); - dto.instructions = row[2].isNull() ? "" : row[2].get(); - - scheme_map.emplace(scheme_uuid, std::move(dto)); - } - - if (!row[3].isNull()) - { - scheme_map[scheme_uuid] - .medication_uuids - .push_back(row[3].get()); - } - } - - std::vector schemes; - schemes.reserve(scheme_map.size()); - - for (auto& [_, dto] : scheme_map) - { - schemes.push_back(std::move(dto)); - } + std::vector schemes = user_treatment_scheme_dao_->FindByUserUUID(user_uuid); http::response res{http::status::ok, req.version()}; value response_body;