Updated delete logic for voice works.
All checks were successful
ci / build-test (push) Successful in 3m1s
ci / publish-image (push) Successful in 1m58s

This commit is contained in:
2026-05-09 00:51:10 -04:00
parent 9c9e33ebec
commit 5eecba7eec
10 changed files with 124 additions and 16 deletions

View File

@@ -20,28 +20,39 @@ public class VoiceWorkWriter(AppDbContext dbContext) : IVoiceWorkWriter
public async Task<DeleteVoiceWorkResponse> DeleteAsync(DeleteVoiceWorkRequest request, CancellationToken cancellationToken)
{
Dictionary<int, bool> isSuccess = [];
Dictionary<int, DeleteVoiceWorkStatus> results = request.VoiceWorkIds.Select(x => x)
.ToDictionary(x => x, x => DeleteVoiceWorkStatus.NotFound);
VoiceWork[] voiceWorks = [.. dbContext.VoiceWorks.Where(voiceWork => request.VoiceWorkIds.Contains(voiceWork.VoiceWorkId))
.Include(x => x.Circle)];
foreach (VoiceWork voiceWork in voiceWorks)
{
isSuccess.Add(voiceWork.VoiceWorkId, false);
if (results.ContainsKey(voiceWork.VoiceWorkId) == false)
{
results[voiceWork.VoiceWorkId] = DeleteVoiceWorkStatus.NotFound;
continue;
}
if (voiceWork.Circle is null)
{
results[voiceWork.VoiceWorkId] = DeleteVoiceWorkStatus.NotFound;
continue;
}
if (voiceWork.IsValid == true && voiceWork.Circle.Spam == false)
{
results[voiceWork.VoiceWorkId] = DeleteVoiceWorkStatus.NotAllowed;
continue;
}
dbContext.Remove(voiceWork);
isSuccess[voiceWork.VoiceWorkId] = true;
results[voiceWork.VoiceWorkId] = DeleteVoiceWorkStatus.Deleted;
}
dbContext.SaveChanges();
await dbContext.SaveChangesAsync(cancellationToken);
return new DeleteVoiceWorkResponse(isSuccess);
return new DeleteVoiceWorkResponse(results);
}
private async Task<VoiceWork> GetVoiceWorkAsync(int voiceWorkId, CancellationToken cancellationToken)