using ServerCommon; using ServerBase; using ServerCore; namespace BrokerApiCore; public class UserBaseDocRepo { private readonly DynamoDbClient m_dynamo_db_client; public UserBaseDocRepo(DynamoDbClient dynamoDbClient) { this.m_dynamo_db_client = dynamoDbClient; } public async Task<(Result, UserBaseDoc?)> findUserBaseDoc(string userGuid) { var (result, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); if (result.isFail() || primary_key_object == null) { return (result, null); } var config = m_dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); // var (result, user_doc) = await m_dynamoDbClient.simpleQueryDocTypeWithQueryOperationConfig(config); return await m_dynamo_db_client.simpleQueryDocTypeWithQueryOperationConfig(config); } public async Task<(Result, UserBaseAttrib?)> findUserBaseAttrib(string userGuid) { var (result, doc) = await findUserBaseDoc(userGuid); return (result, doc?.getAttrib()); } public async Task<(Result, string)> findNickname(string userGuid) { var (result, found_nickname_attrib) = await NicknameDoc.findNicknameFromGuid(m_dynamo_db_client, userGuid); if(result.isFail()) { return (result, string.Empty); } NullReferenceCheckHelper.throwIfNull(found_nickname_attrib, () => $"found_nickname_attrib is null !!!, userGuid:{userGuid}"); return (result, found_nickname_attrib.Nickname); } //=================================================================================================== // 로그아웃 여부만 체크 // TODO: 레디스 캐시를 이용하여 로그인 여부를 체크하는 것이 더 효율적일 수 있음 //=================================================================================================== public bool isUserLoggedIn(UserBaseAttrib userAttrib) { return userAttrib.GameLoginDateTime > userAttrib.GameLogoutDateTime; } // public async Task insertUserBaseDoc(UserBaseAttrib userAttrib) // { // var user_doc = new UserBaseDoc(userAttrib.UserGuid); // var user_attrib = user_doc.getAttrib(); // NullReferenceCheckHelper.throwIfNull(user_attrib, () => $"insertUserBaseDoc : user_attrib is null !!! - {userAttrib.UserGuid}"); // user_attrib.UserGuid = userAttrib.UserGuid; // user_attrib.AccountId = userAttrib.AccountId; // user_attrib.EOA = userAttrib.EOA; // user_attrib.SelectedCharacterGuid = userAttrib.SelectedCharacterGuid; // user_attrib.IsIntroCompleted = userAttrib.IsIntroCompleted; // return await m_dynamoDbClient.simpleInsertDocumentWithDocType(user_doc); // } }