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?)> searchNicknameBeginWith(string searchString) { var result = new Result(); var nicknames = new List(); 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(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(query_config); if (result.isFail()) { return (result, null); } foreach (var doc in read_docs) { var user_nickname_registry_attrib = doc.getAttrib(); 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(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(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); } } }