From f6df294df40fa85080038b16c76fe6974e354fae Mon Sep 17 00:00:00 2001 From: JohnDoe6345789 Date: Fri, 26 Dec 2025 05:06:26 +0000 Subject: [PATCH] code: sql,hpp,dbal (1 files) --- dbal/cpp/src/adapters/sql/sql_adapter.hpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/dbal/cpp/src/adapters/sql/sql_adapter.hpp b/dbal/cpp/src/adapters/sql/sql_adapter.hpp index 7cff99fa1..cc602c799 100644 --- a/dbal/cpp/src/adapters/sql/sql_adapter.hpp +++ b/dbal/cpp/src/adapters/sql/sql_adapter.hpp @@ -111,15 +111,15 @@ public: int paramIndex = 2; if (input.username) { - setFragments.push_back("username = $" + std::to_string(paramIndex++)); + setFragments.push_back("username = " + placeholder(paramIndex++)); params.push_back({"username", *input.username}); } if (input.email) { - setFragments.push_back("email = $" + std::to_string(paramIndex++)); + setFragments.push_back("email = " + placeholder(paramIndex++)); params.push_back({"email", *input.email}); } if (input.role) { - setFragments.push_back("role = $" + std::to_string(paramIndex++)); + setFragments.push_back("role = " + placeholder(paramIndex++)); params.push_back({"role", userRoleToString(*input.role)}); } @@ -128,7 +128,8 @@ public: } const std::string sql = "UPDATE users SET " + joinFragments(setFragments, ", ") + - " WHERE id = $1 RETURNING id, username, email, role, created_at, updated_at"; + " WHERE id = " + placeholder(1) + + " RETURNING id, username, email, role, created_at, updated_at"; try { const auto rows = executeQuery(conn, sql, params); @@ -148,7 +149,7 @@ public: } ConnectionGuard guard(pool_, conn); - const std::string sql = "DELETE FROM users WHERE id = $1"; + const std::string sql = "DELETE FROM users WHERE id = " + placeholder(1); const std::vector params = {{"id", id}}; try { @@ -172,7 +173,8 @@ public: const int limit = options.limit > 0 ? options.limit : 50; const int offset = options.page > 1 ? (options.page - 1) * limit : 0; const std::string sql = "SELECT id, username, email, role, created_at, updated_at " - "FROM users ORDER BY created_at DESC LIMIT $1 OFFSET $2"; + "FROM users ORDER BY created_at DESC LIMIT " + placeholder(1) + + " OFFSET " + placeholder(2); const std::vector params = { {"limit", std::to_string(limit)}, {"offset", std::to_string(offset)} @@ -454,6 +456,13 @@ protected: return out.str(); } + std::string placeholder(size_t index) const { + if (dialect_ == Dialect::Postgres) { + return "$" + std::to_string(index); + } + return "?"; + } + SqlPool pool_; Dialect dialect_; };