Exemplo n.º 1
0
        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);
        }