From 9ca1e8784f947ff12eaefb7192c39e9be1a6b514 Mon Sep 17 00:00:00 2001 From: Mars Ultor Date: Thu, 18 Dec 2025 15:45:43 -0600 Subject: [PATCH] finished database layer --- src/main.cpp | 5 +++++ src/types.cpp | 18 ++++++++++++++++++ src/types.hpp | 6 ++++++ 3 files changed, 29 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index c351489..76c0e23 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,6 +2,7 @@ #include "nlohmann/json_fwd.hpp" #include "skwyward-api-utils.hpp" #include "spdlog/spdlog.h" +#include "types.hpp" #include #include #include @@ -38,6 +39,10 @@ int main (int argc, char *argv[]) { std::shared_ptr client_shared_ptr = std::make_shared(clickhouse::ClientOptions().SetHost(clickhouse_host_name).SetPassword(clickhouse_password).SetUser(clickhouse_username).SetDefaultDatabase(clickhouse_schema)); + database_utils::register_user(client_shared_ptr, test_username, test_password); + + spdlog::info("USER UUID: {}", database_utils::uuid_to_string( database_utils::get_user_uuid(client_shared_ptr, test_username).value() )); + spdlog::info("Connected to the database"); return 0; diff --git a/src/types.cpp b/src/types.cpp index 780e095..719224c 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -185,5 +185,23 @@ void insert_grade_updates( } +std::optional get_user_uuid(const CHClient& client, const std::string& username) { + std::optional result; + + client->Select( + "SELECT user_id FROM users WHERE username = '" + username + "' LIMIT 1", + [&](const clickhouse::Block& b) { + if (b.GetRowCount() == 0) + return; + + auto col_uuid = b[0]->As(); + auto uuid_val = col_uuid->At(0); + result = uuid_val; // your helper that converts UUID pair → string + } + ); + + return result; +} + } // namespace database_utils diff --git a/src/types.hpp b/src/types.hpp index 3a1d093..0e7d9c2 100644 --- a/src/types.hpp +++ b/src/types.hpp @@ -6,10 +6,14 @@ #include #include +#include "clickhouse/base/uuid.h" #include "skwyward-api-utils.hpp" namespace database_utils { +clickhouse::UUID parse_uuid(const std::string& str); +std::string uuid_to_string(const clickhouse::UUID& u); + // ---------- DB Handle ---------- using CHClient = std::shared_ptr; @@ -93,5 +97,7 @@ insert_grade_updates( const std::vector& diffs ); +std::optional get_user_uuid(const CHClient& client, const std::string& username); + } // namespace database_utils