using Marathon.Application.Abstractions; using Microsoft.Extensions.Logging; namespace Marathon.Application.UseCases; /// /// Removes a from the journal /// by its identifier. Silent no-op when the id does not exist. /// public sealed class DeletePlacedBetUseCase { private readonly IPlacedBetRepository _bets; private readonly ILogger _logger; public DeletePlacedBetUseCase( IPlacedBetRepository bets, ILogger logger) { _bets = bets ?? throw new ArgumentNullException(nameof(bets)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public async Task ExecuteAsync(Guid betId, CancellationToken ct = default) { await _bets.DeleteAsync(betId, ct).ConfigureAwait(false); await _bets.SaveChangesAsync(ct).ConfigureAwait(false); _logger.LogInformation("DeletePlacedBetUseCase: removed bet {BetId}", betId); } }