From 586e177f98de984eb10f6c7d551f4c25ad953b75 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Sat, 5 Jul 2014 11:33:49 -0700 Subject: [PATCH] Created private utility methods ClearAllGroups and ClearAllGroupLeaders --- common/database.cpp | 42 ++++++++++++++++++++++++++++-------------- common/database.h | 8 ++++++++ 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/common/database.cpp b/common/database.cpp index c80d22a91..0bf5749d2 100644 --- a/common/database.cpp +++ b/common/database.cpp @@ -1770,6 +1770,19 @@ void Database::SetGroupID(const char* name, uint32 id, uint32 charid, uint32 ism LogFile->write(EQEMuLog::Error, "Error adding character to group id: %s", results.ErrorMessage().c_str()); } +void Database::ClearAllGroups(void) +{ + char *query = nullptr; + + auto results = QueryDatabase(query, MakeAnyLenString(&query, "delete from group_id")); + safe_delete_array(query); + + if (!results.Success()) + std::cout << "Unable to clear groups: " << results.ErrorMessage() << std::endl; + + return; +} + void Database::ClearGroup(uint32 gid) { ClearGroupLeader(gid); char *query = nullptr; @@ -1777,17 +1790,11 @@ void Database::ClearGroup(uint32 gid) { if(gid == 0) { //clear all groups - auto results = QueryDatabase(query, MakeAnyLenString(&query, "delete from group_id")); - safe_delete_array(query); - - if (!results.Success()) - std::cout << "Unable to clear groups: " << results.ErrorMessage() << std::endl; - + ClearAllGroups(); return; } //clear a specific group - auto results = QueryDatabase(query, MakeAnyLenString(&query, "delete from group_id where groupid = %lu", (unsigned long)gid)); safe_delete_array(query); @@ -1910,18 +1917,25 @@ char *Database::GetGroupLeadershipInfo(uint32 gid, char* leaderbuf, char* mainta return leaderbuf; } +// Clearing all group leaders +void Database::ClearAllGroupLeaders(void) +{ + char *query = nullptr; + auto results = QueryDatabase(query, MakeAnyLenString(&query, "DELETE from group_leaders")); + safe_delete_array(query); + + if (!results.Success()) + std::cout << "Unable to clear group leaders: " << results.ErrorMessage() << std::endl; + + return; +} + void Database::ClearGroupLeader(uint32 gid) { char *query = nullptr; if(gid == 0) { - //clear all group leaders - auto results = QueryDatabase(query, MakeAnyLenString(&query, "DELETE from group_leaders")); - safe_delete_array(query); - - if (!results.Success()) - std::cout << "Unable to clear group leaders: " << results.ErrorMessage() << std::endl; - + ClearAllGroupLeaders(); return; } diff --git a/common/database.h b/common/database.h index 4d2b15de7..66375fcb6 100644 --- a/common/database.h +++ b/common/database.h @@ -207,6 +207,7 @@ public: char* GetGroupLeadershipInfo(uint32 gid, char* leaderbuf, char* maintank = nullptr, char* assist = nullptr, char* puller = nullptr, char *marknpc = nullptr, GroupLeadershipAA_Struct* GLAA = nullptr); void ClearGroupLeader(uint32 gid = 0); + /* * Raids @@ -262,6 +263,13 @@ private: uint32 varcache_max; VarCache_Struct** varcache_array; uint32 varcache_lastupdate; + + + /* + * Groups, utility methods. + */ + void ClearAllGroupLeaders(); + void ClearAllGroups(); }; bool FetchRowMap(MYSQL_RES *result, std::map &rowmap);