diff options
| author | Shauren <shauren.trinity@gmail.com> | 2020-07-30 17:41:20 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-01-24 13:38:40 +0100 |
| commit | 54a6e603ffc8b4913669cf0f189a966d25b620d8 (patch) | |
| tree | 3b0f83d7e12a899113715cb018c4c2b9315141ed /src/server/game/Accounts/AccountMgr.cpp | |
| parent | 1977d26050d1b0c6f2d21fe3316147ae0df9fc64 (diff) | |
Core/Misc: Replace database query in WorldSession::HandleAddFriendOpcode with async version
(cherry picked from commit 2f0893d279ddab86ae7c3e4fd1d7a47b15e938f7)
Diffstat (limited to 'src/server/game/Accounts/AccountMgr.cpp')
| -rw-r--r-- | src/server/game/Accounts/AccountMgr.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/server/game/Accounts/AccountMgr.cpp b/src/server/game/Accounts/AccountMgr.cpp index 7fc2a303926..2875a08179c 100644 --- a/src/server/game/Accounts/AccountMgr.cpp +++ b/src/server/game/Accounts/AccountMgr.cpp @@ -314,23 +314,25 @@ uint32 AccountMgr::GetId(std::string const& username) return (result) ? (*result)[0].GetUInt32() : 0; } -uint32 AccountMgr::GetSecurity(uint32 accountId) +uint32 AccountMgr::GetSecurity(uint32 accountId, int32 realmId) { - LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_ACCOUNT_ACCESS_GMLEVEL); + LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_GMLEVEL_BY_REALMID); stmt->setUInt32(0, accountId); + stmt->setInt32(1, realmId); PreparedQueryResult result = LoginDatabase.Query(stmt); return (result) ? (*result)[0].GetUInt8() : uint32(SEC_PLAYER); } -uint32 AccountMgr::GetSecurity(uint32 accountId, int32 realmId) +QueryCallback AccountMgr::GetSecurityAsync(uint32 accountId, int32 realmId, std::function<void(uint32)> callback) { LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_GMLEVEL_BY_REALMID); stmt->setUInt32(0, accountId); stmt->setInt32(1, realmId); - PreparedQueryResult result = LoginDatabase.Query(stmt); - - return (result) ? (*result)[0].GetUInt8() : uint32(SEC_PLAYER); + return LoginDatabase.AsyncQuery(stmt).WithPreparedCallback([callback = std::move(callback)](PreparedQueryResult result) + { + callback(result ? uint32((*result)[0].GetUInt8()) : uint32(SEC_PLAYER)); + }); } bool AccountMgr::GetName(uint32 accountId, std::string& name) @@ -580,7 +582,7 @@ bool AccountMgr::HasPermission(uint32 accountId, uint32 permissionId, uint32 rea return false; } - rbac::RBACData rbac(accountId, "", realmId, GetSecurity(accountId)); + rbac::RBACData rbac(accountId, "", realmId, GetSecurity(accountId, realmId)); rbac.LoadFromDB(); bool hasPermission = rbac.HasPermission(permissionId); |
