Рабочая сборка с третьей ручкой

This commit is contained in:
Антон
2025-09-28 07:59:59 +03:00
parent 2a99fc727c
commit 07558a07c6
+33 -25
View File
@@ -9,7 +9,8 @@ using namespace string_literals;
namespace uad
{
MySQLUserDAO::MySQLUserDAO(mysqlx::Session& session) : session_(session)
MySQLUserDAO::MySQLUserDAO(mysqlx::Session& session) :
session_(session)
{
}
@@ -17,10 +18,12 @@ string MySQLUserDAO::Create(const user& created_user)
{
boost::uuids::random_generator generator;
boost::uuids::uuid uuid = generator();
std::string uuid_str = boost::uuids::to_string(uuid);
const std::string uuid_str = boost::uuids::to_string(uuid);
string sql_script =
"INSERT INTO `up_and_down`.`users` (`uuid`, `login`, `hashed_password`) VALUES (?, ?, ?);"s;
const string sql_script =
"INSERT INTO `up_and_down`.`users` (`uuid`, `login`, `hashed_password`) VALUES ('"
+ uuid_str + "', '" + created_user.login +"', '" + created_user.hashed_password + "');"s;
session_.sql(sql_script)
.bind(uuid_str, created_user.login, created_user.hashed_password)
@@ -31,18 +34,22 @@ string MySQLUserDAO::Create(const user& created_user)
optional<user> MySQLUserDAO::GetByUUID(const string& uuid)
{
const string sql_script = "SELECT * FROM `up_and_down`.`users`"s +
"WHERE (uuid = '"s + uuid +
"') LIMIT 1;"s;
mysqlx::SqlResult sql_result = session_.
sql("SELECT * FROM `up_and_down`.`users` WHERE (uuid = '" + uuid +
"') LIMIT 1;"s).execute();
sql(sql_script).execute();
return GetSingleUserBySQLResult(std::move(sql_result));
}
optional<user> MySQLUserDAO::GetByLogin(const string& login)
{
const std::string sql_script = "SELECT * FROM `up_and_down`.`users`" +
"WHERE (login = '" + login
+ "') LIMIT 1;"s;
mysqlx::SqlResult sql_result = session_.
sql("SELECT * FROM `up_and_down`.`users` WHERE (login = '" + login
+ "') LIMIT 1;"s).execute();
sql(sql_script).execute();
return GetSingleUserBySQLResult(std::move(sql_result));
}
@@ -50,8 +57,9 @@ optional<user> MySQLUserDAO::GetByLogin(const string& login)
pair<bool, vector<user>> MySQLUserDAO::GetAll(size_t limit, size_t offset)
{
mysqlx::SqlResult sql_result = session_
.sql("SELECT * FROM `up_and_down`.`users` LIMIT ? OFFSET ?;"s)
.bind(limit, offset)
.sql("SELECT * FROM `up_and_down`.`users` "s +
"LIMIT "s + to_string(limit) +
" OFFSET "s + to_string(offset) + ";"s)
.execute();
list<mysqlx::Row> rows = sql_result.fetchAll();
pair<bool, vector<user>> ret;
@@ -78,8 +86,8 @@ pair<bool, vector<user>> MySQLUserDAO::GetAll(size_t limit, size_t offset)
user user;
string user_uuid = row[0].get<string>();
string user_login = row[1].get<string>();
const string user_uuid = row[0].get<string>();
const string user_login = row[1].get<string>();
user.login = user_login;
user.uuid = user_uuid;
@@ -94,13 +102,13 @@ pair<bool, vector<user>> MySQLUserDAO::GetAll(size_t limit, size_t offset)
bool MySQLUserDAO::Update(const user& u)
{
auto schema = session_.getSchema("up_and_down");
auto table = schema.getTable("users");
auto table = schema.getTable("users");
mysqlx::Result res = table.update()
.set("login", u.login)
.set("hashed_password", u.hashed_password)
.where("uuid = :uuid")
.bind("uuid", u.uuid)
.execute();
.set("login", u.login)
.set("hashed_password", u.hashed_password)
.where("uuid = :uuid")
.bind("uuid", u.uuid)
.execute();
return !!res.getAffectedItemsCount();
}
@@ -108,11 +116,11 @@ bool MySQLUserDAO::Update(const user& u)
bool MySQLUserDAO::Delete(const string& uuid)
{
auto schema = session_.getSchema("up_and_down");
auto table = schema.getTable("users");
auto table = schema.getTable("users");
mysqlx::Result res = table.remove()
.where("uuid = :uuid")
.bind("uuid", uuid)
.execute();
.where("uuid = :uuid")
.bind("uuid", uuid)
.execute();
return !!res.getAffectedItemsCount();
}
@@ -128,9 +136,9 @@ std::optional<user> MySQLUserDAO::GetSingleUserBySQLResult(mysqlx::SqlResult&& s
auto row_data = *rows.begin();
string user_uuid = row_data[0].get<string>();
string user_login = row_data[1].get<string>();
string user_hashed_password = row_data[2].get<string>();
const string user_uuid = row_data[0].get<string>();
const string user_login = row_data[1].get<string>();
const string user_hashed_password = row_data[2].get<string>();
user single_user;