mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-04-09 17:26:58 +00:00
Agent-Logs-Url: https://github.com/DarkflameUniverse/DarkflameServer/sessions/63bf6fda-1e52-4ad7-a08c-3535f744ae5d Co-authored-by: aronwk-aaron <26027722+aronwk-aaron@users.noreply.github.com>
42 lines
1.2 KiB
C++
42 lines
1.2 KiB
C++
#include "CharacterReputationMigration.h"
|
|
|
|
#include "Database.h"
|
|
#include "Logger.h"
|
|
#include "tinyxml2.h"
|
|
|
|
uint32_t CharacterReputationMigration::Run() {
|
|
uint32_t charactersMigrated = 0;
|
|
|
|
const auto allCharIds = Database::Get()->GetAllCharacterIds();
|
|
const bool previousCommitValue = Database::Get()->GetAutoCommit();
|
|
Database::Get()->SetAutoCommit(false);
|
|
|
|
for (const auto charId : allCharIds) {
|
|
const auto xmlStr = Database::Get()->GetCharacterXml(charId);
|
|
if (xmlStr.empty()) continue;
|
|
|
|
tinyxml2::XMLDocument doc;
|
|
if (doc.Parse(xmlStr.c_str(), xmlStr.size()) != tinyxml2::XML_SUCCESS) {
|
|
LOG("Failed to parse XML for character %llu during reputation migration", static_cast<uint64_t>(charId));
|
|
continue;
|
|
}
|
|
|
|
auto* obj = doc.FirstChildElement("obj");
|
|
if (!obj) continue;
|
|
|
|
auto* character = obj->FirstChildElement("char");
|
|
if (!character) continue;
|
|
|
|
int64_t reputation = 0;
|
|
if (character->QueryInt64Attribute("rpt", &reputation) == tinyxml2::XML_SUCCESS && reputation != 0) {
|
|
Database::Get()->SetCharacterReputation(charId, reputation);
|
|
charactersMigrated++;
|
|
}
|
|
}
|
|
|
|
Database::Get()->Commit();
|
|
Database::Get()->SetAutoCommit(previousCommitValue);
|
|
|
|
return charactersMigrated;
|
|
}
|