Delete owned campaigns on user delete and preserve campaign characters

This commit is contained in:
2026-02-26 19:15:59 +01:00
parent 13113f9d40
commit fa7f88e209
3 changed files with 60 additions and 1 deletions

View File

@@ -321,10 +321,19 @@ public sealed class GameService : IGameService
return ServiceResult<bool>.Failure("user_not_found", "User was not found.");
var gmCampaignIds = m_CampaignsById.Values.Where(campaign => campaign.GmUserId == targetUser.Id).Select(campaign => campaign.Id).ToArray();
var gmCampaignIdSet = gmCampaignIds.ToHashSet();
var preservedCharacterIds = m_CharactersById.Values
.Where(character => character.CampaignId.HasValue && gmCampaignIdSet.Contains(character.CampaignId.Value))
.Select(character => character.Id)
.ToHashSet();
foreach (var campaignId in gmCampaignIds)
DeleteCampaignLocked(campaignId);
var ownedCharacterIds = m_CharactersById.Values.Where(character => character.OwnerUserId == targetUser.Id).Select(character => character.Id).ToArray();
var ownedCharacterIds = m_CharactersById.Values
.Where(character => character.OwnerUserId == targetUser.Id && !preservedCharacterIds.Contains(character.Id))
.Select(character => character.Id)
.ToArray();
foreach (var characterId in ownedCharacterIds)
DeleteCharacterLocked(characterId);