mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-26 15:16:24 +00:00
refactor(World/WorldState): use prepared statements (#22582)
This commit is contained in:
@@ -616,6 +616,10 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
||||
"ON DUPLICATE KEY UPDATE state = VALUES(state)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DELETE_INSTANCE_SAVED_DATA, "DELETE FROM instance_saved_go_state_data WHERE id = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_SANITIZE_INSTANCE_SAVED_DATA, "DELETE FROM instance_saved_go_state_data WHERE id NOT IN (SELECT instance.id FROM instance)", CONNECTION_ASYNC);
|
||||
|
||||
// world_state
|
||||
PrepareStatement(CHAR_SEL_WORLD_STATE, "SELECT Id, Data FROM world_state", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_REP_WORLD_STATE, "REPLACE INTO world_state (Id, Data) VALUES(?, ?)", CONNECTION_ASYNC);
|
||||
}
|
||||
|
||||
CharacterDatabaseConnection::CharacterDatabaseConnection(MySQLConnectionInfo& connInfo) : MySQLConnection(connInfo)
|
||||
|
||||
@@ -528,6 +528,9 @@ enum CharacterDatabaseStatements : uint32
|
||||
CHAR_DELETE_INSTANCE_SAVED_DATA,
|
||||
CHAR_SANITIZE_INSTANCE_SAVED_DATA,
|
||||
|
||||
CHAR_SEL_WORLD_STATE,
|
||||
CHAR_REP_WORLD_STATE,
|
||||
|
||||
MAX_CHARACTERDATABASE_STATEMENTS
|
||||
};
|
||||
|
||||
|
||||
@@ -47,7 +47,9 @@ WorldState::~WorldState()
|
||||
|
||||
void WorldState::Load()
|
||||
{
|
||||
QueryResult result = CharacterDatabase.Query("SELECT Id, Data FROM world_state");
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_WORLD_STATE);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
|
||||
if (result)
|
||||
{
|
||||
do
|
||||
@@ -205,8 +207,10 @@ void WorldState::Save(WorldStateSaveIds saveId)
|
||||
|
||||
void WorldState::SaveHelper(std::string& stringToSave, WorldStateSaveIds saveId)
|
||||
{
|
||||
CharacterDatabase.Execute("DELETE FROM world_state WHERE Id='{}'", saveId);
|
||||
CharacterDatabase.Execute("INSERT INTO world_state(Id,Data) VALUES('{}','{}')", saveId, stringToSave.data());
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_WORLD_STATE);
|
||||
stmt->SetData(0, saveId);
|
||||
stmt->SetData(1, stringToSave);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
|
||||
bool WorldState::IsConditionFulfilled(uint32 conditionId, uint32 state) const
|
||||
|
||||
Reference in New Issue
Block a user