aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2017-04-03 22:44:14 -0300
committerariel- <ariel-@users.noreply.github.com>2017-04-03 22:44:14 -0300
commitae9995f463ec9797eaa4a803bdca4fbf5978a9b7 (patch)
treed10e50bb8c8b60ceaa8e02da15f74257ffba0a75 /src
parent58f2e62098f2c78b77b6b3851709c83f33e1cafd (diff)
Core/Auction: wrap item deletions from AHBot auction on a transaction
This speeds up the query execution time tremendously Refs #19182
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.cpp10
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.h2
2 files changed, 6 insertions, 6 deletions
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
index 0fbcb67bb38..7976b38f37c 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
@@ -182,7 +182,7 @@ void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, SQLTransaction&
else
{
// bidder doesn't exist, delete the item
- sAuctionMgr->RemoveAItem(auction->itemGUIDLow, true);
+ sAuctionMgr->RemoveAItem(auction->itemGUIDLow, true, &trans);
}
}
@@ -247,7 +247,7 @@ void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, SQLTransacti
else
{
// owner doesn't exist, delete the item
- sAuctionMgr->RemoveAItem(auction->itemGUIDLow, true);
+ sAuctionMgr->RemoveAItem(auction->itemGUIDLow, true, &trans);
}
}
@@ -392,7 +392,7 @@ void AuctionHouseMgr::AddAItem(Item* it)
mAitems[it->GetGUID().GetCounter()] = it;
}
-bool AuctionHouseMgr::RemoveAItem(ObjectGuid::LowType id, bool deleteItem)
+bool AuctionHouseMgr::RemoveAItem(ObjectGuid::LowType id, bool deleteItem /*= false*/, SQLTransaction* trans /*= nullptr*/)
{
ItemMap::iterator i = mAitems.find(id);
if (i == mAitems.end())
@@ -400,9 +400,9 @@ bool AuctionHouseMgr::RemoveAItem(ObjectGuid::LowType id, bool deleteItem)
if (deleteItem)
{
- SQLTransaction trans = SQLTransaction(nullptr);
+ ASSERT(trans);
i->second->FSetState(ITEM_REMOVED);
- i->second->SaveToDB(trans);
+ i->second->SaveToDB(*trans);
}
mAitems.erase(i);
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h
index 136727170e4..fb3f11052bc 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.h
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h
@@ -190,7 +190,7 @@ class TC_GAME_API AuctionHouseMgr
void LoadAuctions();
void AddAItem(Item* it);
- bool RemoveAItem(ObjectGuid::LowType id, bool deleteItem = false);
+ bool RemoveAItem(ObjectGuid::LowType id, bool deleteItem = false, SQLTransaction* trans = nullptr);
bool PendingAuctionAdd(Player* player, AuctionEntry* aEntry, Item* item);
uint32 PendingAuctionCount(const Player* player) const;
void PendingAuctionProcess(Player* player);