diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-06-11 20:41:47 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2025-06-11 20:41:47 +0200 |
commit | dcb2857f38a51f0d8742614fa16d78ed9b4e014f (patch) | |
tree | 68943046cef424fe21062674619e4c59b92145a2 /src/server/database/Updater/UpdateFetcher.cpp | |
parent | 1ae7cdd512a28a973aaa087f4516baca1cae665b (diff) |
Core/Database: Update PCH content to include most commonly used headers
Diffstat (limited to 'src/server/database/Updater/UpdateFetcher.cpp')
-rw-r--r-- | src/server/database/Updater/UpdateFetcher.cpp | 59 |
1 files changed, 28 insertions, 31 deletions
diff --git a/src/server/database/Updater/UpdateFetcher.cpp b/src/server/database/Updater/UpdateFetcher.cpp index 659b919cf3d..fbcb3625a8a 100644 --- a/src/server/database/Updater/UpdateFetcher.cpp +++ b/src/server/database/Updater/UpdateFetcher.cpp @@ -46,9 +46,7 @@ UpdateFetcher::UpdateFetcher(Path const& sourceDirectory, { } -UpdateFetcher::~UpdateFetcher() -{ -} +UpdateFetcher::~UpdateFetcher() = default; UpdateFetcher::LocaleFileStorage UpdateFetcher::GetFileList() const { @@ -80,7 +78,7 @@ void UpdateFetcher::FillFileListRecursively(Path const& path, LocaleFileStorage& // Check for doubled filenames // Because elements are only compared by their filenames, this is ok - if (storage.find(entry) != storage.end()) + if (storage.contains(entry)) { TC_LOG_FATAL("sql.updates", "Duplicate filename \"{}\" occurred. Because updates are ordered " \ "by their filenames, every name needs to be unique!", itr->path().generic_string()); @@ -106,7 +104,7 @@ UpdateFetcher::DirectoryStorage UpdateFetcher::ReceiveIncludedDirectories() cons Field* fields = result->Fetch(); std::string path = fields[0].GetString(); - if (path.substr(0, 1) == "$") + if (path.starts_with("$")) path = _sourceDirectory->generic_string() + path.substr(1); Path const p(path); @@ -117,7 +115,7 @@ UpdateFetcher::DirectoryStorage UpdateFetcher::ReceiveIncludedDirectories() cons continue; } - DirectoryEntry const entry = { p, AppliedFileEntry::StateConvert(fields[1].GetString()) }; + DirectoryEntry const entry = { p, AppliedFileEntry::StateConvert(fields[1].GetStringView()) }; directories.push_back(entry); TC_LOG_TRACE("sql.updates", "Added applied file \"{}\" from remote.", p.filename().generic_string()); @@ -140,7 +138,7 @@ UpdateFetcher::AppliedFileStorage UpdateFetcher::ReceiveAppliedFiles() const Field* fields = result->Fetch(); AppliedFileEntry const entry = { fields[0].GetString(), fields[1].GetString(), - AppliedFileEntry::StateConvert(fields[2].GetString()), fields[3].GetUInt64() }; + AppliedFileEntry::StateConvert(fields[2].GetStringView()), fields[3].GetUInt64() }; map.insert(std::make_pair(entry.name, entry)); } @@ -184,24 +182,26 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks, size_t countArchivedUpdates = 0; // Count updates - for (auto const& entry : applied) - if (entry.second.state == RELEASED) + for (auto const& [_, appliedFile] : applied) + if (appliedFile.state == RELEASED) ++countRecentUpdates; else ++countArchivedUpdates; // Fill hash to name cache HashToFileNameStorage hashToName; - for (auto entry : applied) - hashToName.insert(std::make_pair(entry.second.hash, entry.first)); + for (auto const& [name, appliedFile] : applied) + hashToName.try_emplace(appliedFile.hash, name); size_t importedUpdates = 0; for (auto const& availableQuery : available) { - TC_LOG_DEBUG("sql.updates", "Checking update \"{}\"...", availableQuery.first.filename().generic_string()); + std::string availableQueryFilename = availableQuery.first.filename().string(); + + TC_LOG_DEBUG("sql.updates", "Checking update \"{}\"...", availableQueryFilename); - AppliedFileStorage::const_iterator iter = applied.find(availableQuery.first.filename().string()); + AppliedFileStorage::const_iterator iter = applied.find(availableQueryFilename); if (iter != applied.end()) { // If redundancy is disabled, skip it, because the update is already applied. @@ -234,26 +234,23 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks, if (hashIter != hashToName.end()) { // Check if the original file was removed. If not, we've got a problem. - LocaleFileStorage::const_iterator localeIter; - // Push localeIter forward - for (localeIter = available.begin(); (localeIter != available.end()) && - (localeIter->first.filename().string() != hashIter->second); ++localeIter); + LocaleFileStorage::const_iterator localeIter = available.find(hashIter->second); // Conflict! if (localeIter != available.end()) { - TC_LOG_WARN("sql.updates", ">> It seems like the update \"{}\" \'{}\' was renamed, but the old file is still there! " \ + TC_LOG_WARN("sql.updates", ">> It seems like the update \"{}\" \'{}\' was renamed, but the old file is still there! " "Treating it as a new file! (It is probably an unmodified copy of the file \"{}\")", - availableQuery.first.filename().string(), hash.substr(0, 7), + availableQueryFilename, hash.substr(0, 7), localeIter->first.filename().string()); } // It is safe to treat the file as renamed here else { TC_LOG_INFO("sql.updates", ">> Renaming update \"{}\" to \"{}\" \'{}\'.", - hashIter->second, availableQuery.first.filename().string(), hash.substr(0, 7)); + hashIter->second, availableQueryFilename, hash.substr(0, 7)); - RenameEntry(hashIter->second, availableQuery.first.filename().string()); + RenameEntry(hashIter->second, availableQueryFilename); applied.erase(hashIter->second); continue; } @@ -262,7 +259,7 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks, else { TC_LOG_INFO("sql.updates", ">> Applying update \"{}\" \'{}\'...", - availableQuery.first.filename().string(), hash.substr(0, 7)); + availableQueryFilename, hash.substr(0, 7)); } } // Rehash the update entry if it exists in our database with an empty hash. @@ -270,7 +267,7 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks, { mode = MODE_REHASH; - TC_LOG_INFO("sql.updates", ">> Re-hashing update \"{}\" \'{}\'...", availableQuery.first.filename().string(), + TC_LOG_INFO("sql.updates", ">> Re-hashing update \"{}\" \'{}\'...", availableQueryFilename, hash.substr(0, 7)); } else @@ -278,7 +275,7 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks, // If the hash of the files differs from the one stored in our database, reapply the update (because it changed). if (iter->second.hash != hash) { - TC_LOG_INFO("sql.updates", ">> Reapplying update \"{}\" \'{}\' -> \'{}\' (it changed)...", availableQuery.first.filename().string(), + TC_LOG_INFO("sql.updates", ">> Reapplying update \"{}\" \'{}\' -> \'{}\' (it changed)...", availableQueryFilename, iter->second.hash.substr(0, 7), hash.substr(0, 7)); } else @@ -287,9 +284,9 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks, if (iter->second.state != availableQuery.second) { TC_LOG_DEBUG("sql.updates", ">> Updating the state of \"{}\" to \'{}\'...", - availableQuery.first.filename().string(), AppliedFileEntry::StateConvert(availableQuery.second)); + availableQueryFilename, AppliedFileEntry::StateConvert(availableQuery.second)); - UpdateState(availableQuery.first.filename().string(), availableQuery.second); + UpdateState(availableQueryFilename, availableQuery.second); } TC_LOG_DEBUG("sql.updates", ">> Update is already applied and matches the hash \'{}\'.", hash.substr(0, 7)); @@ -300,7 +297,7 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks, } uint32 speed = 0; - AppliedFileEntry const file = { availableQuery.first.filename().string(), hash, availableQuery.second, 0 }; + AppliedFileEntry const file = { availableQueryFilename, hash, availableQuery.second, 0 }; switch (mode) { @@ -361,8 +358,8 @@ uint32 UpdateFetcher::Apply(Path const& path) const void UpdateFetcher::UpdateEntry(AppliedFileEntry const& entry, uint32 const speed) const { - std::string const update = "REPLACE INTO `updates` (`name`, `hash`, `state`, `speed`) VALUES (\"" + - entry.name + "\", \"" + entry.hash + "\", \'" + entry.GetStateAsString() + "\', " + std::to_string(speed) + ")"; + std::string const update = Trinity::StringFormat(R"(REPLACE INTO `updates` (`name`, `hash`, `state`, `speed`) VALUES ("{}", "{}", '{}', {}))", + entry.name, entry.hash, entry.GetStateAsString(), speed); // Update database _apply(update); @@ -418,7 +415,7 @@ void UpdateFetcher::UpdateState(std::string const& name, State const state) cons _apply(update); } -bool UpdateFetcher::PathCompare::operator()(LocaleFileEntry const& left, LocaleFileEntry const& right) const +std::string UpdateFetcher::PathCompare::MakeComparisonObject(LocaleFileEntry const& arg) { - return left.first.filename().string() < right.first.filename().string(); + return arg.first.filename().string(); } |