Добавление ДАО для использования в новом маршруте

This commit is contained in:
2026-01-05 15:29:47 +03:00
parent 49a2913884
commit 8df55238be
7 changed files with 91 additions and 7 deletions
+2 -2
View File
@@ -10,9 +10,9 @@ namespace uad
class IMedicationsDAO
{
public:
virtual std::vector<medication> GetAll() = 0;
[[nodiscard]] virtual std::vector<medication> GetAll() const = 0;
virtual std::string Create(medication) = 0;
[[nodiscard]] virtual std::string Create(const medication& m) const = 0;
virtual ~IMedicationsDAO() = default;
};
+52
View File
@@ -0,0 +1,52 @@
#include <boost/uuid.hpp>
#include "MySQLMedicationsDAO.h"
using namespace std;
namespace uad
{
MySQLMedicationsDAO::MySQLMedicationsDAO(mysqlx::Session& session): session_(session)
{
}
std::vector<medication> MySQLMedicationsDAO::GetAll() const
{
static const string sql_script = "SELECT uuid, name, dose, unit, is_urgent FROM up_and_down.medications;";
mysqlx::SqlResult sql_result = session_.sql(sql_script).execute();
list<mysqlx::Row> rows = sql_result.fetchAll();
vector<medication> ret;
if (rows.empty()) return ret;
for (const auto& row : rows)
{
medication m;
m.uuid = row[0].get<string>();
m.name = row[1].get<string>();
m.dose = row[2].get<int64_t>();
m.unit = row[3].get<string>();
m.is_urgent = row[4].get<bool>();
ret.push_back(m);
}
return ret;
}
std::string MySQLMedicationsDAO::Create(const medication& m) const
{
boost::uuids::random_generator generator;
boost::uuids::uuid uuid = generator();
const std::string uuid_str = boost::uuids::to_string(uuid);
static const string sql_script = "INSERT INTO `up_and_down`.`medications` (`uuid`, `name`, `dose`, `unit`, `is_urgent`) VALUES ( ?, ?, ?, ?, ?);"s;
session_.sql(sql_script).bind(uuid_str, m.name, m.dose, m.unit, m.is_urgent).execute();
return uuid_str;
}
}
+21
View File
@@ -0,0 +1,21 @@
#pragma once
#include <mysqlx/xdevapi.h>
#include <cstdint>
#include <vector>
#include "IMedicationsDAO.h"
#include "../entities/medication.h"
namespace uad
{
class MySQLMedicationsDAO : public IMedicationsDAO
{
mysqlx::Session& session_;
public:
explicit MySQLMedicationsDAO(mysqlx::Session& session);
[[nodiscard]] std::vector<medication> GetAll() const override;
[[nodiscard]] std::string Create(const medication& m) const override;
};
}