Files
2025-05-01 07:20:41 +09:00

104 lines
4.2 KiB
C#

using Amazon.DynamoDBv2.DocumentModel;
using ServerCommon;
using ServerCore; using ServerBase;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace GameServer
{
internal static class NicknameHelper
{
public static async Task<(Result, List<string>?)> searchNicknameBeginWith(string searchString)
{
var result = new Result();
var nicknames = new List<string>();
var err_msg = string.Empty;
var server_logic = GameServerApp.getServerLogic();
var db_client = server_logic.getDynamoDbClient();
ArgumentNullException.ThrowIfNull(db_client);
(result, var make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey<UserNicknameRegistryDoc>(DynamoDbClient.PK_GLOBAL, searchString.ToLower());
if (result.isFail())
{
return (result, null);
}
NullReferenceCheckHelper.throwIfNull(make_primary_key, () => $"make_primary_key is null !!! - searchString: {searchString}");
var query_config = db_client.makeQueryConfigWithPKSKBySKBeginWith( make_primary_key.PK, make_primary_key.SK
, new QueryOperationConfig() );
ArgumentNullException.ThrowIfNull(query_config);
(result, var read_docs) = await db_client.simpleQueryDocTypesWithQueryOperationConfig<UserNicknameRegistryDoc>(query_config);
if (result.isFail())
{
return (result, null);
}
foreach (var doc in read_docs)
{
var user_nickname_registry_attrib = doc.getAttrib<UserNicknameRegistryAttrib>();
NullReferenceCheckHelper.throwIfNull(user_nickname_registry_attrib, () => $"user_nickname_registry_attrib is null !!! - searchString: {searchString}");
nicknames.Add(user_nickname_registry_attrib.Nickname);
}
return (result, nicknames);
}
public static async Task<(Result, UserNicknameRegistryAttrib?)> findNickname(string toCheckNickname)
{
var result = new Result();
var err_msg = string.Empty;
var server_logic = ServerLogicApp.getServerLogicApp();
var dynamo_db_client = server_logic.getDynamoDbClient();
NullReferenceCheckHelper.throwIfNull(dynamo_db_client, () => "dynamo_db_client is null !!!");
if (toCheckNickname.isNullOrWhiteSpace())
{
err_msg = $"Nickname is Null or WhiteSpace !!!";
result.setFail(ServerErrorCode.UserNicknameEmpty, err_msg);
Log.getLogger().error(result.toBasicString());
return (result, null);
}
(result, var make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey<UserNicknameRegistryDoc>(DynamoDbClient.PK_GLOBAL, toCheckNickname.ToLower());
if (result.isFail())
{
return (result, null);
}
NullReferenceCheckHelper.throwIfNull(make_primary_key, () => $"make_primary_key is null !!! - toCheckNickname: {toCheckNickname}");
var query_config = dynamo_db_client.makeQueryConfigForReadByPKSK(make_primary_key.PK, make_primary_key.SK);
ArgumentNullException.ThrowIfNull(query_config);
(result, var found_nicknames) = await dynamo_db_client.simpleQueryDocTypesWithQueryOperationConfig<UserNicknameRegistryDoc>(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<UserNicknameRegistryAttrib>();
if (nickname_attrib == null)
{
result.setFail(ServerErrorCode.AttribNotFound);
return (result, null);
}
return (result, nickname_attrib);
}
}
}