From 83896e0b63a6c7584e4149d26f0ddc4b0d0c324a Mon Sep 17 00:00:00 2001 From: JohnDoe6345789 Date: Fri, 26 Dec 2025 06:23:46 +0000 Subject: [PATCH] code: hpp,dbal,cpp (2 files) --- dbal/cpp/src/adapters/sql/sql_adapter.hpp | 9 +++------ dbal/cpp/src/runtime/requests_client.hpp | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/dbal/cpp/src/adapters/sql/sql_adapter.hpp b/dbal/cpp/src/adapters/sql/sql_adapter.hpp index ba65aee87..7a959d65a 100644 --- a/dbal/cpp/src/adapters/sql/sql_adapter.hpp +++ b/dbal/cpp/src/adapters/sql/sql_adapter.hpp @@ -496,15 +496,14 @@ class NativePrismaAdapter : public SqlAdapter { public: explicit NativePrismaAdapter(const SqlConnectionConfig& config) : SqlAdapter(config, Dialect::Prisma), - requestsClient_(resolveBridgeUrl(config)), - bridgeHeaders_(buildBridgeHeaders(resolveBridgeToken(config))) {} + requestsClient_(resolveBridgeUrl(config), buildBridgeHeaders(resolveBridgeToken(config))) {} std::vector runQuery(SqlConnection* connection, const std::string& sql, const std::vector& params) override { (void)connection; const auto payload = buildPayload(sql, params, "query"); - const auto response = requestsClient_.post("/api/native-prisma", payload.dump(), bridgeHeaders_); + const auto response = requestsClient_.post("/api/native-prisma", payload.dump()); if (response.statusCode != 200) { throw SqlError{SqlError::Code::Unknown, "Native Prisma bridge request failed"}; } @@ -527,7 +526,7 @@ public: const std::vector& params) override { (void)connection; const auto payload = buildPayload(sql, params, "nonquery"); - const auto response = requestsClient_.post("/api/native-prisma", payload.dump(), bridgeHeaders_); + const auto response = requestsClient_.post("/api/native-prisma", payload.dump()); if (response.statusCode != 200) { throw SqlError{SqlError::Code::Unknown, "Native Prisma bridge request failed"}; } @@ -568,8 +567,6 @@ private: } runtime::RequestsClient requestsClient_; - std::unordered_map bridgeHeaders_; - drogon::Json::Value buildPayload(const std::string& sql, const std::vector& params, const std::string& type) const { diff --git a/dbal/cpp/src/runtime/requests_client.hpp b/dbal/cpp/src/runtime/requests_client.hpp index 4662cc04c..6a65528f6 100644 --- a/dbal/cpp/src/runtime/requests_client.hpp +++ b/dbal/cpp/src/runtime/requests_client.hpp @@ -20,8 +20,10 @@ struct RequestsResponse { class RequestsClient { public: - explicit RequestsClient(std::string baseURL) - : baseUrl_(trimTrailingSlash(std::move(baseURL))) {} + explicit RequestsClient(std::string baseURL, + std::unordered_map defaultHeaders = {}) + : baseUrl_(trimTrailingSlash(std::move(baseURL))), + defaultHeaders_(std::move(defaultHeaders)) {} RequestsResponse get(const std::string& path, const std::unordered_map& headers = {}, @@ -43,7 +45,7 @@ public: int timeoutMs = 30'000) { const cpr::Url url = cpr::Url{makeUrl(path)}; cpr::Header cprHeaders; - for (const auto& [key, value] : headers) { + for (const auto& [key, value] : mergeHeaders(headers)) { cprHeaders.insert({key, value}); } @@ -97,6 +99,16 @@ private: } std::string baseUrl_; + std::unordered_map defaultHeaders_; + + std::unordered_map mergeHeaders( + const std::unordered_map& headers) const { + auto merged = defaultHeaders_; + for (const auto& [key, value] : headers) { + merged[key] = value; + } + return merged; + } }; }