66 lines
2.8 KiB
C#
66 lines
2.8 KiB
C#
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<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);
|
|
// }
|
|
}
|