public async Task Run(CancellationToken cancellationToken) { var directoryInfo = ArticleExtractorJob.GetDirectory(); var lck = new FileDistributedLock(directoryInfo, "extract-recommendations"); using (var distributedLock = await lck.TryAcquireAsync()) { if (distributedLock == null) { return; } var popularArticles = await GetPopularArticles(cancellationToken); var result = GetSimilarArticlesByWord2Vec(popularArticles).ToList(); foreach (var articles in result) { var firstArticle = articles.First(); var recommendation = RecommendationAggregate.Create(firstArticle.UserId); foreach (var article in articles) { recommendation.Recommend(article.ArticleId, article.Score); } await _recommendationCommandRepository.Add(recommendation, cancellationToken); await _recommendationCommandRepository.SaveChanges(cancellationToken); } } }
public Task Update(RecommendationAggregate recommendation, CancellationToken cancellationToken) { _newsAggregatorDBContext.Recommendations.Update(recommendation); return(Task.CompletedTask); }