From 9112bc21dbbbfd26351d121a4f9036b1ff1cb5fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD?= Date: Sat, 30 Aug 2025 09:49:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B2=D0=B5=D1=80=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/DAO/MySQLUserDAO.cpp | 29 +++++++++++++++---- .../AuthRegistrationExecutor.h | 11 +++++-- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/DAO/MySQLUserDAO.cpp b/src/DAO/MySQLUserDAO.cpp index 7773e32..4a6a7b3 100644 --- a/src/DAO/MySQLUserDAO.cpp +++ b/src/DAO/MySQLUserDAO.cpp @@ -1,3 +1,5 @@ +#include + #include "MySQLUserDAO.h" #include @@ -7,32 +9,47 @@ using namespace string_literals; namespace uad { -MySQLUserDAO::MySQLUserDAO(mysqlx::Session& session): session_(session) +MySQLUserDAO::MySQLUserDAO(mysqlx::Session& session) : session_(session) { } string MySQLUserDAO::Create(const User& created_user) { - return ""s; + boost::uuids::random_generator generator; + boost::uuids::uuid uuid = generator(); + std::string uuid_str = boost::uuids::to_string(uuid); + + string sql_script = + "INSERT INTO `up_and_down`.`users` (`uuid`, `login`, `hashed_password`) VALUES (?, ?, ?);"s; + + session_.sql(sql_script) + .bind(uuid_str, created_user.GetLogin(), created_user.GetHashedPassword()) + .execute(); + + return uuid_str; } optional MySQLUserDAO::GetByUUID(string uuid) { - mysqlx::SqlResult sql_result = session_.sql("SELECT * FROM `up_and_down`.`users` WHERE (uuid = '" + uuid + "') LIMIT 1;"s).execute(); + mysqlx::SqlResult sql_result = session_. + sql("SELECT * FROM `up_and_down`.`users` WHERE (uuid = '" + uuid + + "') LIMIT 1;"s).execute(); return GetSingleUserBySQLResult(std::move(sql_result)); } optional MySQLUserDAO::GetByLogin(string login) { - mysqlx::SqlResult sql_result = session_.sql("SELECT * FROM `up_and_down`.`users` WHERE (login = '" + login + "') LIMIT 1;"s).execute(); + mysqlx::SqlResult sql_result = session_. + sql("SELECT * FROM `up_and_down`.`users` WHERE (login = '" + login + + "') LIMIT 1;"s).execute(); return GetSingleUserBySQLResult(std::move(sql_result)); } vector MySQLUserDAO::GetAll() { - vector users {}; + vector users{}; return {}; } @@ -70,4 +87,4 @@ std::optional MySQLUserDAO::GetSingleUserBySQLResult(mysqlx::SqlResult&& s return optional(std::move(user)); } -} // uad \ No newline at end of file +} // uad diff --git a/src/endpoints_handlers/AuthRegistrationExecutor.h b/src/endpoints_handlers/AuthRegistrationExecutor.h index 16a9c41..aee194d 100644 --- a/src/endpoints_handlers/AuthRegistrationExecutor.h +++ b/src/endpoints_handlers/AuthRegistrationExecutor.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "IExecutor.h" #include "../DAO/IUserDAO.h" @@ -94,13 +95,19 @@ public: user.SetLogin(login); user.SetPassword(password); + const auto uuid_stringified = user_dao_->Create(user); + http::response res{ http::status::created, req.version() }; response_body.as_object().emplace( - "Result", - "OK.Created." + "uuid", + uuid_stringified + ); + response_body.as_object().emplace( + "login", + user.GetLogin() ); res.body() = serialize(response_body);