aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMachiavelli <none@none>2010-12-13 16:27:14 +0100
committerMachiavelli <none@none>2010-12-13 16:27:14 +0100
commit976225a9dd4e88c3db2fc1f542d4e5f98d54dff3 (patch)
tree7d3472ad56b37a63e4c64c104cf67a61d83184c0
parent426b28e34465360fb9c1950867ef13175f49fc8c (diff)
Core/DBLayer: Implement global ExecuteOrAppend methods to DatabaseWorkerPool for executing queries in a diverse context (transaction or non transaction) - instead of local to Guild.cpp
--HG-- branch : trunk
-rwxr-xr-xsrc/server/game/Guilds/Guild.cpp26
-rwxr-xr-xsrc/server/shared/Database/DatabaseWorkerPool.h20
2 files changed, 29 insertions, 17 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 7e5f83d7365..81b89b1849f 100755
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -27,14 +27,6 @@
#define MAX_GUILD_BANK_TAB_TEXT_LEN 500
#define EMBLEM_PRICE 10 * GOLD
-inline void _CharacterExecutePreparedStatement(SQLTransaction& trans, PreparedStatement* stmt)
-{
- if (trans.null())
- CharacterDatabase.Execute(stmt);
- else
- trans->Append(stmt);
-}
-
inline uint32 _GetGuildBankTabPrice(uint8 tabId)
{
switch (tabId)
@@ -131,7 +123,7 @@ void Guild::EventLogEntry::SaveToDB(SQLTransaction& trans) const
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_EVENTLOG);
stmt->setUInt32(0, m_guildId);
stmt->setUInt32(1, m_guid);
- _CharacterExecutePreparedStatement(trans, stmt);
+ CharacterDatabase.ExecuteOrAppend(trans, stmt);
uint8 index = 0;
stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_GUILD_EVENTLOG);
@@ -142,7 +134,7 @@ void Guild::EventLogEntry::SaveToDB(SQLTransaction& trans) const
stmt->setUInt32(++index, m_playerGuid2);
stmt->setUInt8 (++index, m_newRank);
stmt->setUInt64(++index, m_timestamp);
- _CharacterExecutePreparedStatement(trans, stmt);
+ CharacterDatabase.ExecuteOrAppend(trans, stmt);
}
void Guild::EventLogEntry::WritePacket(WorldPacket& data) const
@@ -172,7 +164,7 @@ void Guild::BankEventLogEntry::SaveToDB(SQLTransaction& trans) const
stmt->setUInt32( index, m_guildId);
stmt->setUInt32(++index, m_guid);
stmt->setUInt8 (++index, m_bankTabId);
- _CharacterExecutePreparedStatement(trans, stmt);
+ CharacterDatabase.ExecuteOrAppend(trans, stmt);
index = 0;
stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_GUILD_BANK_EVENTLOG);
@@ -185,7 +177,7 @@ void Guild::BankEventLogEntry::SaveToDB(SQLTransaction& trans) const
stmt->setUInt16(++index, m_itemStackCount);
stmt->setUInt8 (++index, m_destTabId);
stmt->setUInt64(++index, m_timestamp);
- _CharacterExecutePreparedStatement(trans, stmt);
+ CharacterDatabase.ExecuteOrAppend(trans, stmt);
}
void Guild::BankEventLogEntry::WritePacket(WorldPacket& data) const
@@ -222,7 +214,7 @@ void Guild::RankInfo::SaveToDB(SQLTransaction& trans) const
stmt->setUInt8 (1, m_rankId);
stmt->setString(2, m_name);
stmt->setUInt32(3, m_rights);
- _CharacterExecutePreparedStatement(trans, stmt);
+ CharacterDatabase.ExecuteOrAppend(trans, stmt);
}
void Guild::RankInfo::WritePacket(WorldPacket& data) const
@@ -475,7 +467,7 @@ bool Guild::BankTab::SetItem(SQLTransaction& trans, uint8 slotId, Item* pItem)
stmt->setUInt32(0, m_guildId);
stmt->setUInt8 (1, m_tabId);
stmt->setUInt8 (2, slotId);
- _CharacterExecutePreparedStatement(trans, stmt);
+ CharacterDatabase.ExecuteOrAppend(trans, stmt);
if (pItem)
{
@@ -485,7 +477,7 @@ bool Guild::BankTab::SetItem(SQLTransaction& trans, uint8 slotId, Item* pItem)
stmt->setUInt8 (2, slotId);
stmt->setUInt32(3, pItem->GetGUIDLow());
stmt->setUInt32(4, pItem->GetEntry());
- _CharacterExecutePreparedStatement(trans, stmt);
+ CharacterDatabase.ExecuteOrAppend(trans, stmt);
pItem->SetUInt64Value(ITEM_FIELD_CONTAINED, 0);
pItem->SetUInt64Value(ITEM_FIELD_OWNER, 0);
@@ -575,7 +567,7 @@ void Guild::Member::SaveToDB(SQLTransaction& trans) const
stmt->setUInt8 (2, m_rankId);
stmt->setString(3, m_publicNote);
stmt->setString(4, m_officerNote);
- _CharacterExecutePreparedStatement(trans, stmt);
+ CharacterDatabase.ExecuteOrAppend(trans, stmt);
}
// Loads member's data from database.
@@ -670,7 +662,7 @@ void Guild::Member::DecreaseBankRemainingValue(SQLTransaction& trans, uint8 tabI
stmt->setUInt32(0, m_bankRemaining[tabId].value);
stmt->setUInt32(1, m_guildId);
stmt->setUInt32(2, GUID_LOPART(m_guid));
- _CharacterExecutePreparedStatement(trans, stmt);
+ CharacterDatabase.ExecuteOrAppend(trans, stmt);
}
// Get amount of money/slots left for today.
diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h
index b95b818fb36..c9bfb28c400 100755
--- a/src/server/shared/Database/DatabaseWorkerPool.h
+++ b/src/server/shared/Database/DatabaseWorkerPool.h
@@ -270,6 +270,26 @@ class DatabaseWorkerPool
Enqueue(new TransactionTask(transaction));
}
+ //! Method used to execute prepared statements in a diverse context.
+ //! Will be wrapped in a transaction if valid object is present, otherwise executed standalone.
+ void ExecuteOrAppend(SQLTransaction& trans, PreparedStatement* stmt)
+ {
+ if (trans.null())
+ Execute(stmt);
+ else
+ trans->Append(stmt);
+ }
+
+ //! Method used to execute ad-hoc statements in a diverse context.
+ //! Will be wrapped in a transaction if valid object is present, otherwise executed standalone.
+ void ExecuteOrAppend(SQLTransaction& trans, const char* sql)
+ {
+ if (trans.null())
+ Execute(stmt);
+ else
+ trans->Append(sql);
+ }
+
PreparedStatement* GetPreparedStatement(uint32 index)
{
return new PreparedStatement(index);