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);
}
}