diff --git a/src/dsstats.db8services/ReplayRepository.cs b/src/dsstats.db8services/ReplayRepository.cs index a9b9e166..c8e8c23f 100644 --- a/src/dsstats.db8services/ReplayRepository.cs +++ b/src/dsstats.db8services/ReplayRepository.cs @@ -44,43 +44,17 @@ public async Task SaveReplay(ReplayDto replayDto) foreach (var replayPlayer in dbReplay.ReplayPlayers) { - if (replayPlayer.Player.ToonId == 0) + if (replayPlayer.Player!.ToonId == 0) { isComputer = true; } - var dbPlayer = await context.Players.FirstOrDefaultAsync(f => - f.ToonId == replayPlayer.Player.ToonId - && f.RealmId == replayPlayer.Player.RealmId - && f.RegionId == replayPlayer.Player.RegionId); - if (dbPlayer == null) - { - dbPlayer = new() - { - Name = replayPlayer.Player.Name, - ToonId = replayPlayer.Player.ToonId, - RegionId = replayPlayer.Player.RegionId, - RealmId = replayPlayer.Player.RealmId, - }; - context.Players.Add(dbPlayer); - try - { - await context.SaveChangesAsync(); - } - catch (Exception ex) - { - logger.LogError("failed saving replay: {error}", ex.Message); - throw; - } - } - else - { - dbPlayer.RegionId = replayPlayer.Player.RegionId; - dbPlayer.Name = replayPlayer.Player.Name; - } - - replayPlayer.Player = dbPlayer; - replayPlayer.Name = dbPlayer.Name; + replayPlayer.PlayerId = await importService + .GetPlayerIdAsync(new(replayPlayer.Player.ToonId, replayPlayer.Player.RealmId, replayPlayer.Player.RegionId), + replayPlayer.Name); +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. + replayPlayer.Player = null; +#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type. foreach (var spawn in replayPlayer.Spawns) { diff --git a/src/dsstats.maui/dsstats.maui8/global.json b/src/dsstats.maui/dsstats.maui8/global.json new file mode 100644 index 00000000..c1a0de06 --- /dev/null +++ b/src/dsstats.maui/dsstats.maui8/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "8.0.408" + } +}