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(); 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()); } 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(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(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(); if (nickname_attrib == null) { result.setFail(ServerErrorCode.AttribNotFound); return (result, null); } return (result, nickname_attrib); } }