aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Database/Transaction.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared/Database/Transaction.h')
-rw-r--r--src/server/shared/Database/Transaction.h27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/server/shared/Database/Transaction.h b/src/server/shared/Database/Transaction.h
index 58c87b61270..cd749b0c2d7 100644
--- a/src/server/shared/Database/Transaction.h
+++ b/src/server/shared/Database/Transaction.h
@@ -21,6 +21,30 @@
#include "SQLOperation.h"
+//- Forward declare (don't include header to prevent circular includes)
+class PreparedStatement;
+
+//- Union that holds element data
+union TransactionElementUnion
+{
+ PreparedStatement* stmt;
+ const char* query;
+};
+
+//- Type specifier of our element data
+enum TransactionElementDataType
+{
+ TRANSACTION_ELEMENT_RAW,
+ TRANSACTION_ELEMENT_PREPARED,
+};
+
+//- The transaction element
+struct TransactionElementData
+{
+ TransactionElementUnion element;
+ TransactionElementDataType type;
+};
+
/*! Transactions, high level class. */
class Transaction
{
@@ -28,6 +52,7 @@ class Transaction
public:
~Transaction() { Cleanup(); }
+ void Append(PreparedStatement* statement);
void Append(const char* sql);
void PAppend(const char* sql, ...);
@@ -35,7 +60,7 @@ class Transaction
protected:
void Cleanup();
- std::queue<char*> m_queries;
+ std::queue<TransactionElementData> m_queries;
private:
bool m_actioned;