/* * Copyright (C) 2016+ AzerothCore , released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 */ #include "ProgressionSystem.h" #include "DBUpdater.h" inline std::vector GetDatabaseDirectories(std::string const& folderName) { std::vector directories; std::string const path = "/modules/mod-progression-system/src/Bracket_"; for (std::string const& bracketName : ProgressionBracketsNames) { if (!(sConfigMgr->GetOption("ProgressionSystem.Bracket_" + bracketName, false))) { continue; } std::string bracketPath = path + bracketName + "/sql/" + folderName; directories.push_back(std::move(bracketPath)); } return directories; } class ProgressionSystemLoadingDBUpdates : public DatabaseScript { public: ProgressionSystemLoadingDBUpdates() : DatabaseScript("ProgressionSystemLoadingDBUpdates") {} void OnAfterDatabasesLoaded(uint32 updateFlags) override { LOG_INFO("server.server", "Loading mod-progression-system updates..."); if (DBUpdater::IsEnabled(LoginDatabase, updateFlags)) { if (sConfigMgr->GetOption("ProgressionSystem.ReapplyUpdates", false)) { LoginDatabase.Query("DELETE FROM updates WHERE name LIKE '%progression%'"); } std::vector loginDatabaseDirectories = GetDatabaseDirectories("auth"); if (!loginDatabaseDirectories.empty()) { DBUpdater::Update(LoginDatabase, &loginDatabaseDirectories); } } if (DBUpdater::IsEnabled(CharacterDatabase, updateFlags)) { if (sConfigMgr->GetOption("ProgressionSystem.ReapplyUpdates", false)) { CharacterDatabase.Query("DELETE FROM updates WHERE name LIKE '%progression%'"); } std::vector charactersDatabaseDirectories = GetDatabaseDirectories("characters"); if (!charactersDatabaseDirectories.empty()) { DBUpdater::Update(CharacterDatabase, &charactersDatabaseDirectories); } } if (DBUpdater::IsEnabled(WorldDatabase, updateFlags)) { if (sConfigMgr->GetOption("ProgressionSystem.ReapplyUpdates", false)) { WorldDatabase.Query("DELETE FROM updates WHERE name LIKE '%progression%'"); } std::vector worldDatabaseDirectories = GetDatabaseDirectories("world"); if (!worldDatabaseDirectories.empty()) { DBUpdater::Update(WorldDatabase, &worldDatabaseDirectories); } } } }; void AddProgressionSystemScripts() { if (sConfigMgr->GetOption("ProgressionSystem.LoadDatabase", true)) { new ProgressionSystemLoadingDBUpdates(); } }