using ErsatzTV.Core; using ErsatzTV.Core.Interfaces.Scheduling; namespace ErsatzTV.Application.Playouts; public class TimeShiftOnDemandPlayoutHandler(IPlayoutTimeShifter playoutTimeShifter) : IRequestHandler> { public async Task> Handle(TimeShiftOnDemandPlayout request, CancellationToken cancellationToken) { try { await playoutTimeShifter.TimeShift(request.PlayoutId, request.Now, request.Force); } catch (Exception ex) { return BaseError.New(ex.Message); } return Option.None; } }