초기커밋
This commit is contained in:
297
ServerCommon/Helper/EntitySearchHelper.cs
Normal file
297
ServerCommon/Helper/EntitySearchHelper.cs
Normal file
@@ -0,0 +1,297 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
using ServerCore;
|
||||
using ServerBase;
|
||||
|
||||
|
||||
|
||||
using SESSION_ID = System.Int32;
|
||||
using META_ID = System.UInt32;
|
||||
using ENTITY_GUID = System.String;
|
||||
using ACCOUNT_ID = System.String;
|
||||
using OWNER_GUID = System.String;
|
||||
using USER_GUID = System.String;
|
||||
using CHARACTER_GUID = System.String;
|
||||
using ITEM_GUID = System.String;
|
||||
using NICKNAME = System.String;
|
||||
|
||||
|
||||
|
||||
namespace ServerCommon;
|
||||
|
||||
public class UserByAccountIdResult
|
||||
{
|
||||
public string UserGuid { get; set; } = null!;
|
||||
public string Nickname { get; set; } = null!;
|
||||
}
|
||||
|
||||
public class UserInfoByUserNickname
|
||||
{
|
||||
public USER_GUID UserGuid { get; set; } = string.Empty;
|
||||
public NICKNAME UserNickname { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class UgcNpcInfoByUgcNpcNickname
|
||||
{
|
||||
public UgcNpcAttrib UgcNpcAttrib { get; set; } = null!;
|
||||
}
|
||||
|
||||
public static class EntitySearchHelper
|
||||
{
|
||||
public static async Task<(Result, UserByAccountIdResult?)> findUserByAccountId(DynamoDbClient dynamoDbClient, ACCOUNT_ID accountId, string tryUserEmailId)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
if(true == accountId.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"Invalid AccountId !!! - tryUserEmailId:{tryUserEmailId}";
|
||||
result.setFail(ServerErrorCode.AccountIdInvalid, err_msg);
|
||||
Log.getLogger(result.toBasicString());
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
|
||||
(result, var found_account_doc) = await AccountBaseDoc.findUserGuidFromAccountId(dynamoDbClient, accountId);
|
||||
if(result.isFail())
|
||||
{
|
||||
return (result, null);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(found_account_doc, () => $"found_account_doc is null !!! - AccountId:{accountId}, tryUserEmailId:{tryUserEmailId}");
|
||||
|
||||
var doc_account_base_attrib = found_account_doc.getAttrib<AccountBaseAttrib>();
|
||||
NullReferenceCheckHelper.throwIfNull(doc_account_base_attrib, () => $"doc_account_base_attrib is null !!! - AccountId:{accountId}, tryUserEmailId:{tryUserEmailId}");
|
||||
|
||||
var user_guid = doc_account_base_attrib.UserGuid;
|
||||
if (true == user_guid.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"Account without UserGuid !!! - AccountId:{accountId}, tryUserEmailId:{tryUserEmailId}";
|
||||
result.setFail(ServerErrorCode.AccountWithoutUserGuid, err_msg);
|
||||
Log.getLogger(result.toBasicString());
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
|
||||
string found_nickname = string.Empty;
|
||||
(result, var found_nickname_attrib) = await NicknameDoc.findNicknameFromGuid(dynamoDbClient, user_guid);
|
||||
if(result.isFail())
|
||||
{
|
||||
return (result, null);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(found_nickname_attrib, () => $"found_nickname_attrib is null !!!, userGuid:{user_guid} - AccountId:{accountId}, tryUserEmailId:{tryUserEmailId}");
|
||||
found_nickname = found_nickname_attrib.Nickname;
|
||||
|
||||
return (result, new UserByAccountIdResult
|
||||
{
|
||||
UserGuid = user_guid,
|
||||
Nickname = found_nickname,
|
||||
});
|
||||
}
|
||||
|
||||
public static async Task<(Result, List<UgcNpcAttrib>?)> findUgcNpcAttribAllByUserGuid(DynamoDbClient dynamoDbClient, USER_GUID userGuid, string tryUserEmailId)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
if (true == userGuid.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"Invalid UserGuid !!! - tryUserEmailId:{tryUserEmailId}";
|
||||
result.setFail(ServerErrorCode.UserGuidInvalid, err_msg);
|
||||
Log.getLogger(result.toBasicString());
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
|
||||
(result, var make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey<UgcNpcDoc>(userGuid);
|
||||
if (result.isFail())
|
||||
{
|
||||
return (result, null);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(make_primary_key, () => $"make_primary_key is null !!! - UserGuid:{userGuid}, tryUserEmailId:{tryUserEmailId}");
|
||||
var query_config = dynamoDbClient.makeQueryConfigForReadByPKOnly(make_primary_key.PK);
|
||||
|
||||
(result, var found_ugc_npc_docs) = await dynamoDbClient.simpleQueryDocTypesWithQueryOperationConfig<UgcNpcDoc>(query_config);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to simpleQueryDocTypeWithQueryOperationConfig() !!! : {result.toBasicString()}, {make_primary_key.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
|
||||
var found_ugc_npc_attribs = new List<UgcNpcAttrib>();
|
||||
|
||||
foreach(var doc in found_ugc_npc_docs)
|
||||
{
|
||||
var ugc_npc_attrib = doc.getAttrib<UgcNpcAttrib>();
|
||||
NullReferenceCheckHelper.throwIfNull(ugc_npc_attrib, () => $"ugc_npc_attrib is null !!! - UserGuid:{userGuid}, tryUserEmailId:{tryUserEmailId}");
|
||||
|
||||
found_ugc_npc_attribs.Add(ugc_npc_attrib);
|
||||
}
|
||||
|
||||
return (result, found_ugc_npc_attribs);
|
||||
}
|
||||
|
||||
public static async Task<(Result, UserInfoByUserNickname?)> findUserInfoByUserNickname(DynamoDbClient dynamoDbClient, NICKNAME userNickname)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
if (true == userNickname.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"Empty UserNickname !!!";
|
||||
result.setFail(ServerErrorCode.UserNicknameEmpty, err_msg);
|
||||
Log.getLogger(result.toBasicString());
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
|
||||
(result, var make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey<UserNicknameRegistryDoc>(DynamoDbClient.PK_GLOBAL, userNickname);
|
||||
if (result.isFail())
|
||||
{
|
||||
return (result, null);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(make_primary_key, () => $"make_primary_key is null !!! - userNickname:{userNickname}");
|
||||
var query_config = dynamoDbClient.makeQueryConfigForReadByPKSK(make_primary_key.PK, make_primary_key.SK);
|
||||
|
||||
(result, var found_user_nickname_doc) = await dynamoDbClient.simpleQueryDocTypeWithQueryOperationConfig<UserNicknameRegistryDoc>(query_config);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to simpleQueryDocTypeWithQueryOperationConfig() !!! : {result.toBasicString()}, {make_primary_key.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(found_user_nickname_doc, () => $"found_user_nickname_doc is null !!! - userNickname:{userNickname}");
|
||||
|
||||
var user_nickname_registry_attrib = found_user_nickname_doc.getAttrib<UserNicknameRegistryAttrib>();
|
||||
NullReferenceCheckHelper.throwIfNull(user_nickname_registry_attrib, () => $"user_nickname_registry_attrib is null !!! - userNickname:{userNickname}");
|
||||
|
||||
var searched_result = new UserInfoByUserNickname();
|
||||
|
||||
searched_result.UserNickname = user_nickname_registry_attrib.Nickname;
|
||||
searched_result.UserGuid = user_nickname_registry_attrib.UserGuid;
|
||||
|
||||
return (result, searched_result);
|
||||
}
|
||||
|
||||
public static async Task<(Result, UgcNpcInfoByUgcNpcNickname?)> findUgcNpcInfoByUgcNpcNickname( DynamoDbClient dynamoDbClient
|
||||
, OwnerEntityType ownerEntityType, OWNER_GUID ownerGuid
|
||||
, NICKNAME ugcNpcNickname )
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
if (true == ugcNpcNickname.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"Empty UgcNpcNickname !!!";
|
||||
result.setFail(ServerErrorCode.UgcNpcNicknameEmpty, err_msg);
|
||||
Log.getLogger(result.toBasicString());
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
|
||||
UgcNpcNicknameRegistryDoc? found_ugc_nickname_registry_doc = null;
|
||||
{
|
||||
(result, var make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey<UgcNpcNicknameRegistryDoc>(ownerGuid, ugcNpcNickname);
|
||||
if (result.isFail())
|
||||
{
|
||||
return (result, null);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(make_primary_key, () => $"make_primary_key is null !!! - userGuid:{ownerGuid}, userNickname:{ugcNpcNickname}");
|
||||
|
||||
var query_config = dynamoDbClient.makeQueryConfigForReadByPKSK(make_primary_key.PK, make_primary_key.SK);
|
||||
(result, found_ugc_nickname_registry_doc) = await dynamoDbClient.simpleQueryDocTypeWithQueryOperationConfig<UgcNpcNicknameRegistryDoc>(query_config);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to simpleQueryDocTypeWithQueryOperationConfig() !!! : {result.toBasicString()}, {make_primary_key.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(found_ugc_nickname_registry_doc, () => $"found_ugc_nickname_registry_doc is null !!! - userGuid:{ownerGuid}, userNickname:{ugcNpcNickname}");
|
||||
}
|
||||
var ugc_npc_nickname_registry_attrib = found_ugc_nickname_registry_doc.getAttrib<UgcNpcNicknameRegistryAttrib>();
|
||||
NullReferenceCheckHelper.throwIfNull(ugc_npc_nickname_registry_attrib, () => $"ugc_npc_nickname_registry_attrib is null !!! - userGuid:{ownerGuid}, userNickname:{ugcNpcNickname}");
|
||||
|
||||
UgcNpcDoc? found_ugc_npc_doc = null;
|
||||
{
|
||||
(result, var make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey<UgcNpcDoc>(ownerGuid, ugc_npc_nickname_registry_attrib.UgcNpcMetaGuid);
|
||||
if (result.isFail())
|
||||
{
|
||||
return (result, null);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(make_primary_key, () => $"make_primary_key is null !!! - userGuid:{ownerGuid}, userNickname:{ugcNpcNickname}");
|
||||
|
||||
var query_config = dynamoDbClient.makeQueryConfigForReadByPKSK(make_primary_key.PK, make_primary_key.SK);
|
||||
(result, found_ugc_npc_doc) = await dynamoDbClient.simpleQueryDocTypeWithQueryOperationConfig<UgcNpcDoc>(query_config);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to simpleQueryDocTypeWithQueryOperationConfig() !!! : {result.toBasicString()}, {make_primary_key.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(found_ugc_npc_doc, () => $"found_ugc_npc_doc is null !!! - userGuid:{ownerGuid}, userNickname:{ugcNpcNickname}");
|
||||
}
|
||||
var ugc_npc_attrib = found_ugc_npc_doc.getAttrib<UgcNpcAttrib>();
|
||||
NullReferenceCheckHelper.throwIfNull(ugc_npc_attrib, () => $"ugc_npc_attrib is null !!! - userGuid:{ownerGuid}, userNickname:{ugcNpcNickname}");
|
||||
|
||||
var searched_result = new UgcNpcInfoByUgcNpcNickname();
|
||||
if(null != ugc_npc_attrib)
|
||||
{
|
||||
searched_result.UgcNpcAttrib = ugc_npc_attrib;
|
||||
}
|
||||
|
||||
return (result, searched_result);
|
||||
}
|
||||
|
||||
public static async Task<(Result, MoneyAttrib?)> findUserMoneyByUserGuid(DynamoDbClient dynamoDbClient, USER_GUID userGuid)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
if (true == userGuid.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"Invalid UserGuid !!!";
|
||||
result.setFail(ServerErrorCode.UserGuidInvalid, err_msg);
|
||||
Log.getLogger(result.toBasicString());
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
|
||||
(result, var make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey<MoneyDoc>(userGuid);
|
||||
if (result.isFail())
|
||||
{
|
||||
return (result, null);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(make_primary_key, () => $"make_primary_key is null !!! - userGuid:{userGuid}");
|
||||
var query_config = dynamoDbClient.makeQueryConfigForReadByPKOnly(make_primary_key.PK);
|
||||
|
||||
(result, var found_money_doc) = await dynamoDbClient.simpleQueryDocTypeWithQueryOperationConfig<MoneyDoc>(query_config);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to simpleQueryDocTypeWithQueryOperationConfig() !!! : {result.toBasicString()}, {make_primary_key.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(found_money_doc, () => $"found_money_doc is null !!! - userGuid:{userGuid}");
|
||||
|
||||
var money_attrib = found_money_doc.getAttrib<MoneyAttrib>();
|
||||
if(money_attrib == null)
|
||||
{
|
||||
err_msg = $"money_attrib is null !!! - UserGuid:{userGuid} !!! {result.toBasicString()}, {make_primary_key.toBasicString()}";
|
||||
result.setFail(ServerErrorCode.UserMoneyDocEmpty, err_msg);
|
||||
Log.getLogger().error(err_msg);
|
||||
return (result, null);
|
||||
}
|
||||
|
||||
return (result, money_attrib);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user