diff options
| author | Shauren <shauren.trinity@gmail.com> | 2019-07-27 11:45:56 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2019-07-27 11:45:56 +0200 |
| commit | 13440434c34da28a5106af8419aabc8e5783faf0 (patch) | |
| tree | 9f40c50af6c0a2ef8411f2588c488324bd299f70 /src/server/database/Database/QueryHolder.h | |
| parent | f6e2b8cdc1c8a3dd291947f67566b41dac116622 (diff) | |
Core/DBLayer: Prevent mixing databases with query holders
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 2eefc9e2f96..3da8918d329 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(); |
