private async Task <bool> ScrapePage(int page, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return(false); } var shows = (await _scraperHttpClient.ScrapeShowsAsync(page, cancellationToken)).ToList(); if (!shows.Any()) { return(false); } var persons = new List <Person>(); var showPersonsRelations = new List <ShowPerson>(); foreach (var show in shows) { var cast = (await _scraperHttpClient.ScrapeShowCastAsync(show.Id, cancellationToken)).ToList(); var showPersons = cast.Select(c => new ShowPerson { PersonId = c.Id, ShowId = show.Id }); persons.AddRange(cast); showPersonsRelations.AddRange(showPersons); } await _scrapeRepository.BulkInsertShowsAsync(shows, cancellationToken); await _scrapeRepository.BulkInsertPersonAsync(persons, cancellationToken); await _scrapeRepository.BulkInsertShowPersonRelationsAsync(showPersonsRelations, cancellationToken); return(true); }