Files
caliverse_server/BrokerApiCore/Repository/UserBaseDocRepo.cs
2025-05-01 07:20:41 +09:00

68 lines
2.8 KiB
C#

using ServerCommon;
namespace BrokerCore.Repository;
using ServerCore; using ServerBase;
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<UserBaseDoc>(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<UserBaseDoc>(config);
return await m_dynamo_db_client.simpleQueryDocTypeWithQueryOperationConfig<UserBaseDoc>(config);
}
public async Task<(Result, UserBaseAttrib?)> findUserBaseAttrib(string userGuid)
{
var (result, doc) = await findUserBaseDoc(userGuid);
return (result, doc?.getAttrib<UserBaseAttrib>());
}
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<Result> insertUserBaseDoc(UserBaseAttrib userAttrib)
// {
// var user_doc = new UserBaseDoc(userAttrib.UserGuid);
// var user_attrib = user_doc.getAttrib<UserBaseAttrib>();
// 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);
// }
}