From b99426b631e952f309dce39c7b27e67bfc0cb859 Mon Sep 17 00:00:00 2001 From: sogladev Date: Sun, 5 Apr 2026 16:14:49 +0200 Subject: [PATCH] fix(Core/DB): Improve module directory matching for DB updates (#25372) --- src/server/database/Updater/DBUpdater.cpp | 9 ++++--- src/server/database/Updater/UpdateFetcher.cpp | 26 ++++++++++++++----- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/server/database/Updater/DBUpdater.cpp b/src/server/database/Updater/DBUpdater.cpp index 4e06beb48..2d023faed 100644 --- a/src/server/database/Updater/DBUpdater.cpp +++ b/src/server/database/Updater/DBUpdater.cpp @@ -93,7 +93,8 @@ bool DBUpdater::IsEnabled(uint32 const updateMask) template<> std::string DBUpdater::GetDBModuleName() { - return "db-auth"; + // must be lowercase + return "auth"; } // World Database @@ -125,7 +126,8 @@ bool DBUpdater::IsEnabled(uint32 const updateMask) template<> std::string DBUpdater::GetDBModuleName() { - return "db-world"; + // must be lowercase + return "world"; } // Character Database @@ -157,7 +159,8 @@ bool DBUpdater::IsEnabled(uint32 const updateMask) template<> std::string DBUpdater::GetDBModuleName() { - return "db-characters"; + // must be lowercase + return "characters"; } // All diff --git a/src/server/database/Updater/UpdateFetcher.cpp b/src/server/database/Updater/UpdateFetcher.cpp index b3a7eaa86..f21841c0b 100644 --- a/src/server/database/Updater/UpdateFetcher.cpp +++ b/src/server/database/Updater/UpdateFetcher.cpp @@ -160,18 +160,30 @@ UpdateFetcher::DirectoryStorage UpdateFetcher::ReceiveIncludedDirectories() cons moduleList.emplace_back(itr); // data/sql - for (auto const& itr : moduleList) + for (auto const& moduleName : moduleList) { - std::string path = _sourceDirectory->generic_string() + "/modules/" + itr + "/data/sql/" + _dbModuleName; // modules/mod-name/data/sql/db-world - - Path const p(path); + std::string path = _sourceDirectory->generic_string() + "/modules/" + moduleName + "/data/sql/"; // modules/mod-name/data/sql/ + Path const p{path}; if (!is_directory(p)) continue; - DirectoryEntry const entry = { p, AppliedFileEntry::StateConvert("MODULE") }; - directories.push_back(entry); + directory_iterator const end; + for (directory_iterator itr{p}; itr != end; ++itr) + { + if (!is_directory(itr->path())) + continue; - LOG_TRACE("sql.updates", "Added applied modules file \"{}\" from remote.", p.filename().generic_string()); + std::filesystem::path dirPath = itr->path(); // modules/mod-name/data/sql/db-world + std::string dirName = dirPath.filename().string(); // db-world + + if (dirName.find(_dbModuleName) == std::string::npos) + continue; + + DirectoryEntry const entry = { dirPath, AppliedFileEntry::StateConvert("MODULE") }; + directories.push_back(entry); + + LOG_TRACE("sql.updates", "Added applied modules file \"{}\" from remote.", dirPath.filename().generic_string()); + } } }