Refactor user name generation

main
ilitirit 3 years ago
parent 5f3d8dc894
commit fd4f3df9ff

@ -21,39 +21,23 @@ namespace Expedience.Api.Consumers
{ {
var message = context.Message; var message = context.Message;
using var scope = _serviceScopeFactory.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<ExpedienceContext>();
if (message == null || message.UserInfo == null || message.PlayerInfo == null || if (message == null || message.UserInfo == null || message.PlayerInfo == null ||
message.DutyInfo == null || message.ClientInfo == null || message.CompletionTimeInfo == 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; return;
} }
var userHash = message.UserInfo.UserId; var userHash = message.UserInfo.UserId;
var worldId = message.UserInfo.WorldId; var worldId = message.UserInfo.WorldId;
using var scope = _serviceScopeFactory.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<ExpedienceContext>();
var user = dbContext.Users.FirstOrDefault(x => x.UserHash == userHash && x.WorldId == worldId); var user = dbContext.Users.FirstOrDefault(x => x.UserHash == userHash && x.WorldId == worldId);
if (user == null) if (user == null)
{ {
string userName; _logger.LogError("No user found for World {worldId} and Hash {userHash}", worldId, userHash);
do return;
{
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();
} }
var completionResult = new DutyCompletionResult var completionResult = new DutyCompletionResult
@ -101,7 +85,7 @@ namespace Expedience.Api.Consumers
await dbContext.SaveChangesAsync(); 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);
} }
} }
} }

@ -44,6 +44,8 @@ namespace Expedience.Infrastructure
.ValueGeneratedOnAdd(); .ValueGeneratedOnAdd();
cfg.HasKey(e => new { e.UserId }); 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); base.OnModelCreating(modelBuilder);

@ -1,5 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
namespace Expedience.Models namespace Expedience.Models

Loading…
Cancel
Save