Files
caliverse_server/ServerCommon/Doc/OwnerContents/UgcNpcNicknameRegistryDoc.cs
2025-05-01 07:20:41 +09:00

143 lines
5.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
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 UGC_NPC_META_GUID = System.String;
using ITEM_GUID = System.String;
namespace ServerCommon;
public class UgcNpcNicknameRegistryAttrib : AttribBase
{
[JsonProperty("nickname")]
public string Nickname { get; set; } = string.Empty;
[JsonProperty("ugc_npc_meta_guid")]
public UGC_NPC_META_GUID UgcNpcMetaGuid { get; set; } = string.Empty;
[JsonProperty("owner_guid")]
public OWNER_GUID OwnerGuid { get; set; } = string.Empty;
[JsonProperty("owner_entity_type")]
public OwnerEntityType OwnerEntityType { get; set; } = OwnerEntityType.None;
public UgcNpcNicknameRegistryAttrib()
: base(typeof(UgcNpcNicknameRegistryAttrib).Name)
{ }
}
//=============================================================================================
// Primary Key
// PK(Partition Key) : "ugc_npc_nickname_registry#owner_guid" [owner_guid : user_guid]
// SK(Sort Key) : "ugc_npc_nickname"
// DocType : UgcNpcNicknameRegistryDoc
// UgcNpcNicknameRegistryAttrib : {}
// ...
//=============================================================================================
public class UgcNpcNicknameRegistryDoc : DynamoDbDocBase
{
private static string getPrefixOfPK() { return "ugc_npc_nickname_registry#"; }
private static string getPrefixOfSK() { return ""; }
public UgcNpcNicknameRegistryDoc()
: base(typeof(UgcNpcNicknameRegistryDoc).Name)
{
appendAttribWrapperAll();
}
public UgcNpcNicknameRegistryDoc(OwnerEntityType ownerEntityType, OWNER_GUID ownerGuid, string ugcNpcNickname, UGC_NPC_META_GUID ugcNpcMetaGuid)
: base(typeof(UgcNpcNicknameRegistryDoc).Name)
{
setCombinationKeyForPK(ownerGuid);
setCombinationKeyForSK(ugcNpcNickname);
appendAttribWrapperAll();
fillUpPrimaryKey(onMakePK(), onMakeSK());
var doc_ugc_npc_nickname_registry_attrib = getAttrib<UgcNpcNicknameRegistryAttrib>();
NullReferenceCheckHelper.throwIfNull(doc_ugc_npc_nickname_registry_attrib, () => $"doc_ugc_npc_nickname_registry_attrib is null !!! - ugcNpcNickname:{ugcNpcNickname}, ugcNpcMetaGuid:{ugcNpcMetaGuid}, ownerGuid:{ownerGuid}");
doc_ugc_npc_nickname_registry_attrib.Nickname = ugcNpcNickname;
doc_ugc_npc_nickname_registry_attrib.UgcNpcMetaGuid = ugcNpcMetaGuid;
doc_ugc_npc_nickname_registry_attrib.OwnerEntityType = ownerEntityType;
doc_ugc_npc_nickname_registry_attrib.OwnerGuid = ownerGuid;
setQueryType(QueryType.Insert);
setExceptionHandler(new DynamoDbQueryExceptionNotifier.ExceptionHandler(DynamoDbQueryExceptionNotifier.ConditionalCheckFailed, ServerErrorCode.UgcNpcNicknameDuplicated));
}
private void appendAttribWrapperAll()
{
appendAttribWrapper(new AttribWrapper<UgcNpcNicknameRegistryAttrib>());
}
protected override string onGetPrefixOfPK()
{
return getPrefixOfPK();
}
protected override ServerErrorCode onCheckAndSetSK(string sortKey)
{
getPrimaryKey().fillUpSK(sortKey);
setCombinationKeyForSK(sortKey);
return ServerErrorCode.Success;
}
public static async Task<(Result, UgcNpcNicknameRegistryAttrib?)> findNickname(OWNER_GUID ownerGuid, string toCheckNickname)
{
var result = new Result();
var server_logic = ServerLogicApp.getServerLogicApp();
var dynamo_db_client = server_logic.getDynamoDbClient();
(result, var make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey<UgcNpcNicknameRegistryDoc>(ownerGuid, toCheckNickname);
if(result.isFail())
{
return (result, null);
}
NullReferenceCheckHelper.throwIfNull(make_primary_key, () => $"make_primary_key is null !!! - toCheckNickname:{toCheckNickname}, ownerGuid:{ownerGuid}");
var query_config = dynamo_db_client.makeQueryConfigForReadByPKSK(make_primary_key.PK, make_primary_key.SK);
(result, var found_nicknames) = await dynamo_db_client.simpleQueryDocTypesWithQueryOperationConfig<UgcNpcNicknameRegistryDoc>(query_config);
if (result.isFail())
{
return (result, null);
}
if(found_nicknames.Count == 0)
{
result.setFail(ServerErrorCode.TargetUserNotFound);
return (result, null);
}
var nickname_attrib = found_nicknames[0].getAttrib<UgcNpcNicknameRegistryAttrib>();
if (nickname_attrib == null)
{
result.setFail(ServerErrorCode.AttribNotFound);
return (result, null);
}
return (result, nickname_attrib);
}
}