diff --git a/src/server/bnetserver/Server/Session.cpp b/src/server/bnetserver/Server/Session.cpp index 106699f762..8a619a8026 100644 --- a/src/server/bnetserver/Server/Session.cpp +++ b/src/server/bnetserver/Server/Session.cpp @@ -969,7 +969,7 @@ bool Battlenet::Session::HandleRiskFingerprintModule(BitStream* dataStream, Serv logonResponse->GameAccountFlags = GAMEACCOUNT_FLAG_PROPASS; logonResponse->FailedLogins = _accountInfo->FailedLogins; - SQLTransaction trans = LoginDatabase.BeginTransaction(); + LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction(); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_BNET_LAST_LOGIN_INFO); stmt->setString(0, GetRemoteIpAddress().to_string()); diff --git a/src/server/database/Database/DatabaseEnvFwd.h b/src/server/database/Database/DatabaseEnvFwd.h index 1fe95c54a5..f6f7653c3f 100644 --- a/src/server/database/Database/DatabaseEnvFwd.h +++ b/src/server/database/Database/DatabaseEnvFwd.h @@ -28,11 +28,21 @@ typedef std::shared_ptr QueryResult; typedef std::future QueryResultFuture; typedef std::promise QueryResultPromise; +class CharacterDatabaseConnection; +class HotfixDatabaseConnection; +class LoginDatabaseConnection; +class WorldDatabaseConnection; + class PreparedStatementBase; template class PreparedStatement; +using CharacterDatabasePreparedStatement = PreparedStatement; +using HotfixDatabasePreparedStatement = PreparedStatement; +using LoginDatabasePreparedStatement = PreparedStatement; +using WorldDatabasePreparedStatement = PreparedStatement; + class PreparedResultSet; typedef std::shared_ptr PreparedQueryResult; typedef std::future PreparedQueryResultFuture; @@ -40,8 +50,18 @@ typedef std::promise PreparedQueryResultPromise; class QueryCallback; +class TransactionBase; + +template class Transaction; -typedef std::shared_ptr SQLTransaction; + +template +using SQLTransaction = std::shared_ptr>; + +using CharacterDatabaseTransaction = SQLTransaction; +using HotfixDatabaseTransaction = SQLTransaction; +using LoginDatabaseTransaction = SQLTransaction; +using WorldDatabaseTransaction = SQLTransaction; class SQLQueryHolder; typedef std::future QueryResultHolderFuture; diff --git a/src/server/database/Database/DatabaseWorkerPool.cpp b/src/server/database/Database/DatabaseWorkerPool.cpp index de321c9bfe..cd88431d0b 100644 --- a/src/server/database/Database/DatabaseWorkerPool.cpp +++ b/src/server/database/Database/DatabaseWorkerPool.cpp @@ -233,13 +233,13 @@ QueryResultHolderFuture DatabaseWorkerPool::DelayQueryHolder(SQLQueryHolder* } template -SQLTransaction DatabaseWorkerPool::BeginTransaction() +SQLTransaction DatabaseWorkerPool::BeginTransaction() { - return std::make_shared(); + return std::make_shared>(); } template -void DatabaseWorkerPool::CommitTransaction(SQLTransaction transaction) +void DatabaseWorkerPool::CommitTransaction(SQLTransaction transaction) { #ifdef TRINITY_DEBUG //! Only analyze transaction weaknesses in Debug mode. @@ -262,7 +262,7 @@ void DatabaseWorkerPool::CommitTransaction(SQLTransaction transaction) } template -void DatabaseWorkerPool::DirectCommitTransaction(SQLTransaction& transaction) +void DatabaseWorkerPool::DirectCommitTransaction(SQLTransaction& transaction) { T* connection = GetFreeConnection(); int errorCode = connection->ExecuteTransaction(transaction); @@ -448,7 +448,7 @@ void DatabaseWorkerPool::DirectExecute(PreparedStatement* stmt) } template -void DatabaseWorkerPool::ExecuteOrAppend(SQLTransaction& trans, char const* sql) +void DatabaseWorkerPool::ExecuteOrAppend(SQLTransaction& trans, char const* sql) { if (!trans) Execute(sql); @@ -457,7 +457,7 @@ void DatabaseWorkerPool::ExecuteOrAppend(SQLTransaction& trans, char const* s } template -void DatabaseWorkerPool::ExecuteOrAppend(SQLTransaction& trans, PreparedStatement* stmt) +void DatabaseWorkerPool::ExecuteOrAppend(SQLTransaction& trans, PreparedStatement* stmt) { if (!trans) Execute(stmt); diff --git a/src/server/database/Database/DatabaseWorkerPool.h b/src/server/database/Database/DatabaseWorkerPool.h index 635670dce0..25cd87bf6c 100644 --- a/src/server/database/Database/DatabaseWorkerPool.h +++ b/src/server/database/Database/DatabaseWorkerPool.h @@ -167,23 +167,23 @@ class DatabaseWorkerPool */ //! Begins an automanaged transaction pointer that will automatically rollback if not commited. (Autocommit=0) - SQLTransaction BeginTransaction(); + SQLTransaction BeginTransaction(); //! Enqueues a collection of one-way SQL operations (can be both adhoc and prepared). The order in which these operations //! were appended to the transaction will be respected during execution. - void CommitTransaction(SQLTransaction transaction); + void CommitTransaction(SQLTransaction transaction); //! Directly executes a collection of one-way SQL operations (can be both adhoc and prepared). The order in which these operations //! were appended to the transaction will be respected during execution. - void DirectCommitTransaction(SQLTransaction& transaction); + void DirectCommitTransaction(SQLTransaction& transaction); //! 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, char const* sql); + void ExecuteOrAppend(SQLTransaction& trans, char const* sql); //! 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); + void ExecuteOrAppend(SQLTransaction& trans, PreparedStatement* stmt); /** Other diff --git a/src/server/database/Database/Implementation/CharacterDatabase.h b/src/server/database/Database/Implementation/CharacterDatabase.h index 43fa172b1c..6abb97b20b 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.h +++ b/src/server/database/Database/Implementation/CharacterDatabase.h @@ -585,6 +585,4 @@ public: void DoPrepareStatements() override; }; -using CharacterDatabasePreparedStatement = PreparedStatement; - #endif diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h index 839b92a050..6207ce4694 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.h +++ b/src/server/database/Database/Implementation/HotfixDatabase.h @@ -56,6 +56,4 @@ public: void DoPrepareStatements() override; }; -using HotfixDatabasePreparedStatement = PreparedStatement; - #endif diff --git a/src/server/database/Database/Implementation/LoginDatabase.h b/src/server/database/Database/Implementation/LoginDatabase.h index e0ab018367..593be33ab9 100644 --- a/src/server/database/Database/Implementation/LoginDatabase.h +++ b/src/server/database/Database/Implementation/LoginDatabase.h @@ -149,6 +149,4 @@ public: void DoPrepareStatements() override; }; -using LoginDatabasePreparedStatement = PreparedStatement; - #endif diff --git a/src/server/database/Database/Implementation/WorldDatabase.h b/src/server/database/Database/Implementation/WorldDatabase.h index 6cd58e52d5..c913f46797 100644 --- a/src/server/database/Database/Implementation/WorldDatabase.h +++ b/src/server/database/Database/Implementation/WorldDatabase.h @@ -116,6 +116,4 @@ public: void DoPrepareStatements() override; }; -using WorldDatabasePreparedStatement = PreparedStatement; - #endif diff --git a/src/server/database/Database/MySQLConnection.cpp b/src/server/database/Database/MySQLConnection.cpp index 0698cc4a69..d42edd96fa 100644 --- a/src/server/database/Database/MySQLConnection.cpp +++ b/src/server/database/Database/MySQLConnection.cpp @@ -366,7 +366,7 @@ void MySQLConnection::CommitTransaction() Execute("COMMIT"); } -int MySQLConnection::ExecuteTransaction(SQLTransaction& transaction) +int MySQLConnection::ExecuteTransaction(std::shared_ptr transaction) { std::vector const& queries = transaction->m_queries; if (queries.empty()) diff --git a/src/server/database/Database/MySQLConnection.h b/src/server/database/Database/MySQLConnection.h index d80623f005..f1ae98279c 100644 --- a/src/server/database/Database/MySQLConnection.h +++ b/src/server/database/Database/MySQLConnection.h @@ -76,7 +76,7 @@ class TC_DATABASE_API MySQLConnection void BeginTransaction(); void RollbackTransaction(); void CommitTransaction(); - int ExecuteTransaction(SQLTransaction& transaction); + int ExecuteTransaction(std::shared_ptr transaction); size_t EscapeString(char* to, const char* from, size_t length); void Ping(); diff --git a/src/server/database/Database/Transaction.cpp b/src/server/database/Database/Transaction.cpp index b0a66d222a..e114808ddf 100644 --- a/src/server/database/Database/Transaction.cpp +++ b/src/server/database/Database/Transaction.cpp @@ -28,7 +28,7 @@ std::mutex TransactionTask::_deadlockLock; #define DEADLOCK_MAX_RETRY_TIME_MS 60000 //- Append a raw ad-hoc query to the transaction -void Transaction::Append(char const* sql) +void TransactionBase::Append(char const* sql) { SQLElementData data; data.type = SQL_ELEMENT_RAW; @@ -37,7 +37,7 @@ void Transaction::Append(char const* sql) } //- Append a prepared statement to the transaction -void Transaction::Append(PreparedStatementBase* stmt) +void TransactionBase::AppendPreparedStatement(PreparedStatementBase* stmt) { SQLElementData data; data.type = SQL_ELEMENT_PREPARED; @@ -45,7 +45,7 @@ void Transaction::Append(PreparedStatementBase* stmt) m_queries.push_back(data); } -void Transaction::Cleanup() +void TransactionBase::Cleanup() { // This might be called by explicit calls to Cleanup or by the auto-destructor if (_cleanedUp) diff --git a/src/server/database/Database/Transaction.h b/src/server/database/Database/Transaction.h index 0a926f1e55..dac9880d53 100644 --- a/src/server/database/Database/Transaction.h +++ b/src/server/database/Database/Transaction.h @@ -26,7 +26,7 @@ #include /*! Transactions, high level class. */ -class TC_DATABASE_API Transaction +class TC_DATABASE_API TransactionBase { friend class TransactionTask; friend class MySQLConnection; @@ -35,10 +35,9 @@ class TC_DATABASE_API Transaction friend class DatabaseWorkerPool; public: - Transaction() : _cleanedUp(false) { } - ~Transaction() { Cleanup(); } + TransactionBase() : _cleanedUp(false) { } + virtual ~TransactionBase() { Cleanup(); } - void Append(PreparedStatementBase* statement); void Append(char const* sql); template void PAppend(Format&& sql, Args&&... args) @@ -49,6 +48,7 @@ class TC_DATABASE_API Transaction std::size_t GetSize() const { return m_queries.size(); } protected: + void AppendPreparedStatement(PreparedStatementBase* statement); void Cleanup(); std::vector m_queries; @@ -57,6 +57,17 @@ class TC_DATABASE_API Transaction }; +template +class Transaction : public TransactionBase +{ +public: + using TransactionBase::Append; + void Append(PreparedStatement* statement) + { + AppendPreparedStatement(statement); + } +}; + /*! Low level class*/ class TC_DATABASE_API TransactionTask : public SQLOperation { @@ -64,13 +75,13 @@ class TC_DATABASE_API TransactionTask : public SQLOperation friend class DatabaseWorker; public: - TransactionTask(SQLTransaction trans) : m_trans(trans) { } + TransactionTask(std::shared_ptr trans) : m_trans(trans) { } ~TransactionTask() { } protected: bool Execute() override; - SQLTransaction m_trans; + std::shared_ptr m_trans; static std::mutex _deadlockLock; }; diff --git a/src/server/game/Accounts/AccountMgr.cpp b/src/server/game/Accounts/AccountMgr.cpp index 306b244443..1ad91997fe 100644 --- a/src/server/game/Accounts/AccountMgr.cpp +++ b/src/server/game/Accounts/AccountMgr.cpp @@ -129,7 +129,7 @@ AccountOpResult AccountMgr::DeleteAccount(uint32 accountId) stmt->setUInt32(0, accountId); CharacterDatabase.Execute(stmt); - SQLTransaction trans = LoginDatabase.BeginTransaction(); + LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction(); loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT); loginStmt->setUInt32(0, accountId); @@ -515,7 +515,7 @@ void AccountMgr::UpdateAccountAccess(rbac::RBACData* rbac, uint32 accountId, uin if (rbac && securityLevel == rbac->GetSecurityLevel()) rbac->SetSecurityLevel(securityLevel); - SQLTransaction trans = LoginDatabase.BeginTransaction(); + LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction(); // Delete old security level from DB if (realmId == -1) { diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index bb185f289c..21aedfe3b7 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -521,7 +521,7 @@ void AchievementMgr::DeleteFromDB(ObjectGuid /*guid*/) template<> void AchievementMgr::DeleteFromDB(ObjectGuid guid) { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT); stmt->setUInt32(0, guid.GetCounter()); @@ -537,7 +537,7 @@ void AchievementMgr::DeleteFromDB(ObjectGuid guid) template<> void AchievementMgr::DeleteFromDB(ObjectGuid guid) { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_GUILD_ACHIEVEMENTS); stmt->setUInt32(0, guid.GetCounter()); @@ -551,12 +551,12 @@ void AchievementMgr::DeleteFromDB(ObjectGuid guid) } template -void AchievementMgr::SaveToDB(SQLTransaction& /*trans*/) +void AchievementMgr::SaveToDB(CharacterDatabaseTransaction& /*trans*/) { } template<> -void AchievementMgr::SaveToDB(SQLTransaction& trans) +void AchievementMgr::SaveToDB(CharacterDatabaseTransaction& trans) { if (!m_completedAchievements.empty()) { @@ -608,7 +608,7 @@ void AchievementMgr::SaveToDB(SQLTransaction& trans) } template<> -void AchievementMgr::SaveToDB(SQLTransaction& trans) +void AchievementMgr::SaveToDB(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt; std::ostringstream guidstr; @@ -2022,7 +2022,7 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achiev draft = MailDraft(subject, text); } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); Item* item = reward->ItemID ? Item::CreateItem(reward->ItemID, 1, GetOwner()) : nullptr; if (item) diff --git a/src/server/game/Achievements/AchievementMgr.h b/src/server/game/Achievements/AchievementMgr.h index 53ef2a5bc9..031f99d6d2 100644 --- a/src/server/game/Achievements/AchievementMgr.h +++ b/src/server/game/Achievements/AchievementMgr.h @@ -263,7 +263,7 @@ class TC_GAME_API AchievementMgr void Reset(); static void DeleteFromDB(ObjectGuid lowguid); void LoadFromDB(PreparedQueryResult achievementResult, PreparedQueryResult criteriaResult); - void SaveToDB(SQLTransaction& trans); + void SaveToDB(CharacterDatabaseTransaction& trans); void ResetAchievementCriteria(AchievementCriteriaTypes type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, bool evenIfCriteriaComplete = false); void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, uint64 miscValue3 = 0, Unit const* unit = nullptr, Player* referencePlayer = nullptr, GameObject* go = nullptr); void CompletedAchievement(AchievementEntry const* entry, Player* referencePlayer); diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 245e286c5f..4762210042 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -120,7 +120,7 @@ uint32 AuctionHouseMgr::GetAuctionDeposit(AuctionHouseEntry const* entry, uint32 } //does not clear ram -void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, SQLTransaction& trans) +void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans) { Item* pItem = GetAItem(auction->itemGUIDLow); if (!pItem) @@ -189,7 +189,7 @@ void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, SQLTransaction& } } -void AuctionHouseMgr::SendAuctionSalePendingMail(AuctionEntry* auction, SQLTransaction& trans) +void AuctionHouseMgr::SendAuctionSalePendingMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans) { ObjectGuid owner_guid(HighGuid::Player, auction->owner); Player* owner = ObjectAccessor::FindConnectedPlayer(owner_guid); @@ -201,7 +201,7 @@ void AuctionHouseMgr::SendAuctionSalePendingMail(AuctionEntry* auction, SQLTrans } //call this method to send mail to auction owner, when auction is successful, it does not clear ram -void AuctionHouseMgr::SendAuctionSuccessfulMail(AuctionEntry* auction, SQLTransaction& trans) +void AuctionHouseMgr::SendAuctionSuccessfulMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans) { ObjectGuid owner_guid(HighGuid::Player, auction->owner); Player* owner = ObjectAccessor::FindConnectedPlayer(owner_guid); @@ -227,7 +227,7 @@ void AuctionHouseMgr::SendAuctionSuccessfulMail(AuctionEntry* auction, SQLTransa } //does not clear ram -void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, SQLTransaction& trans) +void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans) { //return an item in auction to its owner by mail Item* pItem = GetAItem(auction->itemGUIDLow); @@ -255,7 +255,7 @@ void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, SQLTransacti } //this function sends mail to old bidder -void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 newPrice, Player* newBidder, SQLTransaction& trans) +void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 newPrice, Player* newBidder, CharacterDatabaseTransaction& trans) { ObjectGuid oldBidder_guid(HighGuid::Player, auction->bidder); Player* oldBidder = ObjectAccessor::FindConnectedPlayer(oldBidder_guid); @@ -277,7 +277,7 @@ void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 new } //this function sends mail, when auction is cancelled to old bidder -void AuctionHouseMgr::SendAuctionCancelledToBidderMail(AuctionEntry* auction, SQLTransaction& trans, Item* item) +void AuctionHouseMgr::SendAuctionCancelledToBidderMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans, Item* item) { ObjectGuid bidder_guid = ObjectGuid(HighGuid::Player, auction->bidder); Player* bidder = ObjectAccessor::FindConnectedPlayer(bidder_guid); @@ -384,7 +384,7 @@ void AuctionHouseMgr::LoadAuctions() // parse auctions from db uint32 countAuctions = 0; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); do { Field* fields = resultAuctions->Fetch(); @@ -417,7 +417,7 @@ void AuctionHouseMgr::AddAItem(Item* it) mAitems[it->GetGUID().GetCounter()] = it; } -bool AuctionHouseMgr::RemoveAItem(ObjectGuid::LowType id, bool deleteItem /*= false*/, SQLTransaction* trans /*= nullptr*/) +bool AuctionHouseMgr::RemoveAItem(ObjectGuid::LowType id, bool deleteItem /*= false*/, CharacterDatabaseTransaction* trans /*= nullptr*/) { ItemMap::iterator i = mAitems.find(id); if (i == mAitems.end()) @@ -479,7 +479,7 @@ void AuctionHouseMgr::PendingAuctionProcess(Player* player) PlayerAuctions* thisAH = iterMap->second.first; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); uint32 totalItems = 0; for (auto itrAH = thisAH->begin(); itrAH != thisAH->end(); ++itrAH) @@ -543,7 +543,7 @@ void AuctionHouseMgr::UpdatePendingAuctions() TC_LOG_WARN("auctionHouse", "Player %s was offline, unable to retrieve deposit!", playerGUID.ToString().c_str()); PlayerAuctions* thisAH = itr->second.first; ++itr; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); for (auto AHitr = thisAH->begin(); AHitr != thisAH->end();) { AuctionEntry* AH = (*AHitr); @@ -631,7 +631,7 @@ void AuctionHouseObject::Update() ++itr; } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); for (AuctionEntryMap::iterator it = AuctionsMap.begin(); it != AuctionsMap.end();) { @@ -874,7 +874,7 @@ uint32 AuctionEntry::GetAuctionOutBid() const return outbid ? outbid : 1; } -void AuctionEntry::DeleteFromDB(SQLTransaction& trans) const +void AuctionEntry::DeleteFromDB(CharacterDatabaseTransaction& trans) const { CharacterDatabasePreparedStatement* stmt; @@ -887,7 +887,7 @@ void AuctionEntry::DeleteFromDB(SQLTransaction& trans) const trans->Append(stmt); } -void AuctionEntry::SaveToDB(SQLTransaction& trans) const +void AuctionEntry::SaveToDB(CharacterDatabaseTransaction& trans) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_AUCTION); stmt->setUInt32(0, Id); diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index 7957900932..61acc3cc2e 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -95,8 +95,8 @@ struct TC_GAME_API AuctionEntry uint32 GetAuctionCut() const; uint32 GetAuctionOutBid() const; bool BuildAuctionInfo(WorldPacket & data, Item* sourceItem = nullptr) const; - void DeleteFromDB(SQLTransaction& trans) const; - void SaveToDB(SQLTransaction& trans) const; + void DeleteFromDB(CharacterDatabaseTransaction& trans) const; + void SaveToDB(CharacterDatabaseTransaction& trans) const; bool LoadFromDB(Field* fields); std::string BuildAuctionMailSubject(MailAuctionAnswers response) const; static std::string BuildAuctionMailBody(ObjectGuid::LowType lowGuid, uint32 bid, uint32 buyout, uint32 deposit, uint32 cut); @@ -175,12 +175,12 @@ class TC_GAME_API AuctionHouseMgr } //auction messages - void SendAuctionWonMail(AuctionEntry* auction, SQLTransaction& trans); - void SendAuctionSalePendingMail(AuctionEntry* auction, SQLTransaction& trans); - void SendAuctionSuccessfulMail(AuctionEntry* auction, SQLTransaction& trans); - void SendAuctionExpiredMail(AuctionEntry* auction, SQLTransaction& trans); - void SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 newPrice, Player* newBidder, SQLTransaction& trans); - void SendAuctionCancelledToBidderMail(AuctionEntry* auction, SQLTransaction& trans, Item* item); + void SendAuctionWonMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans); + void SendAuctionSalePendingMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans); + void SendAuctionSuccessfulMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans); + void SendAuctionExpiredMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans); + void SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 newPrice, Player* newBidder, CharacterDatabaseTransaction& trans); + void SendAuctionCancelledToBidderMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans, Item* item); static uint32 GetAuctionDeposit(AuctionHouseEntry const* entry, uint32 time, Item* pItem, uint32 count); static AuctionHouseEntry const* GetAuctionHouseEntry(uint32 factionTemplateId); @@ -192,7 +192,7 @@ class TC_GAME_API AuctionHouseMgr void LoadAuctions(); void AddAItem(Item* it); - bool RemoveAItem(ObjectGuid::LowType id, bool deleteItem = false, SQLTransaction* trans = nullptr); + bool RemoveAItem(ObjectGuid::LowType id, bool deleteItem = false, CharacterDatabaseTransaction* trans = nullptr); bool PendingAuctionAdd(Player* player, AuctionEntry* aEntry, Item* item); uint32 PendingAuctionCount(Player const* player) const; void PendingAuctionProcess(Player* player); diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp index 0cb30f0933..9074adb318 100644 --- a/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp +++ b/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp @@ -388,7 +388,7 @@ void AuctionBotBuyer::BuyEntry(AuctionEntry* auction, AuctionHouseObject* auctio { TC_LOG_DEBUG("ahbot", "AHBot: Entry %u bought at %.2fg", auction->Id, float(auction->buyout) / GOLD); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // Send mail to previous bidder if any if (auction->bidder && !sAuctionBotConfig->IsBotChar(auction->bidder)) @@ -419,7 +419,7 @@ void AuctionBotBuyer::PlaceBidToEntry(AuctionEntry* auction, uint32 bidPrice) { TC_LOG_DEBUG("ahbot", "AHBot: Bid placed to entry %u, %.2fg", auction->Id, float(bidPrice) / GOLD); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // Send mail to previous bidder if any if (auction->bidder && !sAuctionBotConfig->IsBotChar(auction->bidder)) diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp index a857a4b9f1..724027bcfa 100644 --- a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp +++ b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp @@ -961,7 +961,7 @@ void AuctionBotSeller::AddNewAuctions(SellerConfiguration& config) AllItemsArray allItems(MAX_AUCTION_QUALITY, std::vector(MAX_ITEM_CLASS)); // Main loop // getRandomArray will give what categories of items should be added (return true if there is at least 1 items missed) - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); while (GetItemsToSell(config, itemsToSell, allItems) && items > 0) { --items; diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp index 8ed89826fc..634d45c643 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.cpp +++ b/src/server/game/Battlegrounds/ArenaTeam.cpp @@ -383,7 +383,7 @@ void ArenaTeam::Disband(WorldSession* session) DelMember(Members.front().Guid, false); // Update database - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM); stmt->setUInt32(0, TeamId); @@ -406,7 +406,7 @@ void ArenaTeam::Disband() DelMember(Members.front().Guid, false); // Update database - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM); stmt->setUInt32(0, TeamId); @@ -867,7 +867,7 @@ void ArenaTeam::SaveToDB() // Save team and member stats to db // Called after a match has ended or when calculating arena_points - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_STATS); stmt->setUInt16(0, Stats.Rating); diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index b4abc139a6..be12e3889e 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -967,7 +967,7 @@ void Battleground::RemovePlayerAtLeave(ObjectGuid guid, bool Transport, bool Sen } else { - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); Player::OfflineResurrect(guid, trans); } diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp index 73100fd7fb..9f5fc6c3c0 100644 --- a/src/server/game/Calendar/CalendarMgr.cpp +++ b/src/server/game/Calendar/CalendarMgr.cpp @@ -140,11 +140,11 @@ void CalendarMgr::AddEvent(CalendarEvent* calendarEvent, CalendarSendEventType s void CalendarMgr::AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite) { - SQLTransaction dummy; + CharacterDatabaseTransaction dummy; AddInvite(calendarEvent, invite, dummy); } -void CalendarMgr::AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite, SQLTransaction& trans) +void CalendarMgr::AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite, CharacterDatabaseTransaction& trans) { if (!calendarEvent->IsGuildAnnouncement()) SendCalendarEventInvite(*invite); @@ -171,7 +171,7 @@ void CalendarMgr::RemoveEvent(uint64 eventId, ObjectGuid remover) SendCalendarEventRemovedAlert(*calendarEvent); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt; MailDraft mail(calendarEvent->BuildCalendarMailSubject(remover), calendarEvent->BuildCalendarMailBody()); @@ -217,7 +217,7 @@ void CalendarMgr::RemoveInvite(uint64 inviteId, uint64 eventId, ObjectGuid /*rem if (itr == _invites[eventId].end()) return; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CALENDAR_INVITE); stmt->setUInt64(0, (*itr)->GetInviteId()); trans->Append(stmt); @@ -254,11 +254,11 @@ void CalendarMgr::UpdateEvent(CalendarEvent* calendarEvent) void CalendarMgr::UpdateInvite(CalendarInvite* invite) { - SQLTransaction dummy; + CharacterDatabaseTransaction dummy; UpdateInvite(invite, dummy); } -void CalendarMgr::UpdateInvite(CalendarInvite* invite, SQLTransaction& trans) +void CalendarMgr::UpdateInvite(CalendarInvite* invite, CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CALENDAR_INVITE); stmt->setUInt64(0, invite->GetInviteId()); diff --git a/src/server/game/Calendar/CalendarMgr.h b/src/server/game/Calendar/CalendarMgr.h index ada22bc430..fa1318682d 100644 --- a/src/server/game/Calendar/CalendarMgr.h +++ b/src/server/game/Calendar/CalendarMgr.h @@ -313,10 +313,10 @@ class TC_GAME_API CalendarMgr void UpdateEvent(CalendarEvent* calendarEvent); void AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite); - void AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite, SQLTransaction& trans); + void AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite, CharacterDatabaseTransaction& trans); void RemoveInvite(uint64 inviteId, uint64 eventId, ObjectGuid remover); void UpdateInvite(CalendarInvite* invite); - void UpdateInvite(CalendarInvite* invite, SQLTransaction& trans); + void UpdateInvite(CalendarInvite* invite, CharacterDatabaseTransaction& trans); void RemoveAllPlayerEventsAndInvites(ObjectGuid guid); void RemovePlayerGuildEventsAndSignups(ObjectGuid guid, ObjectGuid::LowType guildId); diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 8862aa6a09..71d173aec6 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -98,7 +98,7 @@ void LFGMgr::_SaveToDB(ObjectGuid guid, uint32 db_guid) if (!guid.IsGroup()) return; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_LFG_DATA); stmt->setUInt32(0, db_guid); diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp index c2c1f62185..d09815ef4c 100644 --- a/src/server/game/Entities/Corpse/Corpse.cpp +++ b/src/server/game/Entities/Corpse/Corpse.cpp @@ -98,7 +98,7 @@ bool Corpse::Create(ObjectGuid::LowType guidlow, Player* owner) void Corpse::SaveToDB() { // prevent DB data inconsistence problems and duplicates - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); DeleteFromDB(trans); uint16 index = 0; @@ -132,12 +132,12 @@ void Corpse::SaveToDB() CharacterDatabase.CommitTransaction(trans); } -void Corpse::DeleteFromDB(SQLTransaction& trans) +void Corpse::DeleteFromDB(CharacterDatabaseTransaction& trans) { Corpse::DeleteFromDB(GetOwnerGUID(), trans); } -void Corpse::DeleteFromDB(ObjectGuid const& ownerGuid, SQLTransaction& trans) +void Corpse::DeleteFromDB(ObjectGuid const& ownerGuid, CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CORPSE); stmt->setUInt32(0, ownerGuid.GetCounter()); diff --git a/src/server/game/Entities/Corpse/Corpse.h b/src/server/game/Entities/Corpse/Corpse.h index 0cc59f79d2..faabce06c2 100644 --- a/src/server/game/Entities/Corpse/Corpse.h +++ b/src/server/game/Entities/Corpse/Corpse.h @@ -60,8 +60,8 @@ class TC_GAME_API Corpse : public WorldObject, public GridObject void SaveToDB(); bool LoadCorpseFromDB(ObjectGuid::LowType guid, Field* fields); - void DeleteFromDB(SQLTransaction& trans); - static void DeleteFromDB(ObjectGuid const& ownerGuid, SQLTransaction& trans); + void DeleteFromDB(CharacterDatabaseTransaction& trans); + static void DeleteFromDB(ObjectGuid const& ownerGuid, CharacterDatabaseTransaction& trans); ObjectGuid GetOwnerGUID() const { return GetGuidValue(CORPSE_FIELD_OWNER); } diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 24995195ec..006bd12910 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1254,7 +1254,7 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask) data.phaseGroup = GetDBPhase() < 0 ? -GetDBPhase() : data.phaseGroup; // update in DB - SQLTransaction trans = WorldDatabase.BeginTransaction(); + WorldDatabaseTransaction trans = WorldDatabase.BeginTransaction(); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE); stmt->setUInt32(0, m_spawnId); @@ -1650,7 +1650,7 @@ bool Creature::hasInvolvedQuest(uint32 quest_id) const if (!data) return false; - SQLTransaction trans = WorldDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); sMapMgr->DoForAllMapsWithMapId(data->spawnPoint.GetMapId(), [spawnId, trans](Map* map) -> void @@ -1668,29 +1668,31 @@ bool Creature::hasInvolvedQuest(uint32 quest_id) const // delete data from memory ... sObjectMgr->DeleteCreatureData(spawnId); + WorldDatabaseTransaction trans2 = WorldDatabase.BeginTransaction(); + // ... and the database WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE); stmt->setUInt32(0, spawnId); - trans->Append(stmt); + trans2->Append(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_SPAWNGROUP_MEMBER); stmt->setUInt8(0, uint8(SPAWN_TYPE_CREATURE)); stmt->setUInt32(1, spawnId); - trans->Append(stmt); + trans2->Append(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE_ADDON); stmt->setUInt32(0, spawnId); - trans->Append(stmt); + trans2->Append(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAME_EVENT_CREATURE); stmt->setUInt32(0, spawnId); - trans->Append(stmt); + trans2->Append(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAME_EVENT_MODEL_EQUIP); stmt->setUInt32(0, spawnId); - trans->Append(stmt); + trans2->Append(stmt); - WorldDatabase.CommitTransaction(trans); + WorldDatabase.CommitTransaction(trans2); return true; } diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 0e0920ccaf..c9f47af808 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -899,7 +899,7 @@ void GameObject::SaveToDB(uint32 mapid, uint8 spawnMask) data.phaseGroup = GetDBPhase() < 0 ? -GetDBPhase() : data.phaseGroup; // Update in DB - SQLTransaction trans = WorldDatabase.BeginTransaction(); + WorldDatabaseTransaction trans = WorldDatabase.BeginTransaction(); uint8 index = 0; @@ -1006,7 +1006,7 @@ bool GameObject::LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap if (!data) return false; - SQLTransaction trans = WorldDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); sMapMgr->DoForAllMapsWithMapId(data->spawnPoint.GetMapId(), [spawnId, trans](Map* map) -> void @@ -1021,22 +1021,24 @@ bool GameObject::LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap } ); + WorldDatabaseTransaction trans2 = WorldDatabase.BeginTransaction(); + // delete data from memory sObjectMgr->DeleteGameObjectData(spawnId); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAMEOBJECT); stmt->setUInt32(0, spawnId); - trans->Append(stmt); + trans2->Append(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_SPAWNGROUP_MEMBER); stmt->setUInt8(0, uint8(SPAWN_TYPE_GAMEOBJECT)); stmt->setUInt32(1, spawnId); - trans->Append(stmt); + trans2->Append(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_EVENT_GAMEOBJECT); stmt->setUInt32(0, spawnId); - trans->Append(stmt); + trans2->Append(stmt); - WorldDatabase.CommitTransaction(trans); + WorldDatabase.CommitTransaction(trans2); return true; } diff --git a/src/server/game/Entities/Item/Container/Bag.cpp b/src/server/game/Entities/Item/Container/Bag.cpp index c02694ba73..80c88850a5 100644 --- a/src/server/game/Entities/Item/Container/Bag.cpp +++ b/src/server/game/Entities/Item/Container/Bag.cpp @@ -103,7 +103,7 @@ bool Bag::Create(ObjectGuid::LowType guidlow, uint32 itemid, Player const* owner return true; } -void Bag::SaveToDB(SQLTransaction& trans) +void Bag::SaveToDB(CharacterDatabaseTransaction& trans) { Item::SaveToDB(trans); } @@ -126,7 +126,7 @@ bool Bag::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fie return true; } -void Bag::DeleteFromDB(SQLTransaction& trans) +void Bag::DeleteFromDB(CharacterDatabaseTransaction& trans) { for (uint8 i = 0; i < MAX_BAG_SIZE; ++i) if (m_bagslot[i]) diff --git a/src/server/game/Entities/Item/Container/Bag.h b/src/server/game/Entities/Item/Container/Bag.h index 7ac4d60d30..05cf0528e1 100644 --- a/src/server/game/Entities/Item/Container/Bag.h +++ b/src/server/game/Entities/Item/Container/Bag.h @@ -50,11 +50,11 @@ class TC_GAME_API Bag : public Item // DB operations // overwrite virtual Item::SaveToDB - void SaveToDB(SQLTransaction& trans) override; + void SaveToDB(CharacterDatabaseTransaction& trans) override; // overwrite virtual Item::LoadFromDB bool LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fields, uint32 entry) override; // overwrite virtual Item::DeleteFromDB - void DeleteFromDB(SQLTransaction& trans) override; + void DeleteFromDB(CharacterDatabaseTransaction& trans) override; void BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) const override; diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index b0ef018501..a09cdd889d 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -323,7 +323,7 @@ void Item::UpdateDuration(Player* owner, uint32 diff) SetState(ITEM_CHANGED, owner); // save new time in database } -void Item::SaveToDB(SQLTransaction& trans) +void Item::SaveToDB(CharacterDatabaseTransaction& trans) { bool isInTransaction = bool(trans); if (!isInTransaction) @@ -493,14 +493,14 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fi } /*static*/ -void Item::DeleteFromDB(SQLTransaction& trans, ObjectGuid::LowType itemGuid) +void Item::DeleteFromDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType itemGuid) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); stmt->setUInt32(0, itemGuid); trans->Append(stmt); } -void Item::DeleteFromDB(SQLTransaction& trans) +void Item::DeleteFromDB(CharacterDatabaseTransaction& trans) { DeleteFromDB(trans, GetGUID().GetCounter()); @@ -510,14 +510,14 @@ void Item::DeleteFromDB(SQLTransaction& trans) } /*static*/ -void Item::DeleteFromInventoryDB(SQLTransaction& trans, ObjectGuid::LowType itemGuid) +void Item::DeleteFromInventoryDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType itemGuid) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_ITEM); stmt->setUInt32(0, itemGuid); trans->Append(stmt); } -void Item::DeleteFromInventoryDB(SQLTransaction& trans) +void Item::DeleteFromInventoryDB(CharacterDatabaseTransaction& trans) { DeleteFromInventoryDB(trans, GetGUID().GetCounter()); } @@ -1050,7 +1050,7 @@ void Item::RemoveFromObjectUpdate() void Item::SaveRefundDataToDB() { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_REFUND_INSTANCE); stmt->setUInt32(0, GetGUID().GetCounter()); @@ -1066,7 +1066,7 @@ void Item::SaveRefundDataToDB() CharacterDatabase.CommitTransaction(trans); } -void Item::DeleteRefundDataFromDB(SQLTransaction* trans) +void Item::DeleteRefundDataFromDB(CharacterDatabaseTransaction* trans) { if (trans) { @@ -1077,7 +1077,7 @@ void Item::DeleteRefundDataFromDB(SQLTransaction* trans) } } -void Item::SetNotRefundable(Player* owner, bool changestate /*= true*/, SQLTransaction* trans /*=nullptr*/) +void Item::SetNotRefundable(Player* owner, bool changestate /*= true*/, CharacterDatabaseTransaction* trans /*=nullptr*/) { if (!HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_REFUNDABLE)) return; diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index f0381718ed..8ec93b7d08 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -83,15 +83,15 @@ class TC_GAME_API Item : public Object bool IsBattlenetAccountBound() const { return (GetTemplate()->GetFlags2() & ITEM_FLAG2_BNET_ACCOUNT_TRADE_OK) != 0; } bool IsBindedNotWith(Player const* player) const; bool IsBoundByEnchant() const; - virtual void SaveToDB(SQLTransaction& trans); + virtual void SaveToDB(CharacterDatabaseTransaction& trans); virtual bool LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fields, uint32 entry); - static void DeleteFromDB(SQLTransaction& trans, ObjectGuid::LowType itemGuid); - virtual void DeleteFromDB(SQLTransaction& trans); - static void DeleteFromInventoryDB(SQLTransaction& trans, ObjectGuid::LowType itemGuid); + static void DeleteFromDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType itemGuid); + virtual void DeleteFromDB(CharacterDatabaseTransaction& trans); + static void DeleteFromInventoryDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType itemGuid); - void DeleteFromInventoryDB(SQLTransaction& trans); + void DeleteFromInventoryDB(CharacterDatabaseTransaction& trans); void SaveRefundDataToDB(); - void DeleteRefundDataFromDB(SQLTransaction* trans); + void DeleteRefundDataFromDB(CharacterDatabaseTransaction* trans); Bag* ToBag() { if (IsBag()) return reinterpret_cast(this); else return nullptr; } Bag const* ToBag() const { if (IsBag()) return reinterpret_cast(this); else return nullptr; } @@ -181,7 +181,7 @@ class TC_GAME_API Item : public Object // Item Refund system - void SetNotRefundable(Player* owner, bool changestate = true, SQLTransaction* trans = nullptr); + void SetNotRefundable(Player* owner, bool changestate = true, CharacterDatabaseTransaction* trans = nullptr); void SetRefundRecipient(ObjectGuid::LowType pGuidLow) { m_refundRecipient = pGuidLow; } void SetPaidMoney(uint32 money) { m_paidMoney = money; } void SetPaidExtendedCost(uint32 iece) { m_paidExtendedCost = iece; } diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index a6bb43b2fe..e07da4358f 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -390,7 +390,7 @@ void Pet::SavePetToDB(PetSaveMode mode) uint32 curhealth = GetHealth(); uint32 curmana = GetPower(POWER_MANA); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // save auras before possibly removing them _SaveAuras(trans); @@ -498,7 +498,7 @@ void Pet::SavePetToDB(PetSaveMode mode) void Pet::DeleteFromDB(ObjectGuid::LowType guidlow) { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_BY_ID); stmt->setUInt32(0, guidlow); @@ -1128,7 +1128,7 @@ void Pet::_LoadSpells() } } -void Pet::_SaveSpells(SQLTransaction& trans) +void Pet::_SaveSpells(CharacterDatabaseTransaction& trans) { for (PetSpellMap::iterator itr = m_spells.begin(), next = m_spells.begin(); itr != m_spells.end(); itr = next) { @@ -1251,7 +1251,7 @@ void Pet::_LoadAuras(uint32 timediff) } } -void Pet::_SaveAuras(SQLTransaction& trans) +void Pet::_SaveAuras(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_AURAS); stmt->setUInt32(0, m_charmInfo->GetPetNumber()); diff --git a/src/server/game/Entities/Pet/Pet.h b/src/server/game/Entities/Pet/Pet.h index 86cdc09467..8b9e0b4a4c 100644 --- a/src/server/game/Entities/Pet/Pet.h +++ b/src/server/game/Entities/Pet/Pet.h @@ -125,9 +125,9 @@ class TC_GAME_API Pet : public Guardian void _LoadSpellCooldowns(); void _LoadAuras(uint32 timediff); - void _SaveAuras(SQLTransaction& trans); + void _SaveAuras(CharacterDatabaseTransaction& trans); void _LoadSpells(); - void _SaveSpells(SQLTransaction& trans); + void _SaveSpells(CharacterDatabaseTransaction& trans); bool addSpell(uint32 spellId, ActiveStates active = ACT_DECIDE, PetSpellState state = PETSPELL_NEW, PetSpellType type = PETSPELL_NORMAL); bool learnSpell(uint32 spell_id); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 8c3b8eebca..e9e31499ac 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2575,7 +2575,7 @@ void Player::GiveLevel(uint8 level) if (MailLevelReward const* mailReward = sObjectMgr->GetMailLevelReward(level, getRaceMask())) { /// @todo Poor design of mail system - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); MailDraft(mailReward->mailTemplateId).SendMailTo(trans, this, MailSender(MAIL_CREATURE, mailReward->senderEntry)); CharacterDatabase.CommitTransaction(trans); } @@ -3848,7 +3848,7 @@ bool Player::ResetTalents(bool no_cost) SetPrimaryTalentTree(GetActiveSpec(), 0); SetFreeTalentPoints(talentPointsForLevel); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); _SaveTalents(trans); _SaveSpells(trans); CharacterDatabase.CommitTransaction(trans); @@ -3990,7 +3990,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe charDelete_method = CHAR_DELETE_REMOVE; } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); if (ObjectGuid::LowType guildId = sCharacterCache->GetCharacterGuildIdByGuid(playerguid)) if (Guild* guild = sGuildMgr->GetGuildById(guildId)) guild->DeleteMember(trans, playerguid, false, false, true); @@ -4563,7 +4563,7 @@ void Player::KillPlayer() UpdateObjectVisibility(); } -void Player::OfflineResurrect(ObjectGuid const& guid, SQLTransaction& trans) +void Player::OfflineResurrect(ObjectGuid const& guid, CharacterDatabaseTransaction& trans) { Corpse::DeleteFromDB(guid, trans); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG); @@ -6864,7 +6864,7 @@ void Player::_LoadCurrency(PreparedQueryResult result) } while (result->NextRow()); } -void Player::_SaveCurrency(SQLTransaction& trans) +void Player::_SaveCurrency(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt = nullptr; for (PlayerCurrenciesMap::iterator itr = _currencyStorage.begin(); itr != _currencyStorage.end(); ++itr) @@ -15204,7 +15204,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver, if (uint32 mail_template_id = quest->GetRewMailTemplateId()) { /// @todo Poor design of mail system - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); if (uint32 questMailSender = quest->GetRewMailSenderEntry()) MailDraft(mail_template_id).SendMailTo(trans, this, questMailSender, MAIL_CHECK_MASK_HAS_BODY, quest->GetRewMailDelaySecs()); else @@ -18221,7 +18221,7 @@ void Player::_LoadInventory(PreparedQueryResult result, uint32 timeDiff) std::map bagMap; // fast guid lookup for bags std::map invalidBagMap; // fast guid lookup for bags std::list problematicItems; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // Prevent items from being added to the queue while loading m_itemUpdateQueueBlocked = true; @@ -18384,7 +18384,7 @@ void Player::_LoadVoidStorage(PreparedQueryResult result) while (result->NextRow()); } -Item* Player::_LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, Field* fields) +Item* Player::_LoadItem(CharacterDatabaseTransaction& trans, uint32 zoneId, uint32 timeDiff, Field* fields) { Item* item = nullptr; ObjectGuid::LowType itemGuid = fields[13].GetUInt32(); @@ -18559,7 +18559,7 @@ void Player::_LoadMailedItems(Mail* mail) item->FSetState(ITEM_REMOVED); - SQLTransaction temp = SQLTransaction(nullptr); + CharacterDatabaseTransaction temp = CharacterDatabaseTransaction(nullptr); item->SaveToDB(temp); // it also deletes item object ! continue; } @@ -19645,7 +19645,7 @@ void Player::SaveToDB(bool create /*=false*/) if (!create) sScriptMgr->OnPlayerSave(this); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = nullptr; uint8 index = 0; @@ -19980,14 +19980,14 @@ void Player::SaveToDB(bool create /*=false*/) } // fast save function for item/money cheating preventing - save only inventory and money state -void Player::SaveInventoryAndGoldToDB(SQLTransaction& trans) +void Player::SaveInventoryAndGoldToDB(CharacterDatabaseTransaction& trans) { _SaveInventory(trans); _SaveCurrency(trans); SaveGoldToDB(trans); } -void Player::SaveGoldToDB(SQLTransaction& trans) const +void Player::SaveGoldToDB(CharacterDatabaseTransaction& trans) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_MONEY); stmt->setUInt64(0, GetMoney()); @@ -19995,7 +19995,7 @@ void Player::SaveGoldToDB(SQLTransaction& trans) const trans->Append(stmt); } -void Player::_SaveActions(SQLTransaction& trans) +void Player::_SaveActions(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt; @@ -20043,7 +20043,7 @@ void Player::_SaveActions(SQLTransaction& trans) } } -void Player::_SaveAuras(SQLTransaction& trans) +void Player::_SaveAuras(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_AURA); stmt->setUInt32(0, GetGUID().GetCounter()); @@ -20098,7 +20098,7 @@ void Player::_SaveAuras(SQLTransaction& trans) } } -void Player::_SaveInventory(SQLTransaction& trans) +void Player::_SaveInventory(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt; // force items in buyback slots to new state @@ -20239,7 +20239,7 @@ void Player::_SaveInventory(SQLTransaction& trans) m_itemUpdateQueue.clear(); } -void Player::_SaveVoidStorage(SQLTransaction& trans) +void Player::_SaveVoidStorage(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt = nullptr; uint32 lowGuid = GetGUID().GetCounter(); @@ -20271,7 +20271,7 @@ void Player::_SaveVoidStorage(SQLTransaction& trans) } -void Player::_SaveCUFProfiles(SQLTransaction& trans) +void Player::_SaveCUFProfiles(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt = nullptr; uint32 lowGuid = GetGUID().GetCounter(); @@ -20310,7 +20310,7 @@ void Player::_SaveCUFProfiles(SQLTransaction& trans) } -void Player::_SaveMail(SQLTransaction& trans) +void Player::_SaveMail(CharacterDatabaseTransaction& trans) { if (!m_mailsLoaded) return; @@ -20383,7 +20383,7 @@ void Player::_SaveMail(SQLTransaction& trans) m_mailsUpdated = false; } -void Player::_SaveQuestStatus(SQLTransaction& trans) +void Player::_SaveQuestStatus(CharacterDatabaseTransaction& trans) { bool isTransaction = bool(trans); if (!isTransaction) @@ -20457,7 +20457,7 @@ void Player::_SaveQuestStatus(SQLTransaction& trans) CharacterDatabase.CommitTransaction(trans); } -void Player::_SaveDailyQuestStatus(SQLTransaction& trans) +void Player::_SaveDailyQuestStatus(CharacterDatabaseTransaction& trans) { if (!m_DailyQuestChanged) return; @@ -20484,7 +20484,7 @@ void Player::_SaveDailyQuestStatus(SQLTransaction& trans) } } -void Player::_SaveWeeklyQuestStatus(SQLTransaction& trans) +void Player::_SaveWeeklyQuestStatus(CharacterDatabaseTransaction& trans) { if (!m_WeeklyQuestChanged || m_weeklyquests.empty()) return; @@ -20507,7 +20507,7 @@ void Player::_SaveWeeklyQuestStatus(SQLTransaction& trans) m_WeeklyQuestChanged = false; } -void Player::_SaveSeasonalQuestStatus(SQLTransaction& trans) +void Player::_SaveSeasonalQuestStatus(CharacterDatabaseTransaction& trans) { if (!m_SeasonalQuestChanged) return; @@ -20539,7 +20539,7 @@ void Player::_SaveSeasonalQuestStatus(SQLTransaction& trans) } } -void Player::_SaveMonthlyQuestStatus(SQLTransaction& trans) +void Player::_SaveMonthlyQuestStatus(CharacterDatabaseTransaction& trans) { if (!m_MonthlyQuestChanged || m_monthlyquests.empty()) return; @@ -20562,7 +20562,7 @@ void Player::_SaveMonthlyQuestStatus(SQLTransaction& trans) m_MonthlyQuestChanged = false; } -void Player::_SaveLFGRewardStatus(SQLTransaction& trans) +void Player::_SaveLFGRewardStatus(CharacterDatabaseTransaction& trans) { if (!m_LFGRewardStatusChanged || m_lfgrewardstatus.empty()) return; @@ -20589,7 +20589,7 @@ void Player::_SaveLFGRewardStatus(SQLTransaction& trans) m_LFGRewardStatusChanged = false; } -void Player::_SaveSkills(SQLTransaction& trans) +void Player::_SaveSkills(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt; // we don't need transactions here. @@ -20640,7 +20640,7 @@ void Player::_SaveSkills(SQLTransaction& trans) } } -void Player::_SaveSpells(SQLTransaction& trans) +void Player::_SaveSpells(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt; @@ -20681,7 +20681,7 @@ void Player::_SaveSpells(SQLTransaction& trans) // save player stats -- only for external usage // real stats will be recalculated on player login -void Player::_SaveStats(SQLTransaction& trans) const +void Player::_SaveStats(CharacterDatabaseTransaction& trans) const { // check if stat saving is enabled and if char level is high enough if (!sWorld->getIntConfig(CONFIG_MIN_LEVEL_STAT_SAVE) || getLevel() < sWorld->getIntConfig(CONFIG_MIN_LEVEL_STAT_SAVE)) @@ -20790,7 +20790,7 @@ void Player::SendAttackSwingNotInRange() const SendDirectMessage(&data); } -void Player::SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGuid guid, SQLTransaction& trans) +void Player::SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGuid guid, CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_POSITION); @@ -20816,7 +20816,7 @@ void Player::SetUInt32ValueInArray(Tokenizer& Tokenizer, uint16 index, uint32 va Tokenizer[index] = buf; } -void Player::Customize(CharacterCustomizeInfo const* customizeInfo, SQLTransaction& trans) +void Player::Customize(CharacterCustomizeInfo const* customizeInfo, CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GENDER_AND_APPEARANCE); @@ -21784,7 +21784,7 @@ void Player::RemovePetitionsAndSigns(ObjectGuid guid, uint32 type) } } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); if (type == 10) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_BY_OWNER); @@ -24633,7 +24633,7 @@ void Player::AutoUnequipOffhandIfNeed(bool force /*= false*/) else { MoveItemFromInventory(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND, true); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); offItem->DeleteFromInventoryDB(trans); // deletes item from character's inventory offItem->SaveToDB(trans); // recursive and not have transaction guard into self, item not in inventory and can be save standalone @@ -26735,7 +26735,7 @@ void Player::SetEquipmentSet(EquipmentSetInfo::EquipmentSetData const& eqSet) eqSlot.State = (oldState == EQUIPMENT_SET_NEW ? EQUIPMENT_SET_NEW : EQUIPMENT_SET_CHANGED); } -void Player::_SaveEquipmentSets(SQLTransaction& trans) +void Player::_SaveEquipmentSets(CharacterDatabaseTransaction& trans) { for (EquipmentSetContainer::iterator itr = _equipmentSets.begin(); itr != _equipmentSets.end();) { @@ -26785,7 +26785,7 @@ void Player::_SaveEquipmentSets(SQLTransaction& trans) } } -void Player::_SaveBGData(SQLTransaction& trans) +void Player::_SaveBGData(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_BGDATA); stmt->setUInt32(0, GetGUID().GetCounter()); @@ -26875,7 +26875,7 @@ void Player::_LoadGlyphs(PreparedQueryResult result) while (result->NextRow()); } -void Player::_SaveGlyphs(SQLTransaction& trans) const +void Player::_SaveGlyphs(CharacterDatabaseTransaction& trans) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_GLYPHS); stmt->setUInt32(0, GetGUID().GetCounter()); @@ -26909,7 +26909,7 @@ void Player::_LoadTalents(PreparedQueryResult result) } } -void Player::_SaveTalents(SQLTransaction& trans) +void Player::_SaveTalents(CharacterDatabaseTransaction& trans) { CharacterDatabasePreparedStatement* stmt; @@ -26958,7 +26958,7 @@ void Player::UpdateSpecCount(uint8 count) if (GetActiveSpec() >= count) ActivateSpec(0); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt; // Copy spec data @@ -27006,7 +27006,7 @@ void Player::ActivateSpec(uint8 spec) if (IsNonMeleeSpellCast(false)) InterruptNonMeleeSpells(false); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); _SaveActions(trans); CharacterDatabase.CommitTransaction(trans); @@ -27449,7 +27449,7 @@ void Player::RefundItem(Item* item) uint32 moneyRefund = item->GetPaidMoney(); // item-> will be invalidated in DestroyItem // Save all relevant data to DB to prevent desynchronisation exploits - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // Delete any references to the refund data item->SetNotRefundable(this, true, &trans); @@ -27500,7 +27500,7 @@ void Player::SendItemRetrievalMail(uint32 itemEntry, uint32 count) { MailSender sender(MAIL_CREATURE, 34337 /* The Postmaster */); MailDraft draft("Recovered Item", "We recovered a lost item in the twisting nether and noted that it was yours.$B$BPlease find said object enclosed."); // This is the text used in Cataclysm, it probably wasn't changed. - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); if (Item* item = Item::CreateItem(itemEntry, count, nullptr)) { @@ -27682,7 +27682,7 @@ void Player::_LoadInstanceTimeRestrictions(PreparedQueryResult result) } while (result->NextRow()); } -void Player::_SaveInstanceTimeRestrictions(SQLTransaction& trans) +void Player::_SaveInstanceTimeRestrictions(CharacterDatabaseTransaction& trans) { if (_instanceResetTimes.empty()) return; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 36ad6f5d1c..32288d2348 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1497,12 +1497,12 @@ class TC_GAME_API Player : public Unit, public GridObject /*********************************************************/ void SaveToDB(bool create = false); - void SaveInventoryAndGoldToDB(SQLTransaction& trans); // fast save function for item/money cheating preventing - void SaveGoldToDB(SQLTransaction& trans) const; + void SaveInventoryAndGoldToDB(CharacterDatabaseTransaction& trans); // fast save function for item/money cheating preventing + void SaveGoldToDB(CharacterDatabaseTransaction& trans) const; static void SetUInt32ValueInArray(Tokenizer& data, uint16 index, uint32 value); - static void Customize(CharacterCustomizeInfo const* customizeInfo, SQLTransaction& trans); - static void SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGuid guid, SQLTransaction& trans); + static void Customize(CharacterCustomizeInfo const* customizeInfo, CharacterDatabaseTransaction& trans); + static void SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGuid guid, CharacterDatabaseTransaction& trans); static void DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRealmChars = true, bool deleteFinally = false); static void DeleteOldCharacters(); @@ -1882,7 +1882,7 @@ class TC_GAME_API Player : public Unit, public GridObject void SpawnCorpseBones(bool triggerSave = true); Corpse* CreateCorpse(); void KillPlayer(); - static void OfflineResurrect(ObjectGuid const& guid, SQLTransaction& trans); + static void OfflineResurrect(ObjectGuid const& guid, CharacterDatabaseTransaction& trans); bool HasCorpse() const { return _corpseLocation.GetMapId() != MAPID_INVALID; } WorldLocation GetCorpseLocation() const { return _corpseLocation; } uint32 GetResurrectionSpellId(); @@ -2492,27 +2492,27 @@ class TC_GAME_API Player : public Unit, public GridObject /*** SAVE SYSTEM ***/ /*********************************************************/ - void _SaveActions(SQLTransaction& trans); - void _SaveAuras(SQLTransaction& trans); - void _SaveInventory(SQLTransaction& trans); - void _SaveVoidStorage(SQLTransaction& trans); - void _SaveMail(SQLTransaction& trans); - void _SaveQuestStatus(SQLTransaction& trans); - void _SaveDailyQuestStatus(SQLTransaction& trans); - void _SaveWeeklyQuestStatus(SQLTransaction& trans); - void _SaveMonthlyQuestStatus(SQLTransaction& trans); - void _SaveSeasonalQuestStatus(SQLTransaction& trans); - void _SaveSkills(SQLTransaction& trans); - void _SaveSpells(SQLTransaction& trans); - void _SaveEquipmentSets(SQLTransaction& trans); - void _SaveBGData(SQLTransaction& trans); - void _SaveGlyphs(SQLTransaction& trans) const; - void _SaveTalents(SQLTransaction& trans); - void _SaveStats(SQLTransaction& trans) const; - void _SaveInstanceTimeRestrictions(SQLTransaction& trans); - void _SaveCurrency(SQLTransaction& trans); - void _SaveCUFProfiles(SQLTransaction& trans); - void _SaveLFGRewardStatus(SQLTransaction& trans); + void _SaveActions(CharacterDatabaseTransaction& trans); + void _SaveAuras(CharacterDatabaseTransaction& trans); + void _SaveInventory(CharacterDatabaseTransaction& trans); + void _SaveVoidStorage(CharacterDatabaseTransaction& trans); + void _SaveMail(CharacterDatabaseTransaction& trans); + void _SaveQuestStatus(CharacterDatabaseTransaction& trans); + void _SaveDailyQuestStatus(CharacterDatabaseTransaction& trans); + void _SaveWeeklyQuestStatus(CharacterDatabaseTransaction& trans); + void _SaveMonthlyQuestStatus(CharacterDatabaseTransaction& trans); + void _SaveSeasonalQuestStatus(CharacterDatabaseTransaction& trans); + void _SaveSkills(CharacterDatabaseTransaction& trans); + void _SaveSpells(CharacterDatabaseTransaction& trans); + void _SaveEquipmentSets(CharacterDatabaseTransaction& trans); + void _SaveBGData(CharacterDatabaseTransaction& trans); + void _SaveGlyphs(CharacterDatabaseTransaction& trans) const; + void _SaveTalents(CharacterDatabaseTransaction& trans); + void _SaveStats(CharacterDatabaseTransaction& trans) const; + void _SaveInstanceTimeRestrictions(CharacterDatabaseTransaction& trans); + void _SaveCurrency(CharacterDatabaseTransaction& trans); + void _SaveCUFProfiles(CharacterDatabaseTransaction& trans); + void _SaveLFGRewardStatus(CharacterDatabaseTransaction& trans); /*********************************************************/ /*** ENVIRONMENTAL SYSTEM ***/ @@ -2695,7 +2695,7 @@ class TC_GAME_API Player : public Unit, public GridObject InventoryResult CanStoreItem_InBag(uint8 bag, ItemPosCountVec& dest, ItemTemplate const* pProto, uint32& count, bool merge, bool non_specialized, Item* pSrcItem, uint8 skip_bag, uint8 skip_slot) const; InventoryResult CanStoreItem_InInventorySlots(uint8 slot_begin, uint8 slot_end, ItemPosCountVec& dest, ItemTemplate const* pProto, uint32& count, bool merge, Item* pSrcItem, uint8 skip_bag, uint8 skip_slot) const; Item* _StoreItem(uint16 pos, Item* pItem, uint32 count, bool clone, bool update); - Item* _LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, Field* fields); + Item* _LoadItem(CharacterDatabaseTransaction& trans, uint32 zoneId, uint32 timeDiff, Field* fields); CinematicMgr* _cinematicMgr; diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 351d520b4e..c5c4f5775c 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -202,7 +202,7 @@ void GameEventMgr::StopEvent(uint16 event_id, bool overwrite) for (itr = data.conditions.begin(); itr != data.conditions.end(); ++itr) itr->second.done = 0; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_GAME_EVENT_CONDITION_SAVE); stmt->setUInt8(0, uint8(event_id)); trans->Append(stmt); @@ -1622,7 +1622,7 @@ void GameEventMgr::HandleQuestComplete(uint32 quest_id) if (citr->second.done > citr->second.reqNum) citr->second.done = citr->second.reqNum; // save the change to db - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GAME_EVENT_CONDITION_SAVE); stmt->setUInt8(0, uint8(event_id)); @@ -1667,7 +1667,7 @@ bool GameEventMgr::CheckOneGameEventConditions(uint16 event_id) void GameEventMgr::SaveWorldEventStateToDB(uint16 event_id) { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GAME_EVENT_SAVE); stmt->setUInt8(0, uint8(event_id)); diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 5465f64172..9081da706e 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -710,7 +710,7 @@ void Group::ChangeLeader(ObjectGuid newLeaderGuid) if (!isBGGroup() && !isBFGroup()) { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // Remove the groups permanent instance bindings for (uint8 i = 0; i < MAX_DIFFICULTY; ++i) @@ -865,7 +865,7 @@ void Group::Disband(bool hideDestroy /* = false */) if (!isBGGroup() && !isBFGroup()) { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GROUP); stmt->setUInt32(0, m_dbStoreId); diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 9ee401ca27..8c9f03e9b3 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -152,7 +152,7 @@ inline void Guild::LogHolder::LoadEvent(LogEntry* entry) // Adds new event happened in game. // If maximum number of events is reached, oldest event is removed from collection. -inline void Guild::LogHolder::AddEvent(SQLTransaction& trans, LogEntry* entry) +inline void Guild::LogHolder::AddEvent(CharacterDatabaseTransaction& trans, LogEntry* entry) { // Check max records limit if (m_log.size() >= m_maxRecords) @@ -191,7 +191,7 @@ inline uint32 Guild::LogHolder::GetNextGUID() } // EventLogEntry -void Guild::EventLogEntry::SaveToDB(SQLTransaction& trans) const +void Guild::EventLogEntry::SaveToDB(CharacterDatabaseTransaction& trans) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_EVENTLOG); stmt->setUInt32(0, m_guildId); @@ -263,7 +263,7 @@ void Guild::EventLogEntry::WritePacket(WorldPacket& data, ByteBuffer& content) c } // BankEventLogEntry -void Guild::BankEventLogEntry::SaveToDB(SQLTransaction& trans) const +void Guild::BankEventLogEntry::SaveToDB(CharacterDatabaseTransaction& trans) const { uint8 index = 0; @@ -335,7 +335,7 @@ void Guild::BankEventLogEntry::WritePacket(WorldPacket& data, ByteBuffer& conten content << uint8(m_destTabId); } -void Guild::NewsLogEntry::SaveToDB(SQLTransaction& trans) const +void Guild::NewsLogEntry::SaveToDB(CharacterDatabaseTransaction& trans) const { uint8 index = 0; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_NEWS); @@ -395,7 +395,7 @@ void Guild::RankInfo::LoadFromDB(Field* fields) m_rights |= GR_RIGHT_ALL; } -void Guild::RankInfo::SaveToDB(SQLTransaction& trans) const +void Guild::RankInfo::SaveToDB(CharacterDatabaseTransaction& trans) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_RANK); stmt->setUInt32(0, m_guildId); @@ -406,7 +406,7 @@ void Guild::RankInfo::SaveToDB(SQLTransaction& trans) const CharacterDatabase.ExecuteOrAppend(trans, stmt); } -void Guild::RankInfo::CreateMissingTabsIfNeeded(uint8 tabs, SQLTransaction& trans, bool logOnCreate /* = false */) +void Guild::RankInfo::CreateMissingTabsIfNeeded(uint8 tabs, CharacterDatabaseTransaction& trans, bool logOnCreate /* = false */) { for (uint8 i = 0; i < tabs; ++i) { @@ -551,7 +551,7 @@ bool Guild::BankTab::LoadItemFromDB(Field* fields) } // Deletes contents of the tab from the world (and from DB if necessary) -void Guild::BankTab::Delete(SQLTransaction& trans, bool removeItemsFromDB) +void Guild::BankTab::Delete(CharacterDatabaseTransaction& trans, bool removeItemsFromDB) { for (uint8 slotId = 0; slotId < GUILD_BANK_MAX_SLOTS; ++slotId) { @@ -605,7 +605,7 @@ void Guild::BankTab::SetText(std::string const& text) // Sets/removes contents of specified slot. // If pItem == nullptr contents are removed. -bool Guild::BankTab::SetItem(SQLTransaction& trans, uint8 slotId, Item* item) +bool Guild::BankTab::SetItem(CharacterDatabaseTransaction& trans, uint8 slotId, Item* item) { if (slotId >= GUILD_BANK_MAX_SLOTS) return false; @@ -733,7 +733,7 @@ void Guild::Member::SetOfficerNote(std::string const& officerNote) CharacterDatabase.Execute(stmt); } -void Guild::Member::ChangeRank(SQLTransaction& trans, uint8 newRank) +void Guild::Member::ChangeRank(CharacterDatabaseTransaction& trans, uint8 newRank) { m_rankId = newRank; @@ -759,7 +759,7 @@ void Guild::Member::AddActivity(uint64 activity) CharacterDatabase.Execute(stmt); } -void Guild::Member::SaveToDB(SQLTransaction& trans) const +void Guild::Member::SaveToDB(CharacterDatabaseTransaction& trans) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_MEMBER); stmt->setUInt32(0, m_guildId); @@ -913,7 +913,7 @@ void Guild::Member::UpdateLogoutTime() // Decreases amount of money/slots left for today. // If (tabId == GUILD_BANK_MAX_TABS) decrease money amount. // Otherwise decrease remaining items amount for specified tab. -void Guild::Member::UpdateBankWithdrawValue(SQLTransaction& trans, uint8 tabId, uint32 amount) +void Guild::Member::UpdateBankWithdrawValue(CharacterDatabaseTransaction& trans, uint8 tabId, uint32 amount) { m_bankWithdraw[tabId] += amount; @@ -957,7 +957,7 @@ void Guild::Member::ResetWeekActivityAndReputation() m_weekActivity = 0; m_weekReputation = 0; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_RESET_GUILD_MEMBER_WEEK_ACTIVITY); stmt->setUInt32(0, m_guid.GetCounter()); @@ -1124,7 +1124,7 @@ bool Guild::PlayerMoveItemData::InitItem() return (m_pItem != nullptr); } -void Guild::PlayerMoveItemData::RemoveItem(SQLTransaction& trans, MoveItemData* /*pOther*/, uint32 splitedAmount) +void Guild::PlayerMoveItemData::RemoveItem(CharacterDatabaseTransaction& trans, MoveItemData* /*pOther*/, uint32 splitedAmount) { if (splitedAmount) { @@ -1140,7 +1140,7 @@ void Guild::PlayerMoveItemData::RemoveItem(SQLTransaction& trans, MoveItemData* } } -Item* Guild::PlayerMoveItemData::StoreItem(SQLTransaction& trans, Item* pItem) +Item* Guild::PlayerMoveItemData::StoreItem(CharacterDatabaseTransaction& trans, Item* pItem) { ASSERT(pItem); m_pPlayer->MoveItemToInventory(m_vec, pItem, true); @@ -1148,7 +1148,7 @@ Item* Guild::PlayerMoveItemData::StoreItem(SQLTransaction& trans, Item* pItem) return pItem; } -void Guild::PlayerMoveItemData::LogBankEvent(SQLTransaction& trans, MoveItemData* pFrom, uint32 count) const +void Guild::PlayerMoveItemData::LogBankEvent(CharacterDatabaseTransaction& trans, MoveItemData* pFrom, uint32 count) const { ASSERT(pFrom); // Bank -> Char @@ -1191,7 +1191,7 @@ bool Guild::BankMoveItemData::HasWithdrawRights(MoveItemData* pOther) const return slots != 0; } -void Guild::BankMoveItemData::RemoveItem(SQLTransaction& trans, MoveItemData* pOther, uint32 splitedAmount) +void Guild::BankMoveItemData::RemoveItem(CharacterDatabaseTransaction& trans, MoveItemData* pOther, uint32 splitedAmount) { ASSERT(m_pItem); if (splitedAmount) @@ -1210,7 +1210,7 @@ void Guild::BankMoveItemData::RemoveItem(SQLTransaction& trans, MoveItemData* pO m_pGuild->_UpdateMemberWithdrawSlots(trans, m_pPlayer->GetGUID(), m_container); } -Item* Guild::BankMoveItemData::StoreItem(SQLTransaction& trans, Item* pItem) +Item* Guild::BankMoveItemData::StoreItem(CharacterDatabaseTransaction& trans, Item* pItem) { if (!pItem) return nullptr; @@ -1232,7 +1232,7 @@ Item* Guild::BankMoveItemData::StoreItem(SQLTransaction& trans, Item* pItem) return pLastItem; } -void Guild::BankMoveItemData::LogBankEvent(SQLTransaction& trans, MoveItemData* pFrom, uint32 count) const +void Guild::BankMoveItemData::LogBankEvent(CharacterDatabaseTransaction& trans, MoveItemData* pFrom, uint32 count) const { ASSERT(pFrom->GetItem()); if (pFrom->IsBank()) @@ -1258,7 +1258,7 @@ void Guild::BankMoveItemData::LogAction(MoveItemData* pFrom) const } } -Item* Guild::BankMoveItemData::_StoreItem(SQLTransaction& trans, BankTab* pTab, Item* pItem, ItemPosCount& pos, bool clone) const +Item* Guild::BankMoveItemData::_StoreItem(CharacterDatabaseTransaction& trans, BankTab* pTab, Item* pItem, ItemPosCount& pos, bool clone) const { uint8 slotId = uint8(pos.pos); uint32 count = pos.count; @@ -1401,7 +1401,7 @@ Guild::Guild(): Guild::~Guild() { - SQLTransaction temp(nullptr); + CharacterDatabaseTransaction temp(nullptr); _DeleteBankItems(temp); // Cleanup @@ -1453,7 +1453,7 @@ bool Guild::Create(Player* pLeader, std::string const& name) TC_LOG_DEBUG("guild", "GUILD: creating guild [%s] for leader %s (%u)", name.c_str(), pLeader->GetName().c_str(), m_leaderGuid.GetCounter()); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_MEMBERS); stmt->setUInt32(0, m_id); @@ -1497,7 +1497,7 @@ void Guild::Disband() _BroadcastEvent(GE_DISBANDED, ObjectGuid::Empty); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // Remove all members while (!m_members.empty()) { @@ -1545,7 +1545,7 @@ void Guild::Disband() void Guild::SaveToDB() { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_EXPERIENCE); stmt->setUInt32(0, GetLevel()); @@ -1833,7 +1833,7 @@ void Guild::HandleSetNewGuildMaster(WorldSession* session, std::string const& na if (Member* newGuildMaster = GetMember(name)) { _SetLeaderGUID(newGuildMaster); - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); oldGuildMaster->ChangeRank(trans, GR_INITIATE); _BroadcastEvent(GE_LEADER_CHANGED, ObjectGuid::Empty, player->GetName().c_str(), name.c_str()); } @@ -2046,7 +2046,7 @@ void Guild::HandleAcceptMember(WorldSession* session) player->GetTeam() != sCharacterCache->GetCharacterTeamByGuid(GetLeaderGUID())) return; - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); AddMember(trans, player->GetGUID()); } @@ -2072,7 +2072,7 @@ void Guild::HandleLeaveMember(WorldSession* session) } else { - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); DeleteMember(trans, player->GetGUID(), false, false); _LogEvent(GUILD_EVENT_LOG_LEAVE_GUILD, player->GetGUID().GetCounter()); @@ -2111,7 +2111,7 @@ void Guild::HandleRemoveMember(WorldSession* session, ObjectGuid guid) { // After call to DeleteMember pointer to member becomes invalid - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); DeleteMember(trans, guid, false, true); _LogEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, player->GetGUID().GetCounter(), guid.GetCounter()); _BroadcastEvent(GE_REMOVED, ObjectGuid::Empty, name.c_str(), player->GetName().c_str()); @@ -2169,7 +2169,7 @@ void Guild::HandleUpdateMemberRank(WorldSession* session, ObjectGuid guid, bool } uint32 newRankId = member->GetRankId() + (demote ? 1 : -1); - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); member->ChangeRank(trans, newRankId); _LogEvent(demote ? GUILD_EVENT_LOG_DEMOTE_PLAYER : GUILD_EVENT_LOG_PROMOTE_PLAYER, player->GetGUID().GetCounter(), member->GetGUID().GetCounter(), newRankId); _BroadcastEvent(demote ? GE_DEMOTION : GE_PROMOTION, ObjectGuid::Empty, player->GetName().c_str(), name.c_str(), _GetRankName(newRankId).c_str()); @@ -2215,7 +2215,7 @@ void Guild::HandleAddNewRank(WorldSession* session, std::string const& name) // Only leader can add new rank if (_IsLeader(session->GetPlayer())) { - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); if (_CreateRank(trans, name, GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK)) _BroadcastEvent(GE_RANK_UPDATED, ObjectGuid::Empty, std::to_string(size).c_str(), name.c_str()); } @@ -2256,7 +2256,7 @@ void Guild::HandleMemberDepositMoney(WorldSession* session, uint64 amount, bool return; } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); _ModifyBankMoney(trans, amount, true); if (!cashFlow) { @@ -2298,7 +2298,7 @@ bool Guild::HandleMemberWithdrawMoney(WorldSession* session, uint64 amount, bool // Call script after validation and before money transfer. sScriptMgr->OnGuildMemberWitdrawMoney(this, player, amount, repair); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // Add money to player (if required) if (!repair) { @@ -2650,7 +2650,7 @@ bool Guild::LoadMemberFromDB(Field* fields) Member* member = new Member(m_id, playerGuid, fields[2].GetUInt8()); if (!member->LoadFromDB(fields)) { - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); _DeleteMemberFromDB(trans, lowguid); delete member; return false; @@ -2773,7 +2773,7 @@ bool Guild::Validate() bool broken_ranks = false; uint8 ranks = _GetRanksSize(); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); if (ranks < GUILD_RANKS_MIN_COUNT || ranks > GUILD_RANKS_MAX_COUNT) { TC_LOG_ERROR("guild", "Guild %u has invalid number of ranks, creating new...", m_id); @@ -2811,7 +2811,7 @@ bool Guild::Validate() Member* pLeader = GetMember(m_leaderGuid); if (!pLeader) { - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); DeleteMember(trans, m_leaderGuid); // If no more members left, disband guild if (m_members.empty()) @@ -2929,7 +2929,7 @@ bool Guild::_HasRankRight(Player const* player, uint32 right) const return false; } -void Guild::_DeleteMemberFromDB(SQLTransaction& trans, ObjectGuid::LowType lowguid) const +void Guild::_DeleteMemberFromDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType lowguid) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_MEMBER); stmt->setUInt32(0, lowguid); @@ -2937,7 +2937,7 @@ void Guild::_DeleteMemberFromDB(SQLTransaction& trans, ObjectGuid::LowType lowgu } // Members handling -bool Guild::AddMember(SQLTransaction& trans, ObjectGuid guid, uint8 rankId) +bool Guild::AddMember(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 rankId) { Player* player = ObjectAccessor::FindConnectedPlayer(guid); // Player cannot be in guild @@ -3058,7 +3058,7 @@ bool Guild::AddMember(SQLTransaction& trans, ObjectGuid guid, uint8 rankId) return true; } -void Guild::DeleteMember(SQLTransaction& trans, ObjectGuid guid, bool isDisbanding, bool isKicked, bool canDeleteGuild) +void Guild::DeleteMember(CharacterDatabaseTransaction& trans, ObjectGuid guid, bool isDisbanding, bool isKicked, bool canDeleteGuild) { ObjectGuid::LowType lowguid = guid.GetCounter(); Player* player = ObjectAccessor::FindConnectedPlayer(guid); @@ -3140,7 +3140,7 @@ void Guild::DeleteMember(SQLTransaction& trans, ObjectGuid guid, bool isDisbandi _UpdateAccountsNumber(); } -bool Guild::ChangeMemberRank(SQLTransaction& trans, ObjectGuid guid, uint8 newRank) +bool Guild::ChangeMemberRank(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 newRank) { if (newRank <= _GetLowestRankId()) // Validate rank (allow only existing ranks) { @@ -3212,7 +3212,7 @@ void Guild::_CreateNewBankTab() uint8 tabId = _GetPurchasedTabsSize(); // Next free id m_bankTabs.push_back(new BankTab(m_id, tabId)); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_TAB); stmt->setUInt32(0, m_id); @@ -3231,7 +3231,7 @@ void Guild::_CreateNewBankTab() CharacterDatabase.CommitTransaction(trans); } -void Guild::_CreateDefaultGuildRanks(SQLTransaction& trans, LocaleConstant loc) +void Guild::_CreateDefaultGuildRanks(CharacterDatabaseTransaction& trans, LocaleConstant loc) { ASSERT(trans); @@ -3250,7 +3250,7 @@ void Guild::_CreateDefaultGuildRanks(SQLTransaction& trans, LocaleConstant loc) _CreateRank(trans, sObjectMgr->GetTrinityString(LANG_GUILD_INITIATE, loc), GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK); } -bool Guild::_CreateRank(SQLTransaction& trans, std::string const& name, uint32 rights) +bool Guild::_CreateRank(CharacterDatabaseTransaction& trans, std::string const& name, uint32 rights) { uint8 newRankId = _GetRanksSize(); if (newRankId >= GUILD_RANKS_MAX_COUNT) @@ -3297,7 +3297,7 @@ bool Guild::_IsLeader(Player* player) const return false; } -void Guild::_DeleteBankItems(SQLTransaction& trans, bool removeItemsFromDB) +void Guild::_DeleteBankItems(CharacterDatabaseTransaction& trans, bool removeItemsFromDB) { for (uint8 tabId = 0; tabId < _GetPurchasedTabsSize(); ++tabId) { @@ -3308,7 +3308,7 @@ void Guild::_DeleteBankItems(SQLTransaction& trans, bool removeItemsFromDB) m_bankTabs.clear(); } -bool Guild::_ModifyBankMoney(SQLTransaction& trans, uint64 amount, bool add) +bool Guild::_ModifyBankMoney(CharacterDatabaseTransaction& trans, uint64 amount, bool add) { if (add) m_bankMoney += amount; @@ -3332,7 +3332,7 @@ void Guild::_SetLeaderGUID(Member* pLeader) if (!pLeader) return; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); m_leaderGuid = pLeader->GetGUID(); pLeader->ChangeRank(trans, GR_GUILDMASTER); @@ -3430,7 +3430,7 @@ inline int32 Guild::_GetMemberRemainingMoney(Member const* member) const return 0; } -inline void Guild::_UpdateMemberWithdrawSlots(SQLTransaction& trans, ObjectGuid guid, uint8 tabId) +inline void Guild::_UpdateMemberWithdrawSlots(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 tabId) { if (Member* member = GetMember(guid)) { @@ -3456,7 +3456,7 @@ inline bool Guild::_MemberHasTabRights(ObjectGuid guid, uint8 tabId, uint32 righ // Add new event log record inline void Guild::_LogEvent(GuildEventLogTypes eventType, ObjectGuid::LowType playerGuid1, ObjectGuid::LowType playerGuid2, uint8 newRank) { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); m_eventLog->AddEvent(trans, new EventLogEntry(m_id, m_eventLog->GetNextGUID(), eventType, playerGuid1, playerGuid2, newRank)); CharacterDatabase.CommitTransaction(trans); @@ -3464,7 +3464,7 @@ inline void Guild::_LogEvent(GuildEventLogTypes eventType, ObjectGuid::LowType p } // Add new bank event log record -void Guild::_LogBankEvent(SQLTransaction& trans, GuildBankEventLogTypes eventType, uint8 tabId, ObjectGuid::LowType lowguid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId) +void Guild::_LogBankEvent(CharacterDatabaseTransaction& trans, GuildBankEventLogTypes eventType, uint8 tabId, ObjectGuid::LowType lowguid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId) { if (tabId > GUILD_BANK_MAX_TABS) return; @@ -3492,7 +3492,7 @@ inline Item* Guild::_GetItem(uint8 tabId, uint8 slotId) const return nullptr; } -inline void Guild::_RemoveItem(SQLTransaction& trans, uint8 tabId, uint8 slotId) +inline void Guild::_RemoveItem(CharacterDatabaseTransaction& trans, uint8 tabId, uint8 slotId) { if (BankTab* pTab = GetBankTab(tabId)) pTab->SetItem(trans, slotId, nullptr); @@ -3579,7 +3579,7 @@ bool Guild::_DoItemsMove(MoveItemData* pSrc, MoveItemData* pDest, bool sendError if (swap) pSrc->LogAction(pDest); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // 3. Log bank events pDest->LogBankEvent(trans, pSrc, pSrcItem->GetCount()); if (swap) @@ -3842,7 +3842,7 @@ void Guild::SendGuildRanksUpdate(ObjectGuid setterGuid, ObjectGuid targetGuid, u data.WriteByteSeq(targetGuid[4]); BroadcastPacket(&data); - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); member->ChangeRank(trans, rank); TC_LOG_DEBUG("network", "SMSG_GUILD_RANKS_UPDATE [Broadcast] Target: %s, Issuer: %s, RankId: %u", @@ -3875,7 +3875,7 @@ void Guild::CompleteChallenge(uint8 challengeType, Player* source) GiveXP(xp, source, true); SaveToDB(); // Save xp - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); _ModifyBankMoney(trans, uint64(gold * 10000), true); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_CHALLENGE); @@ -4027,7 +4027,7 @@ void Guild::AddGuildNews(uint8 type, ObjectGuid guid, uint32 flags, uint32 value { NewsLogEntry* news = new NewsLogEntry(m_id, m_newsLog->GetNextGUID(), GuildNews(type), guid, flags, value); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); m_newsLog->AddEvent(trans, news); CharacterDatabase.CommitTransaction(trans); diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index 52b2c1afbd..2ef094671c 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -375,7 +375,7 @@ private: bool LoadFromDB(Field* fields); void LoadProfessionDataFromDB(ObjectGuid guid); - void SaveToDB(SQLTransaction& trans) const; + void SaveToDB(CharacterDatabaseTransaction& trans) const; ObjectGuid GetGUID() const { return m_guid; } std::string const& GetName() const { return m_name; } @@ -402,14 +402,14 @@ private: void SetTrackedCriteriaIds(std::set criteriaIds) { m_trackedCriteriaIds.swap(criteriaIds); } bool IsTrackingCriteriaId(uint32 criteriaId) const { return m_trackedCriteriaIds.find(criteriaId) != m_trackedCriteriaIds.end(); } - void ChangeRank(SQLTransaction& trans, uint8 newRank); + void ChangeRank(CharacterDatabaseTransaction& trans, uint8 newRank); void UpdateLogoutTime(); inline bool IsRank(uint8 rankId) const { return m_rankId == rankId; } inline bool IsRankNotLower(uint8 rankId) const { return m_rankId <= rankId; } inline bool IsSamePlayer(ObjectGuid guid) const { return m_guid == guid; } - void UpdateBankWithdrawValue(SQLTransaction& trans, uint8 tabId, uint32 amount); + void UpdateBankWithdrawValue(CharacterDatabaseTransaction& trans, uint8 tabId, uint32 amount); int32 GetBankWithdrawValue(uint8 tabId) const; void ResetValues(bool weekly = false); void ResetWeekActivityAndReputation(); @@ -456,7 +456,7 @@ private: uint32 GetGUID() const { return m_guid; } uint64 GetTimestamp() const { return m_timestamp; } - virtual void SaveToDB(SQLTransaction& trans) const = 0; + virtual void SaveToDB(CharacterDatabaseTransaction& trans) const = 0; virtual void WritePacket(WorldPacket& data, ByteBuffer& content) const = 0; protected: @@ -477,7 +477,7 @@ private: ~EventLogEntry() { } - void SaveToDB(SQLTransaction& trans) const override; + void SaveToDB(CharacterDatabaseTransaction& trans) const override; void WritePacket(WorldPacket& data, ByteBuffer& content) const override; private: @@ -515,7 +515,7 @@ private: ~BankEventLogEntry() { } - void SaveToDB(SQLTransaction& trans) const override; + void SaveToDB(CharacterDatabaseTransaction& trans) const override; void WritePacket(WorldPacket& data, ByteBuffer& content) const override; private: @@ -551,7 +551,7 @@ private: m_flags &= ~1; } - void SaveToDB(SQLTransaction& trans) const; + void SaveToDB(CharacterDatabaseTransaction& trans) const; void WritePacket(WorldPacket& data, ByteBuffer& content) const; private: @@ -576,7 +576,7 @@ private: // Adds event from DB to collection void LoadEvent(LogEntry* entry); // Adds new event to collection and saves it to DB - void AddEvent(SQLTransaction& trans, LogEntry* entry); + void AddEvent(CharacterDatabaseTransaction& trans, LogEntry* entry); // Writes information about all events to packet void WritePacket(WorldPacket& data) const; uint32 GetNextGUID(); @@ -599,7 +599,7 @@ private: m_bankMoneyPerDay(rankId != GR_GUILDMASTER ? money : GUILD_WITHDRAW_MONEY_UNLIMITED) { } void LoadFromDB(Field* fields); - void SaveToDB(SQLTransaction& trans) const; + void SaveToDB(CharacterDatabaseTransaction& trans) const; uint8 GetId() const { return m_rankId; } @@ -624,7 +624,7 @@ private: } void SetBankTabSlotsAndRights(GuildBankRightsAndSlots rightsAndSlots, bool saveToDB); - void CreateMissingTabsIfNeeded(uint8 ranks, SQLTransaction& trans, bool logOnCreate = false); + void CreateMissingTabsIfNeeded(uint8 ranks, CharacterDatabaseTransaction& trans, bool logOnCreate = false); private: ObjectGuid::LowType m_guildId; @@ -642,7 +642,7 @@ private: void LoadFromDB(Field* fields); bool LoadItemFromDB(Field* fields); - void Delete(SQLTransaction& trans, bool removeItemsFromDB = false); + void Delete(CharacterDatabaseTransaction& trans, bool removeItemsFromDB = false); void WriteInfoPacket(WorldPacket& data) const; @@ -655,7 +655,7 @@ private: std::string const& GetText() const { return m_text; } inline Item* GetItem(uint8 slotId) const { return slotId < GUILD_BANK_MAX_SLOTS ? m_items[slotId] : nullptr; } - bool SetItem(SQLTransaction& trans, uint8 slotId, Item* item); + bool SetItem(CharacterDatabaseTransaction& trans, uint8 slotId, Item* item); private: ObjectGuid::LowType m_guildId; @@ -688,11 +688,11 @@ private: // Clones stored item bool CloneItem(uint32 count); // Remove item from container (if splited update items fields) - virtual void RemoveItem(SQLTransaction& trans, MoveItemData* pOther, uint32 splitedAmount = 0) = 0; + virtual void RemoveItem(CharacterDatabaseTransaction& trans, MoveItemData* pOther, uint32 splitedAmount = 0) = 0; // Saves item to container - virtual Item* StoreItem(SQLTransaction& trans, Item* pItem) = 0; + virtual Item* StoreItem(CharacterDatabaseTransaction& trans, Item* pItem) = 0; // Log bank event - virtual void LogBankEvent(SQLTransaction& trans, MoveItemData* pFrom, uint32 count) const = 0; + virtual void LogBankEvent(CharacterDatabaseTransaction& trans, MoveItemData* pFrom, uint32 count) const = 0; // Log GM action virtual void LogAction(MoveItemData* pFrom) const; // Copy slots id from position vector @@ -722,9 +722,9 @@ private: bool IsBank() const override { return false; } bool InitItem() override; - void RemoveItem(SQLTransaction& trans, MoveItemData* pOther, uint32 splitedAmount = 0) override; - Item* StoreItem(SQLTransaction& trans, Item* pItem) override; - void LogBankEvent(SQLTransaction& trans, MoveItemData* pFrom, uint32 count) const override; + void RemoveItem(CharacterDatabaseTransaction& trans, MoveItemData* pOther, uint32 splitedAmount = 0) override; + Item* StoreItem(CharacterDatabaseTransaction& trans, Item* pItem) override; + void LogBankEvent(CharacterDatabaseTransaction& trans, MoveItemData* pFrom, uint32 count) const override; protected: InventoryResult CanStore(Item* pItem, bool swap) override; }; @@ -739,16 +739,16 @@ private: bool InitItem() override; bool HasStoreRights(MoveItemData* pOther) const override; bool HasWithdrawRights(MoveItemData* pOther) const override; - void RemoveItem(SQLTransaction& trans, MoveItemData* pOther, uint32 splitedAmount) override; - Item* StoreItem(SQLTransaction& trans, Item* pItem) override; - void LogBankEvent(SQLTransaction& trans, MoveItemData* pFrom, uint32 count) const override; + void RemoveItem(CharacterDatabaseTransaction& trans, MoveItemData* pOther, uint32 splitedAmount) override; + Item* StoreItem(CharacterDatabaseTransaction& trans, Item* pItem) override; + void LogBankEvent(CharacterDatabaseTransaction& trans, MoveItemData* pFrom, uint32 count) const override; void LogAction(MoveItemData* pFrom) const override; protected: InventoryResult CanStore(Item* pItem, bool swap) override; private: - Item* _StoreItem(SQLTransaction& trans, BankTab* pTab, Item* pItem, ItemPosCount& pos, bool clone) const; + Item* _StoreItem(CharacterDatabaseTransaction& trans, BankTab* pTab, Item* pItem, ItemPosCount& pos, bool clone) const; bool _ReserveSpace(uint8 slotId, Item* pItem, Item* pItemDest, uint32& count); void CanStoreItemInTab(Item* pItem, uint8 skipSlotId, bool merge, uint32& count); }; @@ -858,9 +858,9 @@ public: // Members // Adds member to guild. If rankId == GUILD_RANK_NONE, lowest rank is assigned. - bool AddMember(SQLTransaction& trans, ObjectGuid guid, uint8 rankId = GUILD_RANK_NONE); - void DeleteMember(SQLTransaction& trans, ObjectGuid guid, bool isDisbanding = false, bool isKicked = false, bool canDeleteGuild = false); - bool ChangeMemberRank(SQLTransaction& trans, ObjectGuid guid, uint8 newRank); + bool AddMember(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 rankId = GUILD_RANK_NONE); + void DeleteMember(CharacterDatabaseTransaction& trans, ObjectGuid guid, bool isDisbanding = false, bool isKicked = false, bool canDeleteGuild = false); + bool ChangeMemberRank(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 newRank); bool IsMember(ObjectGuid guid) const; uint32 GetMembersCount() { return m_members.size(); } @@ -968,21 +968,21 @@ private: return nullptr; } - void _DeleteMemberFromDB(SQLTransaction& trans, ObjectGuid::LowType lowguid) const; + void _DeleteMemberFromDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType lowguid) const; // Creates log holders (either when loading or when creating guild) void _CreateLogHolders(); // Tries to create new bank tab void _CreateNewBankTab(); // Creates default guild ranks with names in given locale - void _CreateDefaultGuildRanks(SQLTransaction& trans, LocaleConstant loc); + void _CreateDefaultGuildRanks(CharacterDatabaseTransaction& trans, LocaleConstant loc); // Creates new rank - bool _CreateRank(SQLTransaction& trans, std::string const& name, uint32 rights); + bool _CreateRank(CharacterDatabaseTransaction& trans, std::string const& name, uint32 rights); // Update account number when member added/removed from guild void _UpdateAccountsNumber(); bool _IsLeader(Player* player) const; - void _DeleteBankItems(SQLTransaction& trans, bool removeItemsFromDB = false); - bool _ModifyBankMoney(SQLTransaction& trans, uint64 amount, bool add); + void _DeleteBankItems(CharacterDatabaseTransaction& trans, bool removeItemsFromDB = false); + bool _ModifyBankMoney(CharacterDatabaseTransaction& trans, uint64 amount, bool add); void _SetLeaderGUID(Member* pLeader); void _SetRankBankMoneyPerDay(uint8 rankId, uint32 moneyPerDay); @@ -995,14 +995,14 @@ private: int32 _GetMemberRemainingSlots(Member const* member, uint8 tabId) const; int32 _GetMemberRemainingMoney(Member const* member) const; - void _UpdateMemberWithdrawSlots(SQLTransaction& trans, ObjectGuid guid, uint8 tabId); + void _UpdateMemberWithdrawSlots(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 tabId); bool _MemberHasTabRights(ObjectGuid guid, uint8 tabId, uint32 rights) const; void _LogEvent(GuildEventLogTypes eventType, ObjectGuid::LowType playerGuid1, ObjectGuid::LowType playerGuid2 = 0, uint8 newRank = 0); - void _LogBankEvent(SQLTransaction& trans, GuildBankEventLogTypes eventType, uint8 tabId, ObjectGuid::LowType playerGuid, uint32 itemOrMoney, uint16 itemStackCount = 0, uint8 destTabId = 0); + void _LogBankEvent(CharacterDatabaseTransaction& trans, GuildBankEventLogTypes eventType, uint8 tabId, ObjectGuid::LowType playerGuid, uint32 itemOrMoney, uint16 itemStackCount = 0, uint8 destTabId = 0); Item* _GetItem(uint8 tabId, uint8 slotId) const; - void _RemoveItem(SQLTransaction& trans, uint8 tabId, uint8 slotId); + void _RemoveItem(CharacterDatabaseTransaction& trans, uint8 tabId, uint8 slotId); void _MoveItems(MoveItemData* pSrc, MoveItemData* pDest, uint32 splitedAmount); bool _DoItemsMove(MoveItemData* pSrc, MoveItemData* pDest, bool sendError, uint32 splitedAmount = 0); diff --git a/src/server/game/Guilds/GuildFinderMgr.cpp b/src/server/game/Guilds/GuildFinderMgr.cpp index 3efaf40adc..5f8e28c6e4 100644 --- a/src/server/game/Guilds/GuildFinderMgr.cpp +++ b/src/server/game/Guilds/GuildFinderMgr.cpp @@ -147,7 +147,7 @@ void GuildFinderMgr::AddMembershipRequest(uint32 guildGuid, MembershipRequest co { _membershipRequests[guildGuid].push_back(request); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_GUILD_FINDER_APPLICANT); stmt->setUInt32(0, request.GetGuildId()); stmt->setUInt32(1, request.GetPlayerGUID()); @@ -180,7 +180,7 @@ void GuildFinderMgr::RemoveAllMembershipRequestsFromPlayer(uint32 playerId) if (itr2 == itr->second.end()) continue; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_FINDER_APPLICANT); stmt->setUInt32(0, itr2->GetGuildId()); stmt->setUInt32(1, itr2->GetPlayerGUID()); @@ -205,7 +205,7 @@ void GuildFinderMgr::RemoveMembershipRequest(uint32 playerId, uint32 guildId) if (itr == _membershipRequests[guildId].end()) return; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_FINDER_APPLICANT); stmt->setUInt32(0, itr->GetGuildId()); @@ -299,7 +299,7 @@ void GuildFinderMgr::SetGuildSettings(uint32 guildGuid, LFGuildSettings const& s { _guildSettings[guildGuid] = settings; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_GUILD_FINDER_GUILD_SETTINGS); stmt->setUInt32(0, settings.GetGUID()); @@ -319,7 +319,7 @@ void GuildFinderMgr::DeleteGuild(uint32 guildId) std::vector::iterator itr = _membershipRequests[guildId].begin(); while (itr != _membershipRequests[guildId].end()) { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); uint32 applicant = itr->GetPlayerGUID(); diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index bf5dfcd824..b9e6a92a7a 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -351,7 +351,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) auctionHouse->AddAuction(AH); _player->MoveItemFromInventory(item->GetBagSlot(), item->GetSlot(), true); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); item->DeleteFromInventoryDB(trans); item->SaveToDB(trans); @@ -415,7 +415,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) { _player->MoveItemFromInventory(item2->GetBagSlot(), item2->GetSlot(), true); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); item2->DeleteFromInventoryDB(trans); item2->DeleteFromDB(trans); CharacterDatabase.CommitTransaction(trans); @@ -428,13 +428,13 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) _player->ItemRemovedQuestCheck(item2->GetEntry(), count[j]); item2->SendUpdateToPlayer(_player); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); item2->SaveToDB(trans); CharacterDatabase.CommitTransaction(trans); } } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); newItem->SaveToDB(trans); AH->SaveToDB(trans); _player->SaveInventoryAndGoldToDB(trans); @@ -514,7 +514,7 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket& recvData) return; } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); if (price < auction->buyout || auction->buyout == 0) { @@ -611,7 +611,7 @@ void WorldSession::HandleAuctionRemoveItem(WorldPacket& recvData) AuctionEntry* auction = auctionHouse->GetAuction(auctionId); Player* player = GetPlayer(); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); if (auction && auction->owner == player->GetGUID().GetCounter()) { Item* pItem = sAuctionMgr->GetAItem(auction->itemGUIDLow); diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp index f5b355d4e3..7c67be3b8b 100644 --- a/src/server/game/Handlers/CalendarHandler.cpp +++ b/src/server/game/Handlers/CalendarHandler.cpp @@ -293,7 +293,7 @@ void WorldSession::HandleCalendarAddEvent(WorldPacket& recvData) throw; } - SQLTransaction trans; + CharacterDatabaseTransaction trans; if (inviteCount > 1) trans = CharacterDatabase.BeginTransaction(); @@ -405,7 +405,7 @@ void WorldSession::HandleCalendarCopyEvent(WorldPacket& recvData) sCalendarMgr->AddEvent(newEvent, CALENDAR_SENDTYPE_COPY); CalendarInviteStore invites = sCalendarMgr->GetEventInvites(eventId); - SQLTransaction trans; + CharacterDatabaseTransaction trans; if (invites.size() > 1) trans = CharacterDatabase.BeginTransaction(); diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index a6a71a6f2b..98042b3998 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -621,7 +621,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) newChar.SaveToDB(true); createInfo->CharCount += 1; - SQLTransaction trans = LoginDatabase.BeginTransaction(); + LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction(); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_REALM_CHARACTERS_BY_REALM); stmt->setUInt32(0, GetAccountId()); @@ -1308,7 +1308,7 @@ void WorldSession::HandleCharRenameCallback(std::shared_ptr atLoginFlags &= ~AT_LOGIN_RENAME; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // Update name and at_login flag in the db CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_NAME_AT_LOGIN); @@ -1390,7 +1390,7 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recvData) for (int i = 0; i < MAX_DECLINED_NAME_CASES; ++i) CharacterDatabase.EscapeString(declinedname.name[i]); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_DECLINED_NAME); stmt->setUInt32(0, guid.GetCounter()); @@ -1599,7 +1599,7 @@ void WorldSession::HandleCharCustomizeCallback(std::shared_ptrGuid.GetCounter(); @@ -1892,7 +1892,7 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptrGuid, trans); @@ -2409,7 +2409,7 @@ void WorldSession::HandleReorderCharacters(WorldPacket& recvData) guids[i][2] = recvData.ReadBit(); } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); for (uint8 i = 0; i < charactersCount; ++i) { recvData.ReadByteSeq(guids[i][6]); diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index f4dd2873fb..11001af2b1 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -1047,7 +1047,7 @@ void WorldSession::HandleWrapItemOpcode(WorldPacket& recvData) return; } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_GIFT); stmt->setUInt32(0, item->GetOwnerGUID().GetCounter()); diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index a5feffd832..0cb202c509 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -335,7 +335,7 @@ void WorldSession::HandleSendMail(WorldPacket& recvData) MailDraft draft(subject, body); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); if (items_count > 0 || money > 0) { @@ -468,7 +468,7 @@ void WorldSession::HandleMailReturnToSender(WorldPacket& recvData) return; } //we can return mail now, so firstly delete the old one - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); stmt->setUInt32(0, mailId); @@ -547,7 +547,7 @@ void WorldSession::HandleMailTakeItem(WorldPacket& recvData) uint8 msg = _player->CanStoreItem(NULL_BAG, NULL_SLOT, dest, it, false); if (msg == EQUIP_ERR_OK) { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); m->RemoveItem(itemId); m->removedItems.push_back(itemId); @@ -645,7 +645,7 @@ void WorldSession::HandleMailTakeMoney(WorldPacket& recvData) player->SendMailResult(mailId, MAIL_MONEY_TAKEN, MAIL_OK); // save money and mail to prevent cheating - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); player->SaveGoldToDB(trans); player->_SaveMail(trans); CharacterDatabase.CommitTransaction(trans); diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index acb564bf13..40ba6ecc1d 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -663,7 +663,7 @@ void WorldSession::HandlePetRename(WorldPacket& recvData) } } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); if (isdeclined) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_DECLINEDNAME); @@ -896,7 +896,7 @@ void WorldSession::UpdatePetSlot(uint32 petNumberA, uint8 oldPetSlot, uint8 newP PlayerPetData* playerPetDataA = _player->GetPlayerPetDataById(petNumberA); PlayerPetData* playerPetDataB = _player->GetPlayerPetDataBySlot(newPetSlot); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // If Slot is already in use if (playerPetDataB) diff --git a/src/server/game/Handlers/PetitionsHandler.cpp b/src/server/game/Handlers/PetitionsHandler.cpp index a4fc483240..ab8951d4d5 100644 --- a/src/server/game/Handlers/PetitionsHandler.cpp +++ b/src/server/game/Handlers/PetitionsHandler.cpp @@ -226,7 +226,7 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket& recvData) TC_LOG_DEBUG("network", "Invalid petition GUIDs: %s", ssInvalidPetitionGUIDs.str().c_str()); CharacterDatabase.EscapeString(name); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); trans->PAppend("DELETE FROM petition WHERE petitionguid IN (%s)", ssInvalidPetitionGUIDs.str().c_str()); trans->PAppend("DELETE FROM petition_sign WHERE petitionguid IN (%s)", ssInvalidPetitionGUIDs.str().c_str()); @@ -851,7 +851,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket& recvData) Guild::SendCommandResult(this, GUILD_COMMAND_CREATE, ERR_GUILD_COMMAND_SUCCESS, name); { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // Add members from signatures for (uint8 i = 0; i < signatures; ++i) @@ -894,7 +894,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket& recvData) } } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_BY_GUID); stmt->setUInt32(0, petitionGuid.GetCounter()); diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 097856dd1c..a23b155bd4 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -294,7 +294,7 @@ void WorldSession::HandleOpenWrappedItemCallback(uint16 pos, ObjectGuid itemGuid return; } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); Field* fields = result->Fetch(); uint32 entry = fields[0].GetUInt32(); diff --git a/src/server/game/Handlers/TicketHandler.cpp b/src/server/game/Handlers/TicketHandler.cpp index 13f2c5b4de..7a6acdf07d 100644 --- a/src/server/game/Handlers/TicketHandler.cpp +++ b/src/server/game/Handlers/TicketHandler.cpp @@ -130,7 +130,7 @@ void WorldSession::HandleGMTicketUpdateOpcode(WorldPacket& recvData) GMTicketResponse response = GMTICKET_RESPONSE_UPDATE_ERROR; if (GmTicket* ticket = sTicketMgr->GetTicketByPlayer(GetPlayer()->GetGUID())) { - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); ticket->SetMessage(message); ticket->SaveToDB(trans); @@ -191,7 +191,7 @@ void WorldSession::HandleGMSurveySubmit(WorldPacket& recvData) recvData >> mainSurvey; std::unordered_set surveyIds; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // sub_survey1, r1, comment1, sub_survey2, r2, comment2, sub_survey3, r3, comment3, sub_survey4, r4, comment4, sub_survey5, r5, comment5, sub_survey6, r6, comment6, sub_survey7, r7, comment7, sub_survey8, r8, comment8, sub_survey9, r9, comment9, sub_survey10, r10, comment10, for (uint8 i = 0; i < 15; i++) { diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp index baf6273c56..0d6b4018bd 100644 --- a/src/server/game/Handlers/TradeHandler.cpp +++ b/src/server/game/Handlers/TradeHandler.cpp @@ -616,7 +616,7 @@ void WorldSession::HandleAcceptTradeOpcode(WorldPacket& /*recvPacket*/) trader->m_trade = nullptr; // desynchronized with the other saves here (SaveInventoryAndGoldToDB() not have own transaction guards) - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); _player->SaveInventoryAndGoldToDB(trans); trader->SaveInventoryAndGoldToDB(trans); CharacterDatabase.CommitTransaction(trans); diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp index 6cc86d4383..a9ed04a805 100644 --- a/src/server/game/Instances/InstanceSaveMgr.cpp +++ b/src/server/game/Instances/InstanceSaveMgr.cpp @@ -129,7 +129,7 @@ InstanceSave* InstanceSaveManager::GetInstanceSave(uint32 InstanceId) void InstanceSaveManager::DeleteInstanceFromDB(uint32 instanceid) { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INSTANCE_BY_INSTANCE); stmt->setUInt32(0, instanceid); @@ -642,7 +642,7 @@ void InstanceSaveManager::_ResetOrWarnAll(uint32 mapid, Difficulty difficulty, b return; // delete/promote instance binds from the DB, even if not loaded - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_EXPIRED_CHAR_INSTANCE_BY_MAP_DIFF); stmt->setUInt16(0, uint16(mapid)); diff --git a/src/server/game/Loot/LootItemStorage.cpp b/src/server/game/Loot/LootItemStorage.cpp index 90525d3d72..684dcbd3cd 100644 --- a/src/server/game/Loot/LootItemStorage.cpp +++ b/src/server/game/Loot/LootItemStorage.cpp @@ -59,7 +59,7 @@ void LootItemStorage::LoadStorageFromDB() _lootItemStore.clear(); uint32 count = 0; - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ITEMCONTAINER_ITEMS); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (result) @@ -208,7 +208,7 @@ void LootItemStorage::RemoveStoredLootForContainer(uint32 containerId) _lootItemStore.erase(containerId); } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEMCONTAINER_ITEMS); stmt->setUInt32(0, containerId); trans->Append(stmt); @@ -252,7 +252,7 @@ void LootItemStorage::AddNewStoredLoot(Loot* loot, Player* player) StoredLootContainer container(loot->containerID); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); if (loot->gold) container.AddMoney(loot->gold, trans); @@ -287,7 +287,7 @@ void LootItemStorage::AddNewStoredLoot(Loot* loot, Player* player) } } -void StoredLootContainer::AddLootItem(LootItem const& lootItem, SQLTransaction& trans) +void StoredLootContainer::AddLootItem(LootItem const& lootItem, CharacterDatabaseTransaction& trans) { _lootItems.emplace(std::piecewise_construct, std::forward_as_tuple(lootItem.itemid), std::forward_as_tuple(lootItem)); if (!trans) @@ -310,7 +310,7 @@ void StoredLootContainer::AddLootItem(LootItem const& lootItem, SQLTransaction& trans->Append(stmt); } -void StoredLootContainer::AddMoney(uint32 money, SQLTransaction& trans) +void StoredLootContainer::AddMoney(uint32 money, CharacterDatabaseTransaction& trans) { _money = money; if (!trans) diff --git a/src/server/game/Loot/LootItemStorage.h b/src/server/game/Loot/LootItemStorage.h index ea8d5010bc..3cc1ef1502 100644 --- a/src/server/game/Loot/LootItemStorage.h +++ b/src/server/game/Loot/LootItemStorage.h @@ -55,8 +55,8 @@ class StoredLootContainer explicit StoredLootContainer(uint32 containerId) : _containerId(containerId), _money(0) { } - void AddLootItem(LootItem const& lootItem, SQLTransaction& trans); - void AddMoney(uint32 money, SQLTransaction& trans); + void AddLootItem(LootItem const& lootItem, CharacterDatabaseTransaction& trans); + void AddMoney(uint32 money, CharacterDatabaseTransaction& trans); void RemoveMoney(); void RemoveItem(uint32 itemId, uint32 count); diff --git a/src/server/game/Mails/Mail.cpp b/src/server/game/Mails/Mail.cpp index f65c1eeef5..7d6f61d281 100644 --- a/src/server/game/Mails/Mail.cpp +++ b/src/server/game/Mails/Mail.cpp @@ -91,7 +91,7 @@ MailDraft& MailDraft::AddItem(Item* item) m_items[item->GetGUID().GetCounter()] = item; return *this; } -void MailDraft::prepareItems(Player* receiver, SQLTransaction& trans) +void MailDraft::prepareItems(Player* receiver, CharacterDatabaseTransaction& trans) { if (!m_mailTemplateId || !m_mailTemplateItemsNeed) return; @@ -117,7 +117,7 @@ void MailDraft::prepareItems(Player* receiver, SQLTransaction& trans) } } -void MailDraft::deleteIncludedItems(SQLTransaction& trans, bool inDB /*= false*/ ) +void MailDraft::deleteIncludedItems(CharacterDatabaseTransaction& trans, bool inDB /*= false*/ ) { for (MailItemMap::iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter) { @@ -136,7 +136,7 @@ void MailDraft::deleteIncludedItems(SQLTransaction& trans, bool inDB /*= false*/ m_items.clear(); } -void MailDraft::SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, SQLTransaction& trans) +void MailDraft::SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, CharacterDatabaseTransaction& trans) { ObjectGuid receiverGuid(HighGuid::Player, receiver_guid); Player* receiver = ObjectAccessor::FindConnectedPlayer(receiverGuid); @@ -179,7 +179,7 @@ void MailDraft::SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender SendMailTo(trans, MailReceiver(receiver, receiver_guid), MailSender(MAIL_NORMAL, sender_guid), MAIL_CHECK_MASK_RETURNED, deliver_delay); } -void MailDraft::SendMailTo(SQLTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked, uint32 deliver_delay) +void MailDraft::SendMailTo(CharacterDatabaseTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked, uint32 deliver_delay) { Player* pReceiver = receiver.GetPlayer(); // can be nullptr Player* pSender = ObjectAccessor::FindPlayerByLowGUID(sender.GetSenderId()); @@ -280,13 +280,13 @@ void MailDraft::SendMailTo(SQLTransaction& trans, MailReceiver const& receiver, } else if (!m_items.empty()) { - SQLTransaction temp = SQLTransaction(nullptr); + CharacterDatabaseTransaction temp = CharacterDatabaseTransaction(nullptr); deleteIncludedItems(temp); } } else if (!m_items.empty()) { - SQLTransaction temp = SQLTransaction(nullptr); + CharacterDatabaseTransaction temp = CharacterDatabaseTransaction(nullptr); deleteIncludedItems(temp); } } diff --git a/src/server/game/Mails/Mail.h b/src/server/game/Mails/Mail.h index 93e7a1daaa..06a4f3cb52 100644 --- a/src/server/game/Mails/Mail.h +++ b/src/server/game/Mails/Mail.h @@ -138,12 +138,12 @@ class TC_GAME_API MailDraft MailDraft& AddCOD(uint32 COD) { m_COD = COD; return *this; } public: // finishers - void SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, SQLTransaction& trans); - void SendMailTo(SQLTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked = MAIL_CHECK_MASK_NONE, uint32 deliver_delay = 0); + void SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, CharacterDatabaseTransaction& trans); + void SendMailTo(CharacterDatabaseTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked = MAIL_CHECK_MASK_NONE, uint32 deliver_delay = 0); private: - void deleteIncludedItems(SQLTransaction& trans, bool inDB = false); - void prepareItems(Player* receiver, SQLTransaction& trans); // called from SendMailTo for generate mailTemplateBase items + void deleteIncludedItems(CharacterDatabaseTransaction& trans, bool inDB = false); + void prepareItems(Player* receiver, CharacterDatabaseTransaction& trans); // called from SendMailTo for generate mailTemplateBase items uint16 m_mailTemplateId; bool m_mailTemplateItemsNeed; diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 730181b80f..e12de6f44a 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3169,7 +3169,7 @@ void Map::DoRespawn(SpawnObjectType type, ObjectGuid::LowType spawnId, uint32 gr } } -void Map::Respawn(RespawnInfo* info, SQLTransaction dbTrans) +void Map::Respawn(RespawnInfo* info, CharacterDatabaseTransaction dbTrans) { if (!CheckRespawn(info)) { @@ -3248,7 +3248,7 @@ void Map::UnloadAllRespawnInfos() // delete everything from memory _gameObjectRespawnTimesBySpawnId.clear(); } -void Map::DeleteRespawnInfo(RespawnInfo* info, SQLTransaction dbTrans) +void Map::DeleteRespawnInfo(RespawnInfo* info, CharacterDatabaseTransaction dbTrans) { // Delete from all relevant containers to ensure consistency ASSERT(info); @@ -4397,7 +4397,7 @@ void Map::UpdateIteratorBack(Player* player) m_mapRefIter = m_mapRefIter->nocheck_prev(); } -void Map::SaveRespawnTime(SpawnObjectType type, ObjectGuid::LowType spawnId, uint32 entry, time_t respawnTime, uint32 gridId, SQLTransaction dbTrans, bool startup) +void Map::SaveRespawnTime(SpawnObjectType type, ObjectGuid::LowType spawnId, uint32 entry, time_t respawnTime, uint32 gridId, CharacterDatabaseTransaction dbTrans, bool startup) { if (!spawnId) return; @@ -4426,7 +4426,7 @@ void Map::SaveRespawnTime(SpawnObjectType type, ObjectGuid::LowType spawnId, uin SaveRespawnInfoDB(ri, dbTrans); } -void Map::SaveRespawnInfoDB(RespawnInfo const& info, SQLTransaction dbTrans) +void Map::SaveRespawnInfoDB(RespawnInfo const& info, CharacterDatabaseTransaction dbTrans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_RESPAWN); stmt->setUInt16(0, info.type); @@ -4598,7 +4598,7 @@ Corpse* Map::ConvertCorpseToBones(ObjectGuid const& ownerGuid, bool insignia /*= RemoveCorpse(corpse); // remove corpse from DB - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); corpse->DeleteFromDB(trans); CharacterDatabase.CommitTransaction(trans); diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index ad3bd94dc2..3974427c36 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -611,8 +611,8 @@ class TC_GAME_API Map : public GridRefManager void UpdatePlayerZoneStats(uint32 oldZone, uint32 newZone); - void SaveRespawnTime(SpawnObjectType type, ObjectGuid::LowType spawnId, uint32 entry, time_t respawnTime, uint32 gridId, SQLTransaction dbTrans = nullptr, bool startup = false); - void SaveRespawnInfoDB(RespawnInfo const& info, SQLTransaction dbTrans = nullptr); + void SaveRespawnTime(SpawnObjectType type, ObjectGuid::LowType spawnId, uint32 entry, time_t respawnTime, uint32 gridId, CharacterDatabaseTransaction dbTrans = nullptr, bool startup = false); + void SaveRespawnInfoDB(RespawnInfo const& info, CharacterDatabaseTransaction dbTrans = nullptr); void LoadRespawnTimes(); void DeleteRespawnTimes() { UnloadAllRespawnInfos(); DeleteRespawnTimesInDB(GetId(), GetInstanceId()); } @@ -793,20 +793,20 @@ class TC_GAME_API Map : public GridRefManager // if return value is false and info->respawnTime is nonzero, it is guaranteed to be greater than time(NULL) bool CheckRespawn(RespawnInfo* info); void DoRespawn(SpawnObjectType type, ObjectGuid::LowType spawnId, uint32 gridId); - void Respawn(RespawnInfo* info, SQLTransaction dbTrans = nullptr); + void Respawn(RespawnInfo* info, CharacterDatabaseTransaction dbTrans = nullptr); bool AddRespawnInfo(RespawnInfo const& info); void UnloadAllRespawnInfos(); - void DeleteRespawnInfo(RespawnInfo* info, SQLTransaction dbTrans = nullptr); + void DeleteRespawnInfo(RespawnInfo* info, CharacterDatabaseTransaction dbTrans = nullptr); public: void GetRespawnInfo(std::vector& respawnData, SpawnObjectTypeMask types) const; RespawnInfo* GetRespawnInfo(SpawnObjectType type, ObjectGuid::LowType spawnId) const; - void Respawn(SpawnObjectType type, ObjectGuid::LowType spawnId, SQLTransaction dbTrans = nullptr) + void Respawn(SpawnObjectType type, ObjectGuid::LowType spawnId, CharacterDatabaseTransaction dbTrans = nullptr) { if (RespawnInfo* info = GetRespawnInfo(type, spawnId)) Respawn(info, dbTrans); } - void RemoveRespawnTime(SpawnObjectType type, ObjectGuid::LowType spawnId,SQLTransaction dbTrans = nullptr) + void RemoveRespawnTime(SpawnObjectType type, ObjectGuid::LowType spawnId, CharacterDatabaseTransaction dbTrans = nullptr) { if (RespawnInfo* info = GetRespawnInfo(type, spawnId)) DeleteRespawnInfo(info, dbTrans); diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp index b603d373e7..3c87c015fd 100644 --- a/src/server/game/Pools/PoolMgr.cpp +++ b/src/server/game/Pools/PoolMgr.cpp @@ -962,7 +962,7 @@ void PoolMgr::LoadQuestPools() void PoolMgr::SaveQuestsToDB() { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); for (PoolGroupQuestMap::iterator itr = mPoolQuestGroups.begin(); itr != mPoolQuestGroups.end(); ++itr) { diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp index 44d178a719..27d3c5e91f 100644 --- a/src/server/game/Reputation/ReputationMgr.cpp +++ b/src/server/game/Reputation/ReputationMgr.cpp @@ -569,7 +569,7 @@ void ReputationMgr::LoadFromDB(PreparedQueryResult result) } } -void ReputationMgr::SaveToDB(SQLTransaction& trans) +void ReputationMgr::SaveToDB(CharacterDatabaseTransaction& trans) { for (FactionStateList::iterator itr = _factions.begin(); itr != _factions.end(); ++itr) { diff --git a/src/server/game/Reputation/ReputationMgr.h b/src/server/game/Reputation/ReputationMgr.h index 1f5507dff6..b708dcbd38 100644 --- a/src/server/game/Reputation/ReputationMgr.h +++ b/src/server/game/Reputation/ReputationMgr.h @@ -67,7 +67,7 @@ class TC_GAME_API ReputationMgr _visibleFactionCount(0), _honoredFactionCount(0), _reveredFactionCount(0), _exaltedFactionCount(0), _sendFactionIncreased(false) { } ~ReputationMgr() { } - void SaveToDB(SQLTransaction& trans); + void SaveToDB(CharacterDatabaseTransaction& trans); void LoadFromDB(PreparedQueryResult result); public: // statics static const int32 PointsInRank[MAX_REPUTATION_RANK]; diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 58b4196c40..0983b5251e 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -880,7 +880,7 @@ void WorldSession::SendTutorialsData() SendPacket(&data); } -void WorldSession::SaveTutorialsData(SQLTransaction &trans) +void WorldSession::SaveTutorialsData(CharacterDatabaseTransaction&trans) { if (!(m_TutorialsChanged & TUTORIALS_FLAG_CHANGED)) return; diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index a220ff6a0d..557de5b73e 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -499,7 +499,7 @@ class TC_GAME_API WorldSession void LoadTutorialsData(PreparedQueryResult result); void SendTutorialsData(); - void SaveTutorialsData(SQLTransaction& trans); + void SaveTutorialsData(CharacterDatabaseTransaction& trans); uint32 GetTutorialInt(uint8 index) const { return m_Tutorials[index]; } void SetTutorialInt(uint8 index, uint32 value) { diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp index 3223371f2b..5758cc45b0 100644 --- a/src/server/game/Spells/SpellHistory.cpp +++ b/src/server/game/Spells/SpellHistory.cpp @@ -117,7 +117,7 @@ void SpellHistory::LoadFromDB(PreparedQueryResult cooldownsResult) } template -void SpellHistory::SaveToDB(SQLTransaction& trans) +void SpellHistory::SaveToDB(CharacterDatabaseTransaction& trans) { typedef PersistenceHelper StatementInfo; @@ -784,5 +784,5 @@ void SpellHistory::RestoreCooldownStateAfterDuel() template void SpellHistory::LoadFromDB(PreparedQueryResult cooldownsResult); template void SpellHistory::LoadFromDB(PreparedQueryResult cooldownsResult); -template void SpellHistory::SaveToDB(SQLTransaction& trans); -template void SpellHistory::SaveToDB(SQLTransaction& trans); +template void SpellHistory::SaveToDB(CharacterDatabaseTransaction& trans); +template void SpellHistory::SaveToDB(CharacterDatabaseTransaction& trans); diff --git a/src/server/game/Spells/SpellHistory.h b/src/server/game/Spells/SpellHistory.h index b93aff00a3..7e5fae46b8 100644 --- a/src/server/game/Spells/SpellHistory.h +++ b/src/server/game/Spells/SpellHistory.h @@ -66,7 +66,7 @@ public: void LoadFromDB(PreparedQueryResult cooldownsResult); template - void SaveToDB(SQLTransaction& trans); + void SaveToDB(CharacterDatabaseTransaction& trans); void Update(); diff --git a/src/server/game/Tickets/TicketMgr.cpp b/src/server/game/Tickets/TicketMgr.cpp index 929d21f641..5188f1ce24 100644 --- a/src/server/game/Tickets/TicketMgr.cpp +++ b/src/server/game/Tickets/TicketMgr.cpp @@ -88,7 +88,7 @@ bool GmTicket::LoadFromDB(Field* fields) return true; } -void GmTicket::SaveToDB(SQLTransaction& trans) const +void GmTicket::SaveToDB(CharacterDatabaseTransaction& trans) const { // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // id, type, playerGuid, name, description, createTime, mapId, posX, posY, posZ, lastModifiedTime, closedBy, assignedTo, comment, response, completed, escalated, viewed, needMoreHelp, resolvedBy @@ -378,7 +378,7 @@ void TicketMgr::AddTicket(GmTicket* ticket) _ticketList[ticket->GetId()] = ticket; if (!ticket->IsClosed()) ++_openTicketCount; - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); ticket->SaveToDB(trans); } @@ -386,7 +386,7 @@ void TicketMgr::CloseTicket(uint32 ticketId, ObjectGuid source) { if (GmTicket* ticket = GetTicket(ticketId)) { - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); ticket->SetClosedBy(source); if (source) --_openTicketCount; @@ -398,7 +398,7 @@ void TicketMgr::ResolveAndCloseTicket(uint32 ticketId, ObjectGuid source) { if (GmTicket* ticket = GetTicket(ticketId)) { - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); ticket->SetClosedBy(source); ticket->SetResolvedBy(source); if (source) diff --git a/src/server/game/Tickets/TicketMgr.h b/src/server/game/Tickets/TicketMgr.h index fb07e69ac4..799b38ea07 100644 --- a/src/server/game/Tickets/TicketMgr.h +++ b/src/server/game/Tickets/TicketMgr.h @@ -133,7 +133,7 @@ public: void AppendResponse(std::string const& response) { _response += response; } bool LoadFromDB(Field* fields); - void SaveToDB(SQLTransaction& trans) const; + void SaveToDB(CharacterDatabaseTransaction& trans) const; void DeleteFromDB(); void WritePacket(WorldPacket& data) const; diff --git a/src/server/game/Tools/PlayerDump.cpp b/src/server/game/Tools/PlayerDump.cpp index f12cf3334f..7f5a18c51a 100644 --- a/src/server/game/Tools/PlayerDump.cpp +++ b/src/server/game/Tools/PlayerDump.cpp @@ -826,7 +826,7 @@ DumpReturn PlayerDumpReader::LoadDump(std::string const& file, uint32 account, s // for logs size_t lineNumber = 0; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); while (!feof(fin.get())) { if (!fgets(buf, BUFFER_SIZE, fin.get())) diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 53618cebea..d7ee0243ce 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2815,7 +2815,7 @@ BanReturn World::BanAccount(BanMode mode, std::string const& nameOrIP, uint32 du } ///- Disconnect all affected players (for IP it can be several) - SQLTransaction trans = LoginDatabase.BeginTransaction(); + LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction(); do { Field* fieldsAccount = resultAccounts->Fetch(); @@ -2895,7 +2895,7 @@ BanReturn World::BanCharacter(std::string const& name, std::string const& durati else guid = banned->GetGUID().GetCounter(); //Use transaction in order to ensure the order of the queries - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // make sure there is only one active ban CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_BAN); stmt->setUInt32(0, guid); @@ -3190,7 +3190,7 @@ void World::_UpdateRealmCharCount(PreparedQueryResult resultCharCount) uint32 accountId = fields[0].GetUInt32(); uint8 charCount = uint8(fields[1].GetUInt64()); - SQLTransaction trans = LoginDatabase.BeginTransaction(); + LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction(); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_REALM_CHARACTERS_BY_REALM); stmt->setUInt32(0, accountId); diff --git a/src/server/scripts/Commands/cs_guild.cpp b/src/server/scripts/Commands/cs_guild.cpp index eb20cd8987..05771d25f5 100644 --- a/src/server/scripts/Commands/cs_guild.cpp +++ b/src/server/scripts/Commands/cs_guild.cpp @@ -150,7 +150,7 @@ public: return false; // player's guild membership checked in AddMember before add - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); return targetGuild->AddMember(trans, targetGuid); } @@ -169,7 +169,7 @@ public: if (!targetGuild) return false; - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); targetGuild->DeleteMember(trans, targetGuid, false, true, true); return true; } @@ -197,7 +197,7 @@ public: return false; uint8 newRank = uint8(atoi(rankStr)); - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); return targetGuild->ChangeMemberRank(trans, targetGuid, newRank); } diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 3ac64772dd..f8b04b198d 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -605,7 +605,7 @@ public: handler->PSendSysMessage(LANG_SUMMONING, nameLink.c_str(), handler->GetTrinityString(LANG_OFFLINE)); // in point where GM stay - SQLTransaction dummy; + CharacterDatabaseTransaction dummy; Player::SavePositionInDB(WorldLocation(_player->GetMapId(), _player->GetPositionX(), _player->GetPositionY(), @@ -665,7 +665,7 @@ public: } else { - SQLTransaction trans(nullptr); + CharacterDatabaseTransaction trans(nullptr); Player::OfflineResurrect(targetGuid, trans); } diff --git a/src/server/scripts/Commands/cs_send.cpp b/src/server/scripts/Commands/cs_send.cpp index c8331e34a8..d79d646718 100644 --- a/src/server/scripts/Commands/cs_send.cpp +++ b/src/server/scripts/Commands/cs_send.cpp @@ -83,7 +83,7 @@ public: MailSender sender(MAIL_NORMAL, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetGUID().GetCounter() : 0, MAIL_STATIONERY_GM); /// @todo Fix poor design - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); MailDraft(subject, text) .SendMailTo(trans, MailReceiver(target, targetGuid.GetCounter()), sender); @@ -184,7 +184,7 @@ public: // fill mail MailDraft draft(subject, text); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); for (ItemPairs::const_iterator itr = items.begin(); itr != items.end(); ++itr) { @@ -241,7 +241,7 @@ public: // from console show nonexisting sender MailSender sender(MAIL_NORMAL, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetGUID().GetCounter() : 0, MAIL_STATIONERY_GM); - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); MailDraft(subject, text) .AddMoney(money) diff --git a/src/server/scripts/Commands/cs_tele.cpp b/src/server/scripts/Commands/cs_tele.cpp index af33fc3dbd..a4cf5d2c3a 100644 --- a/src/server/scripts/Commands/cs_tele.cpp +++ b/src/server/scripts/Commands/cs_tele.cpp @@ -140,7 +140,7 @@ public: WorldLocation loc(fieldsDB[0].GetUInt16(), fieldsDB[2].GetFloat(), fieldsDB[3].GetFloat(), fieldsDB[4].GetFloat(), 0.0f); uint32 zoneId = fieldsDB[1].GetUInt16(); - SQLTransaction dummy; + CharacterDatabaseTransaction dummy; Player::SavePositionInDB(loc, zoneId, target_guid, dummy); } } @@ -198,7 +198,7 @@ public: handler->PSendSysMessage(LANG_TELEPORTING_TO, nameLink.c_str(), handler->GetTrinityString(LANG_OFFLINE), tele->name.c_str()); - SQLTransaction dummy; + CharacterDatabaseTransaction dummy; Player::SavePositionInDB(WorldLocation(tele->mapId, tele->position_x, tele->position_y, tele->position_z, tele->orientation), sMapMgr->GetZoneId(PhasingHandler::GetEmptyPhaseShift(), tele->mapId, tele->position_x, tele->position_y, tele->position_z), target_guid, dummy); } diff --git a/src/server/scripts/Commands/cs_ticket.cpp b/src/server/scripts/Commands/cs_ticket.cpp index 16ea29379c..58862a68c7 100644 --- a/src/server/scripts/Commands/cs_ticket.cpp +++ b/src/server/scripts/Commands/cs_ticket.cpp @@ -126,7 +126,7 @@ public: } // Assign ticket - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); ticket->SetAssignedTo(targetGuid, AccountMgr::IsAdminAccount(AccountMgr::GetSecurity(accountId, realm.Id.Realm))); ticket->SaveToDB(trans); sTicketMgr->UpdateLastChange(); @@ -202,7 +202,7 @@ public: return true; } - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); ticket->SetComment(comment); ticket->SaveToDB(trans); sTicketMgr->UpdateLastChange(); @@ -260,7 +260,7 @@ public: Player* gm = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr; - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); ticket->SetResolvedBy(gm ? gm->GetGUID() : ObjectGuid(uint64(0))); ticket->SetCompleted(); ticket->SaveToDB(trans); @@ -413,7 +413,7 @@ public: } std::string assignedTo = ticket->GetAssignedToName(); // copy assignedto name because we need it after the ticket has been unnassigned - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); ticket->SetUnassigned(); ticket->SaveToDB(trans); sTicketMgr->UpdateLastChange(); @@ -438,7 +438,7 @@ public: return true; } - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); ticket->SetViewed(); ticket->SaveToDB(trans); @@ -477,7 +477,7 @@ public: return true; } - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); ticket->SetViewed(); ticket->SaveToDB(trans); @@ -513,7 +513,7 @@ public: return true; } - SQLTransaction trans = SQLTransaction(nullptr); + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); ticket->AppendResponse(response); if (newLine) ticket->AppendResponse("\n"); diff --git a/src/server/scripts/Northrend/zone_dalaran.cpp b/src/server/scripts/Northrend/zone_dalaran.cpp index c70bf6a419..38555d0c9a 100644 --- a/src/server/scripts/Northrend/zone_dalaran.cpp +++ b/src/server/scripts/Northrend/zone_dalaran.cpp @@ -183,7 +183,7 @@ class npc_minigob_manabonk : public CreatureScript void SendMailToPlayer(Player* player) { - SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); int16 deliverDelay = irand(MAIL_DELIVER_DELAY_MIN, MAIL_DELIVER_DELAY_MAX); MailDraft(MAIL_MINIGOB_ENTRY, true).SendMailTo(trans, MailReceiver(player), MailSender(MAIL_CREATURE, me->GetEntry()), MAIL_CHECK_MASK_NONE, deliverDelay); CharacterDatabase.CommitTransaction(trans);