diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-12-27 00:14:12 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-12-27 00:14:12 +0100 |
commit | 3a9cbd217aa14bd7543722d9f4849f736b7c3264 (patch) | |
tree | 1dbe14196d6a6ae0dcceb70a6edc9ebd9eb0bbba /src/server/database/Database/MySQLConnection.cpp | |
parent | 13dc139742655ea523f02f67995ad376c9b912dc (diff) |
Core/Database: Replace union with std::variant in Transaction
Diffstat (limited to 'src/server/database/Database/MySQLConnection.cpp')
-rw-r--r-- | src/server/database/Database/MySQLConnection.cpp | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/src/server/database/Database/MySQLConnection.cpp b/src/server/database/Database/MySQLConnection.cpp index 56e384520c2..ab16d560ec2 100644 --- a/src/server/database/Database/MySQLConnection.cpp +++ b/src/server/database/Database/MySQLConnection.cpp @@ -382,7 +382,7 @@ void MySQLConnection::CommitTransaction() int MySQLConnection::ExecuteTransaction(std::shared_ptr<TransactionBase> transaction) { - std::vector<SQLElementData> const& queries = transaction->m_queries; + std::vector<TransactionData> const& queries = transaction->m_queries; if (queries.empty()) return -1; @@ -390,35 +390,12 @@ int MySQLConnection::ExecuteTransaction(std::shared_ptr<TransactionBase> transac for (auto itr = queries.begin(); itr != queries.end(); ++itr) { - SQLElementData const& data = *itr; - switch (itr->type) + if (!std::visit([this](auto&& data) { return this->Execute(TransactionData::ToExecutable(data)); }, itr->query)) { - case SQL_ELEMENT_PREPARED: - { - PreparedStatementBase* stmt = data.element.stmt; - ASSERT(stmt); - if (!Execute(stmt)) - { - TC_LOG_WARN("sql.sql", "Transaction aborted. {} queries not executed.", (uint32)queries.size()); - int errorCode = GetLastError(); - RollbackTransaction(); - return errorCode; - } - } - break; - case SQL_ELEMENT_RAW: - { - char const* sql = data.element.query; - ASSERT(sql); - if (!Execute(sql)) - { - TC_LOG_WARN("sql.sql", "Transaction aborted. {} queries not executed.", (uint32)queries.size()); - int errorCode = GetLastError(); - RollbackTransaction(); - return errorCode; - } - } - break; + TC_LOG_WARN("sql.sql", "Transaction aborted. {} queries not executed.", queries.size()); + int errorCode = GetLastError(); + RollbackTransaction(); + return errorCode; } } |