From 918db80742cc47dfdb63378d73371da6ad84df65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD?= Date: Sun, 24 Aug 2025 17:08:36 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=BE=D0=B5=D0=B4=D0=B8=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=20=D0=B1=D0=B0=D0=B7=D0=BE=D0=B9!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 2 ++ db_assets/sql_scripts/init.sql | 18 +++++++++--------- src/db/mysql_connector.cpp | 22 ++++++++++++++++++++++ src/db/mysql_connector.h | 10 ++++++++++ src/main.cpp | 12 ++++++++++-- 5 files changed, 53 insertions(+), 11 deletions(-) create mode 100644 src/db/mysql_connector.cpp create mode 100644 src/db/mysql_connector.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 401c069..e404f80 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,8 @@ add_executable(App ./src/main.cpp ./src/session/WebsocketSession.cpp ./src/listener/Listener.h ./src/listener/Listener.cpp + ./src/db/mysql_connector.cpp + ./src/db/mysql_connector.h ) target_link_libraries(App PRIVATE Boost::boost Threads::Threads mysql::concpp) diff --git a/db_assets/sql_scripts/init.sql b/db_assets/sql_scripts/init.sql index fafbe10..42c4880 100644 --- a/db_assets/sql_scripts/init.sql +++ b/db_assets/sql_scripts/init.sql @@ -52,6 +52,15 @@ CREATE TABLE `up_and_down`.`anxiety` ( PRIMARY KEY (`level`) ); +CREATE TABLE `up_and_down`.`user_treatment_schemes` ( + `guid` CHAR(36) NOT NULL, + `user_guid` CHAR(36) NOT NULL, + `treatment_name` TEXT NOT NULL, + `instructions` TEXT, + PRIMARY KEY (`guid`), + FOREIGN KEY (`user_guid`) REFERENCES `users`(`guid`) +); + CREATE TABLE `up_and_down`.`diaries` ( `guid` CHAR(36) NOT NULL, `user_guid` CHAR(36) NOT NULL, @@ -93,15 +102,6 @@ CREATE TABLE `up_and_down`.`treatment_schemes` ( FOREIGN KEY (`medication_guid`) REFERENCES `medications`(`guid`) ); -CREATE TABLE `up_and_down`.`user_treatment_schemes` ( - `guid` CHAR(36) NOT NULL, - `user_guid` CHAR(36) NOT NULL, - `treatment_name` TEXT NOT NULL, - `instructions` TEXT, - PRIMARY KEY (`guid`), - FOREIGN KEY (`user_guid`) REFERENCES `users`(`guid`) -); - -- insert constants INSERT INTO `up_and_down`.`mania` (`level`, `description`) VALUES (1, 'Полное отсутствие мании'); INSERT INTO `up_and_down`.`mania` (`level`, `description`) VALUES (2, 'Слегка приподнятое настроение'); diff --git a/src/db/mysql_connector.cpp b/src/db/mysql_connector.cpp new file mode 100644 index 0000000..0a82ac6 --- /dev/null +++ b/src/db/mysql_connector.cpp @@ -0,0 +1,22 @@ +#include + +#include "mysql_connector.h" + +using namespace std::string_literals; + +namespace uad +{ +static mysqlx::Session* mysql_session = nullptr; + +void SetMySqlSession(mysqlx::Session* ptr) +{ + mysql_session = ptr; +} + +mysqlx::Session& GetMySqlSession() +{ + mysqlx::Schema schema = mysql_session->getSchema("up_and_down"s); + + return *mysql_session; +} +} \ No newline at end of file diff --git a/src/db/mysql_connector.h b/src/db/mysql_connector.h new file mode 100644 index 0000000..e435d9f --- /dev/null +++ b/src/db/mysql_connector.h @@ -0,0 +1,10 @@ +#pragma once + +#include + +namespace uad +{ +void SetMySqlSession(mysqlx::Session* ptr); + +mysqlx::Session& GetMySqlSession(); +} \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 58451b5..602efb7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,6 +17,7 @@ #include "./session/WebsocketSession.h" #include "./listener/Listener.h" +#include "./db/mysql_connector.h" namespace beast = boost::beast; namespace http = beast::http; @@ -24,12 +25,14 @@ namespace websocket = beast::websocket; namespace net = boost::asio; using tcp = boost::asio::ip::tcp; using namespace uad; +using namespace std; +using namespace std::string_literals; int main(int argc, char* argv[]) { - if (argc != 5) + if (argc != 6) { - std::cerr << "Usage: advanced-server
\n" + std::cerr << "Usage: advanced-server
\n" << "Example:\n" << " advanced-server 0.0.0.0 8080 . 1\n"; return EXIT_FAILURE; @@ -38,6 +41,11 @@ int main(int argc, char* argv[]) auto const port = static_cast(std::atoi(argv[2])); auto const doc_root = std::make_shared(argv[3]); auto const threads = std::max(1, std::atoi(argv[4])); + string mysql_credentials = argv[5]; + + mysqlx::Session session(mysql_credentials); + + uad::SetMySqlSession(&session); net::io_context ioc{threads};