104 lines
4.2 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|