aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Pools/PoolMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Pools/PoolMgr.cpp')
-rw-r--r--src/server/game/Pools/PoolMgr.cpp40
1 files changed, 13 insertions, 27 deletions
diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp
index 0d057a7ce4d..9eb21c63e56 100644
--- a/src/server/game/Pools/PoolMgr.cpp
+++ b/src/server/game/Pools/PoolMgr.cpp
@@ -818,7 +818,8 @@ void PoolMgr::LoadFromDB()
void PoolMgr::LoadQuestPools()
{
- QueryResult result = WorldDatabase.Query("SELECT entry, pool_entry FROM pool_quest");
+ PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_LOAD_QUEST_POOLS);
+ PreparedQueryResult result = WorldDatabase.Query(stmt);
mQuestSearchMap.clear();
mPoolQuestGroups.resize(max_pool_id + 1);
@@ -849,11 +850,10 @@ void PoolMgr::LoadQuestPools()
do
{
- Field* fields = result->Fetch();
bar.step();
- uint32 entry = fields[0].GetUInt32();
- uint32 pool_id = fields[1].GetUInt32();
+ uint32 entry = result->GetUInt32(0);
+ uint32 pool_id = result->GetUInt32(1);
Quest const* pQuest = sObjectMgr.GetQuestTemplate(entry);
if (!pQuest)
@@ -914,7 +914,7 @@ void PoolMgr::LoadQuestPools()
void PoolMgr::Initialize()
{
QueryResult result = WorldDatabase.Query("SELECT DISTINCT pool_template.entry, pool_pool.pool_id, pool_pool.mother_pool FROM pool_template LEFT JOIN game_event_pool ON pool_template.entry=game_event_pool.pool_entry LEFT JOIN pool_pool ON pool_template.entry=pool_pool.pool_id WHERE game_event_pool.pool_entry IS NULL");
- uint32 count=0;
+ uint32 count = 0;
if (result)
{
do
@@ -949,39 +949,25 @@ void PoolMgr::Initialize()
void PoolMgr::SaveQuestsToDB()
{
SQLTransaction trans = CharacterDatabase.BeginTransaction();
- std::ostringstream query;
- query << "DELETE FROM pool_quest_save WHERE pool_id IN (";
- bool first = true;
+
for (PoolGroupQuestMap::iterator itr = mPoolQuestGroups.begin(); itr != mPoolQuestGroups.end(); ++itr)
{
- if (!first)
- query << ",";
- first = false;
- query << itr->GetPoolId();
- }
- if (!first)
- {
- query << ")";
- trans->Append(query.str().c_str());
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_POOL_SAVE);
+ stmt->setUInt32(0, itr->GetPoolId());
+ trans->Append(stmt);
}
- first = true;
- query.rdbuf()->str("");
- query << "INSERT INTO pool_quest_save (pool_id, quest_id) VALUES ";
for (SearchMap::iterator itr = mQuestSearchMap.begin(); itr != mQuestSearchMap.end(); ++itr)
{
if (IsSpawnedObject<Quest>(itr->first))
{
- if (!first)
- query << ",";
- first = false;
- query << "(" << itr->second << "," << itr->first << ")";
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_QUEST_POOL_SAVE);
+ stmt->setUInt32(0, itr->second);
+ stmt->setUInt32(1, itr->first);
+ trans->Append(stmt);
}
}
- if (!first)
- trans->Append(query.str().c_str());
-
CharacterDatabase.CommitTransaction(trans);
}