using JSMR.Application.Scanning.Contracts; namespace JSMR.Application.Scanning.Ports; public interface IVoiceWorkUpdater { Task UpsertAsync(IReadOnlyCollection ingests, CancellationToken cancellationToken); } public class VoiceWorkUpsertResult { public int? VoiceWorkId { get; set; } public ICollection Issues { get; } = []; public VoiceWorkUpsertStatus Status { get; set; } = VoiceWorkUpsertStatus.Unchanged; } public record VoiceWorkUpsertIssue( string Message, VoiceWorkUpsertIssueSeverity Severity ); public enum VoiceWorkUpsertIssueSeverity { Information, Warning, Error } public enum VoiceWorkUpsertStatus { Unchanged, Inserted, Updated, Skipped }