127 lines
3.9 KiB
C#
127 lines
3.9 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 ITEM_GUID = System.String;
|
|
using NICKNAME = System.String;
|
|
|
|
|
|
|
|
namespace ServerCommon;
|
|
|
|
public class NicknameAttrib : AttribBase
|
|
{
|
|
[JsonProperty("owner_guid")]
|
|
public OWNER_GUID OwnerGuid { get; set; } = string.Empty;
|
|
|
|
[JsonProperty("owner_entity_type")]
|
|
public OwnerEntityType OwnerEntityType { get; set; } = OwnerEntityType.None;
|
|
|
|
[JsonProperty("nickname")]
|
|
public string Nickname { get; set; } = string.Empty;
|
|
|
|
public NicknameAttrib()
|
|
: base(typeof(NicknameAttrib).Name)
|
|
{ }
|
|
}
|
|
|
|
//=============================================================================================
|
|
// PK(Partition Key) : "nickname#owner_guid"
|
|
// SK(Sort Key) : ""
|
|
// DocType : NicknameDoc
|
|
// NicknameAttrib : {}
|
|
// ...
|
|
//=============================================================================================
|
|
public class NicknameDoc : DynamoDbDocBase
|
|
{
|
|
private static string getPrefixOfPK() { return "nickname#"; }
|
|
private static string getPrefixOfSK() { return ""; }
|
|
|
|
public NicknameDoc()
|
|
: base(typeof(NicknameDoc).Name)
|
|
{
|
|
appendAttribWrapperAll();
|
|
}
|
|
|
|
public NicknameDoc(OwnerEntityType ownerEntityType, OWNER_GUID ownerGuid, NICKNAME nickname)
|
|
: base(typeof(NicknameDoc).Name)
|
|
{
|
|
setCombinationKeyForPK(ownerGuid);
|
|
|
|
appendAttribWrapperAll();
|
|
|
|
fillUpPrimaryKey(onMakePK(), onMakeSK());
|
|
|
|
var nickname_attrib = getAttrib<NicknameAttrib>();
|
|
ArgumentNullException.ThrowIfNull(nickname_attrib, $"nickname_attrib is null !!! - ownerEntityType:{ownerEntityType}, ownerGuid:{ownerGuid}, nickname:{nickname}");
|
|
|
|
nickname_attrib.OwnerEntityType = ownerEntityType;
|
|
nickname_attrib.OwnerGuid = ownerGuid;
|
|
nickname_attrib.Nickname = nickname;
|
|
}
|
|
|
|
private void appendAttribWrapperAll()
|
|
{
|
|
appendAttribWrapper(new AttribWrapper<NicknameAttrib>());
|
|
}
|
|
|
|
protected override string onGetPrefixOfPK()
|
|
{
|
|
return getPrefixOfPK();
|
|
}
|
|
|
|
public static async Task<(Result result, NicknameAttrib? attrib)> findNicknameFromGuid(string ownerGuid)
|
|
{
|
|
var server_logic = ServerLogicApp.getServerLogicApp();
|
|
NullReferenceCheckHelper.throwIfNull(server_logic, () => $"server_logic is null !!!");
|
|
var dynamo_db_client = server_logic.getDynamoDbClient();
|
|
NullReferenceCheckHelper.throwIfNull(dynamo_db_client, () => $"dynamo_db_client is null !!!");
|
|
|
|
return await findNicknameFromGuid(dynamo_db_client, ownerGuid);
|
|
}
|
|
|
|
public static async Task<(Result result, NicknameAttrib? attrib)> findNicknameFromGuid(DynamoDbClient dynamoDbClient, string ownerGuid)
|
|
{
|
|
var result = new Result();
|
|
var nickname_docs = new List<NicknameDoc>();
|
|
|
|
(result, var make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey<NicknameDoc>(ownerGuid);
|
|
if (result.isFail())
|
|
{
|
|
return (result, null);
|
|
}
|
|
ArgumentNullReferenceCheckHelper.throwIfNull(make_primary_key, () => $"make_primary_key is null !!!");
|
|
var query_config = dynamoDbClient.makeQueryConfigForReadByPKSK(make_primary_key.PK, make_primary_key.SK);
|
|
|
|
(result, nickname_docs) = await dynamoDbClient.simpleQueryDocTypesWithQueryOperationConfig<NicknameDoc>(query_config, true);
|
|
if (result.isFail())
|
|
{
|
|
return (result, null);
|
|
}
|
|
|
|
var attrib = nickname_docs[0].getAttrib<NicknameAttrib>();
|
|
if (attrib == null) return (result, null);
|
|
|
|
return (result, attrib);
|
|
}
|
|
}
|