public async Task <SyncMetadataCommandResult> Handle(SyncMetadataCommand request, CancellationToken cancellationToken)
        {
            var isSyncCompleted = false;

            while (!isSyncCompleted)
            {
                var lastSyncId = await _showsRepository.GetMaxExternalIdAsync();

                _logger.LogInformation($"Last synced show id: {lastSyncId}");

                var shows = await _service.ScrapeBatchAsync(lastSyncId, request.SyncBatchSize);

                foreach (var show in shows)
                {
                    var model = await _showsRepository.FindByExternalIdAsync(show.Id);

                    // Apparently this show has been synced already - let's skip it
                    if (model != null)
                    {
                        continue;
                    }

                    model = await MapToDomainModel(show);

                    await _showsRepository.AddAsync(model);
                }

                isSyncCompleted = !shows.Any();
            }

            return(SyncMetadataCommandResult.Success());
        }