From fd4f3df9ff8e3cfab1d5c689860d5e8f5f34a633 Mon Sep 17 00:00:00 2001 From: ilitirit Date: Wed, 12 Apr 2023 19:31:06 +0200 Subject: [PATCH] Refactor user name generation --- .../Consumers/DutyCompletionResultConsumer.cs | 30 +++++-------------- .../ExpedienceContext.cs | 2 ++ Expedience.Models/CurrentDutyInfo.cs | 1 - 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/Expedience.Api/Consumers/DutyCompletionResultConsumer.cs b/Expedience.Api/Consumers/DutyCompletionResultConsumer.cs index d487ff9..04d1fb9 100644 --- a/Expedience.Api/Consumers/DutyCompletionResultConsumer.cs +++ b/Expedience.Api/Consumers/DutyCompletionResultConsumer.cs @@ -21,39 +21,23 @@ namespace Expedience.Api.Consumers { var message = context.Message; - using var scope = _serviceScopeFactory.CreateScope(); - var dbContext = scope.ServiceProvider.GetRequiredService(); - if (message == null || message.UserInfo == null || message.PlayerInfo == null || message.DutyInfo == null || message.ClientInfo == null || message.CompletionTimeInfo == null) { - // TODO: Log error + _logger.LogError("Required message fields were not populated on Message with Id {messageId}", context.MessageId); return; } var userHash = message.UserInfo.UserId; var worldId = message.UserInfo.WorldId; - + + using var scope = _serviceScopeFactory.CreateScope(); + using var dbContext = scope.ServiceProvider.GetRequiredService(); var user = dbContext.Users.FirstOrDefault(x => x.UserHash == userHash && x.WorldId == worldId); if (user == null) { - string userName; - do - { - userName = UserNameGenerator.Generate(); - } - while (dbContext.Users.Any(x => x.UserName == userName && x.WorldId == worldId)); - - user = new User - { - UserHash = userHash, - WorldId = worldId, - UserName = userName, - CreatedAt = DateTime.UtcNow, - }; - - dbContext.Users.Add(user); - dbContext.SaveChanges(); + _logger.LogError("No user found for World {worldId} and Hash {userHash}", worldId, userHash); + return; } var completionResult = new DutyCompletionResult @@ -101,7 +85,7 @@ namespace Expedience.Api.Consumers await dbContext.SaveChangesAsync(); - _logger.LogInformation("Consumed message {uploadId} from user {userId}", message.UploadId, userHash); + _logger.LogInformation("Consumed message {uploadId} from user {userHash}", message.UploadId, userHash); } } } diff --git a/Expedience.Infrastructure/ExpedienceContext.cs b/Expedience.Infrastructure/ExpedienceContext.cs index 7755169..144cd19 100644 --- a/Expedience.Infrastructure/ExpedienceContext.cs +++ b/Expedience.Infrastructure/ExpedienceContext.cs @@ -44,6 +44,8 @@ namespace Expedience.Infrastructure .ValueGeneratedOnAdd(); cfg.HasKey(e => new { e.UserId }); + cfg.HasIndex(e => new { e.WorldId, e.UserName }); + cfg.HasIndex(e => new { e.WorldId, e.UserHash }); }); base.OnModelCreating(modelBuilder); diff --git a/Expedience.Models/CurrentDutyInfo.cs b/Expedience.Models/CurrentDutyInfo.cs index e6e6ff8..80cea42 100644 --- a/Expedience.Models/CurrentDutyInfo.cs +++ b/Expedience.Models/CurrentDutyInfo.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Diagnostics; namespace Expedience.Models