public async Task <Either <BaseError, Unit> > Handle( SynchronizeEmbyCollections request, CancellationToken cancellationToken) { Validation <BaseError, ConnectionParameters> validation = await Validate(request); return(await validation.Match( SynchronizeCollections, error => Task.FromResult <Either <BaseError, Unit> >(error.Join()))); }
private async Task SynchronizeEmbyCollections( SynchronizeEmbyCollections request, CancellationToken cancellationToken) { using IServiceScope scope = _serviceScopeFactory.CreateScope(); IMediator mediator = scope.ServiceProvider.GetRequiredService <IMediator>(); Either <BaseError, Unit> result = await mediator.Send(request, cancellationToken); result.BiIter( _ => _logger.LogDebug("Done synchronizing emby collections"), error => _logger.LogWarning( "Unable to synchronize emby collections for source {MediaSourceId}: {Error}", request.EmbyMediaSourceId, error.Value)); }
private Task <Validation <BaseError, EmbyMediaSource> > MediaSourceMustExist( SynchronizeEmbyCollections request) => _mediaSourceRepository.GetEmby(request.EmbyMediaSourceId) .Map(o => o.ToValidation <BaseError>("Emby media source does not exist."));
private Task <Validation <BaseError, ConnectionParameters> > Validate(SynchronizeEmbyCollections request) => MediaSourceMustExist(request) .BindT(MediaSourceMustHaveActiveConnection) .BindT(MediaSourceMustHaveApiKey);