Fix db error when adding duplicate players in a round (#16206)
This commit is contained in:
@@ -663,23 +663,16 @@ namespace Content.Server.Database
|
|||||||
{
|
{
|
||||||
await using var db = await GetDb();
|
await using var db = await GetDb();
|
||||||
|
|
||||||
var round = await db.DbContext.Round
|
// ReSharper disable once SuggestVarOrType_Elsewhere
|
||||||
.Include(round => round.Players)
|
Dictionary<Guid, int> players = await db.DbContext.Player
|
||||||
.SingleAsync(round => round.Id == id);
|
|
||||||
|
|
||||||
var players = await db.DbContext.Player
|
|
||||||
.Where(player => playerIds.Contains(player.UserId))
|
.Where(player => playerIds.Contains(player.UserId))
|
||||||
.ToListAsync();
|
.ToDictionaryAsync(player => player.UserId, player => player.Id);
|
||||||
|
|
||||||
var playerSet = new HashSet<Guid>(round.Players.Select(player => player.UserId));
|
foreach (var player in playerIds)
|
||||||
foreach (var player in players)
|
|
||||||
{
|
{
|
||||||
if (playerSet.Contains(player.UserId))
|
await db.DbContext.Database.ExecuteSqlAsync($"""
|
||||||
{
|
INSERT INTO player_round (players_id, rounds_id) VALUES ({players[player]}, {id}) ON CONFLICT DO NOTHING
|
||||||
continue;
|
""");
|
||||||
}
|
|
||||||
|
|
||||||
round.Players.Add(player);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await db.DbContext.SaveChangesAsync();
|
await db.DbContext.SaveChangesAsync();
|
||||||
|
|||||||
Reference in New Issue
Block a user