diff --git a/common/shareddb.cpp b/common/shareddb.cpp index 4cbfea652..d24104a72 100644 --- a/common/shareddb.cpp +++ b/common/shareddb.cpp @@ -1470,10 +1470,8 @@ bool SharedDatabase::GetCommandSettings(std::map> &injected, const std::vector &orphaned) +bool SharedDatabase::UpdateInjectedCommandSettings(const std::vector> &injected) { - bool return_value = true; - if (injected.size()) { std::string query = fmt::format( @@ -1486,7 +1484,7 @@ bool SharedDatabase::UpdateCommandSettings(const std::vector &orphaned) +{ if (orphaned.size()) { std::string query = fmt::format( @@ -1505,7 +1508,7 @@ bool SharedDatabase::UpdateCommandSettings(const std::vector>> &command_settings); - bool UpdateCommandSettings(const std::vector> &injected, const std::vector &orphaned); + bool UpdateInjectedCommandSettings(const std::vector> &injected); + bool UpdateOrphanedCommandSettings(const std::vector &orphaned); uint32 GetTotalTimeEntitledOnAccount(uint32 AccountID); void SetMailKey(int CharID, int IPAddress, int MailKey); std::string GetMailKey(int CharID, bool key_only = false); diff --git a/zone/bot_command.cpp b/zone/bot_command.cpp index 656a1131a..391f55dd7 100644 --- a/zone/bot_command.cpp +++ b/zone/bot_command.cpp @@ -1429,6 +1429,26 @@ int bot_command_init(void) std::vector> injected_bot_command_settings; std::vector orphaned_bot_command_settings; + for (auto bcs_iter : bot_command_settings) { + + auto bcl_iter = bot_command_list.find(bcs_iter.first); + if (bcl_iter == bot_command_list.end()) { + + orphaned_bot_command_settings.push_back(bcs_iter.first); + Log(Logs::General, + Logs::Status, + "Bot Command '%s' no longer exists... Deleting orphaned entry from `bot_command_settings` table...", + bcs_iter.first.c_str() + ); + } + } + + if (orphaned_bot_command_settings.size()) { + if (!database.botdb.UpdateOrphanedBotCommandSettings(orphaned_bot_command_settings)) { + Log(Logs::General, Logs::Zone_Server, "Failed to process 'Orphaned Bot Commands' update operation."); + } + } + auto working_bcl = bot_command_list; for (auto working_bcl_iter : working_bcl) { @@ -1493,23 +1513,11 @@ int bot_command_init(void) } } - for (auto bcs_iter : bot_command_settings) { - - auto bcl_iter = bot_command_list.find(bcs_iter.first); - if (bcl_iter == bot_command_list.end()) { - - orphaned_bot_command_settings.push_back(bcs_iter.first); - Log(Logs::General, - Logs::Status, - "Bot Command '%s' no longer exists... Deleting orphaned entry from `bot_command_settings` table...", - bcs_iter.first.c_str() - ); + if (injected_bot_command_settings.size()) { + if (!database.botdb.UpdateInjectedBotCommandSettings(injected_bot_command_settings)) { + Log(Logs::General, Logs::Zone_Server, "Failed to process 'Injected Bot Commands' update operation."); } } - - if (injected_bot_command_settings.size() || orphaned_bot_command_settings.size()) { - database.botdb.UpdateBotCommandSettings(injected_bot_command_settings, orphaned_bot_command_settings); - } bot_command_dispatch = bot_command_real_dispatch; diff --git a/zone/bot_database.cpp b/zone/bot_database.cpp index 80c422c08..db2f2018b 100644 --- a/zone/bot_database.cpp +++ b/zone/bot_database.cpp @@ -54,10 +54,8 @@ bool BotDatabase::LoadBotCommandSettings(std::map> &injected, const std::vector &orphaned) +bool BotDatabase::UpdateInjectedBotCommandSettings(const std::vector> &injected) { - bool return_value = true; - if (injected.size()) { query = fmt::format( @@ -70,7 +68,7 @@ bool BotDatabase::UpdateBotCommandSettings(const std::vector &orphaned) +{ if (orphaned.size()) { query = fmt::format( @@ -89,7 +92,7 @@ bool BotDatabase::UpdateBotCommandSettings(const std::vector>> &bot_command_settings); - bool UpdateBotCommandSettings(const std::vector> &injected, const std::vector &orphaned); + bool UpdateInjectedBotCommandSettings(const std::vector> &injected); + bool UpdateOrphanedBotCommandSettings(const std::vector &orphaned); bool LoadBotSpellCastingChances(); diff --git a/zone/command.cpp b/zone/command.cpp index 2a0a07408..db9cd5524 100755 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -456,6 +456,26 @@ int command_init(void) std::vector> injected_command_settings; std::vector orphaned_command_settings; + for (auto cs_iter : command_settings) { + + auto cl_iter = commandlist.find(cs_iter.first); + if (cl_iter == commandlist.end()) { + + orphaned_command_settings.push_back(cs_iter.first); + Log(Logs::General, + Logs::Status, + "Command '%s' no longer exists... Deleting orphaned entry from `command_settings` table...", + cs_iter.first.c_str() + ); + } + } + + if (orphaned_command_settings.size()) { + if (!database.UpdateOrphanedCommandSettings(orphaned_command_settings)) { + Log(Logs::General, Logs::Zone_Server, "Failed to process 'Orphaned Commands' update operation."); + } + } + auto working_cl = commandlist; for (auto working_cl_iter : working_cl) { @@ -520,24 +540,12 @@ int command_init(void) } } - for (auto cs_iter : command_settings) { - - auto cl_iter = commandlist.find(cs_iter.first); - if (cl_iter == commandlist.end()) { - - orphaned_command_settings.push_back(cs_iter.first); - Log(Logs::General, - Logs::Status, - "Command '%s' no longer exists... Deleting orphaned entry from `command_settings` table...", - cs_iter.first.c_str() - ); + if (injected_command_settings.size()) { + if (!database.UpdateInjectedCommandSettings(injected_command_settings)) { + Log(Logs::General, Logs::Zone_Server, "Failed to process 'Injected Commands' update operation."); } } - if (injected_command_settings.size() || orphaned_command_settings.size()) { - database.UpdateCommandSettings(injected_command_settings, orphaned_command_settings); - } - command_dispatch = command_realdispatch; return commandcount;