private async Task <IEnumerable <MangaUpdatedCluster> > Request(DatabaseExternalLink mangaLinks) { try { var result = (await GetClustersForDel(mangaLinks)) .Where(it => !(it.Item2 is null)) .ToList(); for (var i = 0; i < result.Count; i++) { result[i].cluster.Id = mangaLinks.Id; if (result[i].cluster.Mangas.Any()) { result[i].link.LastUpdate = result[i].cluster.Mangas.First().Date + 2; } } mangaLinks.UpdatedAt = DateTime.UtcNow; _database.Update(mangaLinks); return(result.Select(it => it.Item2)); } catch (FlurlHttpException ex) { _logger.LogCritical($"{ex.Message}"); return(null); } }
public bool Update(DatabaseExternalLink links) { var col = _db.GetCollection <DatabaseExternalLink>("external_links"); col.EnsureIndex(x => x.Id); return(col.Upsert(links)); }
private async Task <IEnumerable <(ExtendedLink link, MangaUpdatedCluster cluster)> > GetClustersForDel( DatabaseExternalLink mangaLinks) { var x = mangaLinks.Links.AsParallel() .Select(it => (it, _config.Services.Manser .AppendPathSegment("byUrl") .AppendPathSegment(it.Link.Url) .SetQueryParam("after", it.LastUpdate))); var y = x.Select(it => (it.it, Request(it.Item2))).ToList(); await Task.WhenAll(y.Select(it => it.Item2)); return(y.Select(it => (it.it, it.Item2.Result))); }