diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2017-04-03 22:44:14 -0300 |
|---|---|---|
| committer | funjoker <funjoker109@gmail.com> | 2020-04-27 12:25:52 +0200 |
| commit | af3934e8ce181241db04b397299f36626bf0ed68 (patch) | |
| tree | 0d3ab59dc67b0ef1341f30fffd2537311fb1d759 /src | |
| parent | f623fea9237d1a076f55aa49128201a59cb0045b (diff) | |
Core/Auction: wrap item deletions from AHBot auction on a transaction
This speeds up the query execution time tremendously
Refs #19182
(cherry picked from commit ae9995f463ec9797eaa4a803bdca4fbf5978a9b7)
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/AuctionHouse/AuctionHouseMgr.cpp | 10 | ||||
| -rw-r--r-- | src/server/game/AuctionHouse/AuctionHouseMgr.h | 2 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 421c701089c..a7a06b3c32f 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -653,7 +653,7 @@ void AuctionHouseMgr::AddAItem(Item* item) _itemsByGuid[item->GetGUID()] = item; } -bool AuctionHouseMgr::RemoveAItem(ObjectGuid id, bool deleteItem) +bool AuctionHouseMgr::RemoveAItem(ObjectGuid id, bool deleteItem /*= false*/, CharacterDatabaseTransaction* trans /*= nullptr*/) { auto i = _itemsByGuid.find(id); if (i == _itemsByGuid.end()) @@ -661,9 +661,9 @@ bool AuctionHouseMgr::RemoveAItem(ObjectGuid id, bool deleteItem) if (deleteItem) { - CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); + ASSERT(trans); i->second->FSetState(ITEM_REMOVED); - i->second->SaveToDB(trans); + i->second->SaveToDB(*trans); } _itemsByGuid.erase(i); @@ -1850,7 +1850,7 @@ void AuctionHouseObject::SendAuctionWon(AuctionPosting const* auction, Player* b { // bidder doesn't exist, delete the item for (Item* item : auction->Items) - sAuctionMgr->RemoveAItem(item->GetGUID(), true); + sAuctionMgr->RemoveAItem(item->GetGUID(), true, &trans); } } @@ -1902,7 +1902,7 @@ void AuctionHouseObject::SendAuctionExpired(AuctionPosting const* auction, Chara { // owner doesn't exist, delete the item for (Item* item : auction->Items) - sAuctionMgr->RemoveAItem(item->GetGUID(), true); + sAuctionMgr->RemoveAItem(item->GetGUID(), true, &trans); } } diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index 86e311a67af..4513e86089d 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -373,7 +373,7 @@ class TC_GAME_API AuctionHouseMgr void LoadAuctions(); void AddAItem(Item* item); - bool RemoveAItem(ObjectGuid itemGuid, bool deleteItem = false); + bool RemoveAItem(ObjectGuid itemGuid, bool deleteItem = false, CharacterDatabaseTransaction* trans = nullptr); bool PendingAuctionAdd(Player* player, uint32 auctionHouseId, uint32 auctionId, uint64 deposit); std::size_t PendingAuctionCount(Player const* player) const; void PendingAuctionProcess(Player* player); |
