From 22be5842be6324ba2e0ad09126148ae0dcfe4593 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD?= Date: Sat, 17 Jan 2026 11:24:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=B0=D0=B7=D0=B0=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D1=80=D1=83=D1=87=D0=BA=D0=B8=20GetUserDiariesExecutor.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/DAO/IAuthDAO.h | 2 +- src/DAO/IDiariesDAO.h | 2 +- src/DAO/MemoryAuthDAO.cpp | 2 +- src/DAO/MemoryAuthDAO.h | 2 +- src/DAO/MySQLDiariesDAO.cpp | 36 ++++++------- src/DAO/MySQLDiariesDAO.h | 2 +- src/endpoints_handlers/GetDiariesExecutor.h | 53 ++++++++++++++++++- .../GetUserTreatmentSchemeExecutor.h | 2 +- 8 files changed, 74 insertions(+), 27 deletions(-) diff --git a/src/DAO/IAuthDAO.h b/src/DAO/IAuthDAO.h index 3a1f2b2..449a4c0 100644 --- a/src/DAO/IAuthDAO.h +++ b/src/DAO/IAuthDAO.h @@ -16,7 +16,7 @@ public: virtual bool HasAuthorized(const std::string& auth_token) = 0; - virtual std::string_view GetLogin(const std::string& auth_token) = 0; + virtual std::string_view GetUUID(const std::string& auth_token) = 0; virtual bool Logout(const std::string& user_token) = 0; diff --git a/src/DAO/IDiariesDAO.h b/src/DAO/IDiariesDAO.h index e5de2e8..a2bec92 100644 --- a/src/DAO/IDiariesDAO.h +++ b/src/DAO/IDiariesDAO.h @@ -10,7 +10,7 @@ namespace uad class IDiariesDAO { public: - virtual std::vector GetDiariesByLogin(const std::string& login) = 0; + virtual std::vector GetDiariesByUserUUID(const std::string& login) = 0; virtual ~IDiariesDAO() = default; }; diff --git a/src/DAO/MemoryAuthDAO.cpp b/src/DAO/MemoryAuthDAO.cpp index ada543a..96a8cd2 100644 --- a/src/DAO/MemoryAuthDAO.cpp +++ b/src/DAO/MemoryAuthDAO.cpp @@ -25,7 +25,7 @@ bool MemoryAuthDAO::HasAuthorized(const std::string& auth_token) return auth_tokens_to_users_uuids_.count(auth_token) > 0; } -std::string_view MemoryAuthDAO::GetLogin(const std::string& auth_token) +std::string_view MemoryAuthDAO::GetUUID(const std::string& auth_token) { return auth_tokens_to_users_uuids_.at(auth_token); } diff --git a/src/DAO/MemoryAuthDAO.h b/src/DAO/MemoryAuthDAO.h index 9593a3c..ac6b442 100644 --- a/src/DAO/MemoryAuthDAO.h +++ b/src/DAO/MemoryAuthDAO.h @@ -25,7 +25,7 @@ public: bool HasAuthorized(const std::string& auth_token) override; - std::string_view GetLogin(const std::string& auth_token) override; + std::string_view GetUUID(const std::string& auth_token) override; bool Logout(const std::string& auth_token) override; }; diff --git a/src/DAO/MySQLDiariesDAO.cpp b/src/DAO/MySQLDiariesDAO.cpp index d33d8e6..d746dfe 100644 --- a/src/DAO/MySQLDiariesDAO.cpp +++ b/src/DAO/MySQLDiariesDAO.cpp @@ -6,31 +6,29 @@ MySqlDiariesDAO::MySqlDiariesDAO(mysqlx::Session& session) : session_(session) { } -std::vector MySqlDiariesDAO::GetDiariesByLogin(const std::string& login) +std::vector MySqlDiariesDAO::GetDiariesByUserUUID(const std::string& user_uuid) { static const std::string query = R"( - SELECT - d.uuid, - UNIX_TIMESTAMP(d.time) * 1000 AS time_ms, - d.mania_level, - d.depression_level, - d.mood_level, - d.activity_level, - d.appetite_level, - d.dream_level, - d.anxiety_level, - d.comment, - d.user_treatment_schemes_uuid - FROM up_and_down.users u - JOIN up_and_down.diaries d - ON d.user_uuid = u.uuid - WHERE u.login = ? - ORDER BY d.time ASC + SELECT + d.uuid, + UNIX_TIMESTAMP(d.time) * 1000, + d.mania_level, + d.depression_level, + d.mood_level, + d.activity_level, + d.appetite_level, + d.dream_level, + d.anxiety_level, + d.comment, + d.user_treatment_schemes_uuid + FROM up_and_down.diaries d + WHERE d.user_uuid = ? + ORDER BY d.time; )"; mysqlx::SqlResult result = session_ .sql(query) - .bind(login) + .bind(user_uuid) .execute(); std::vector diaries; diff --git a/src/DAO/MySQLDiariesDAO.h b/src/DAO/MySQLDiariesDAO.h index 276a64f..1aab731 100644 --- a/src/DAO/MySQLDiariesDAO.h +++ b/src/DAO/MySQLDiariesDAO.h @@ -14,7 +14,7 @@ class MySqlDiariesDAO final : public IDiariesDAO public: explicit MySqlDiariesDAO(mysqlx::Session& session); - std::vector GetDiariesByLogin(const std::string& login) override; + std::vector GetDiariesByUserUUID(const std::string& user_uuid) override; }; } \ No newline at end of file diff --git a/src/endpoints_handlers/GetDiariesExecutor.h b/src/endpoints_handlers/GetDiariesExecutor.h index ad5faca..36bf207 100644 --- a/src/endpoints_handlers/GetDiariesExecutor.h +++ b/src/endpoints_handlers/GetDiariesExecutor.h @@ -63,12 +63,61 @@ public: throw session_exception(http::status::unauthorized, "Unauthorized"); } - std::string_view user_login_ref = auth_dao_->GetLogin(auth_token); - const std::string user_login{user_login_ref.begin(), user_login_ref.end()}; + std::string_view user_login_ref = auth_dao_->GetUUID(auth_token); + const std::string user_uuid{user_login_ref.begin(), user_login_ref.end()}; + + std::vector diaries = diaries_dao_->GetDiariesByUserUUID(user_uuid); http::response res{http::status::ok, req.version()}; + value response_body; + + response_body.emplace_object(); + response_body.as_object().emplace("diaries", toJSONArray(diaries)); + + res.body() = serialize(response_body); + res.set(http::field::content_type, "application/json"); + res.content_length(res.body().size()); return res; } + +private: + boost::json::object ToJSON(const diary_dto& diary) + { + boost::json::object diary_json; + + diary_json["uuid"] = diary.uuid; + diary_json["time"] = diary.time_ms; + diary_json["mania_level"] = diary.mania_level; + diary_json["depression_level"] = diary.depression_level; + diary_json["mood_level"] = diary.mood_level; + diary_json["activity_level"] = diary.activity_level; + diary_json["appetite_level"] = diary.appetite_level; + diary_json["dream_level"] = diary.dream_level; + diary_json["anxiety_level"] = diary.anxiety_level; + diary_json["comment"] = diary.comment; + diary_json["user_treatment_scheme_uuid"] = + diary.user_treatment_scheme_uuid; + + return diary_json; + } + + boost::json::array toJSONArray(const std::vector& schemes) + { + using namespace boost; + using namespace boost::json; + using namespace boost::beast; + using namespace std::string_literals; + using namespace std::string_view_literals; + + json::array arr; + + for (const auto& m : schemes) + { + arr.emplace_back(ToJSON(m)); + } + + return std::move(arr); + } }; } diff --git a/src/endpoints_handlers/GetUserTreatmentSchemeExecutor.h b/src/endpoints_handlers/GetUserTreatmentSchemeExecutor.h index 04e786a..59a77e6 100644 --- a/src/endpoints_handlers/GetUserTreatmentSchemeExecutor.h +++ b/src/endpoints_handlers/GetUserTreatmentSchemeExecutor.h @@ -62,7 +62,7 @@ public: throw session_exception(http::status::unauthorized, "Unauthorized"); } - std::string_view user_login_ref = auth_dao_->GetLogin(auth_token); + 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"(