diff options
author | Shauren <shauren.trinity@gmail.com> | 2019-07-27 11:45:56 +0200 |
---|---|---|
committer | Giacomo Pozzoni <giacomopoz@gmail.com> | 2020-03-31 13:42:01 +0000 |
commit | f7a67099d45cae68964975ac7b60892fdc468d39 (patch) | |
tree | 7fa676ba03d18fb97149fe11dd50183c597fd1ff /src/server/database/Database/QueryHolder.h | |
parent | 635b8d52d58f7d502fc249c11c1044923e80935f (diff) |
Core/DBLayer: Prevent mixing databases with query holders
(cherry picked from commit 13440434c34da28a5106af8419aabc8e5783faf0)
# Conflicts:
# src/server/game/Server/WorldSession.cpp
# src/server/game/Server/WorldSession.h
Diffstat (limited to 'src/server/database/Database/QueryHolder.h')
-rw-r--r-- | src/server/database/Database/QueryHolder.h | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/server/database/Database/QueryHolder.h b/src/server/database/Database/QueryHolder.h index f7a21a97e70..fe4a0e78331 100644 --- a/src/server/database/Database/QueryHolder.h +++ b/src/server/database/Database/QueryHolder.h @@ -20,29 +20,41 @@ #include "SQLOperation.h" -class TC_DATABASE_API SQLQueryHolder +class TC_DATABASE_API SQLQueryHolderBase { friend class SQLQueryHolderTask; private: std::vector<std::pair<PreparedStatementBase*, PreparedQueryResult>> m_queries; public: - SQLQueryHolder() { } - virtual ~SQLQueryHolder(); - bool SetPreparedQuery(size_t index, PreparedStatementBase* stmt); + SQLQueryHolderBase() { } + virtual ~SQLQueryHolderBase(); void SetSize(size_t size); PreparedQueryResult GetPreparedResult(size_t index); void SetPreparedResult(size_t index, PreparedResultSet* result); + + protected: + bool SetPreparedQueryImpl(size_t index, PreparedStatementBase* stmt); +}; + +template<typename T> +class SQLQueryHolder : public SQLQueryHolderBase +{ +public: + bool SetPreparedQuery(size_t index, PreparedStatement<T>* stmt) + { + return SetPreparedQueryImpl(index, stmt); + } }; class TC_DATABASE_API SQLQueryHolderTask : public SQLOperation { private: - SQLQueryHolder* m_holder; + SQLQueryHolderBase* m_holder; QueryResultHolderPromise m_result; bool m_executed; public: - SQLQueryHolderTask(SQLQueryHolder* holder) + SQLQueryHolderTask(SQLQueryHolderBase* holder) : m_holder(holder), m_executed(false) { } ~SQLQueryHolderTask(); |