public async Task Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log) { var hashTagMessagess = await _serviceBusOperations.ReceiveMessagesAsync(); var hashTags = hashTagMessagess.Select(p => JsonConvert.DeserializeObject <Hashtag>(Encoding.UTF8.GetString(p.Body))); var erroredHashtags = new List <Hashtag>(); foreach (var hashTag in hashTags) { try { var tweet = _tweetOperations.GetPopularTweetByHashtag(hashTag); if (tweet != null) { tweet.Hashtags = new List <Hashtag>(); log.LogInformation($"Latest popular tweet for {hashTag.Text} : {tweet.FullText}"); var existingTweet = await _tweetDbRepository.GetByIdAsync(tweet.Id); if (existingTweet is null) { tweet.Hashtags.Add(hashTag); await _tweetDbRepository.AddOrUpdateAsync(tweet); log.LogInformation($"Added Tweet in TweetCollection with Id: { tweet.Id }"); } if (existingTweet != null && !existingTweet.Hashtags.Any(p => p.Text == hashTag.Text)) { tweet.Hashtags = existingTweet.Hashtags; tweet.Hashtags.Add(hashTag); await _tweetDbRepository.AddOrUpdateAsync(tweet); log.LogInformation($"Updated Tweet in TweetCollection with Id: { tweet.Id }"); } } hashTag.IsCurrentlyInQueue = false; hashTag.LastSyncedDateTime = DateTime.UtcNow; await _hashtagDbRepository.AddOrUpdateAsync(hashTag); } catch (Exception ex) { log.LogError(ex, ex.Message); erroredHashtags.Add(hashTag); } } if (erroredHashtags.Any()) { throw new TwitterBotBusinessException(erroredHashtags); } }
public async Task ProcessWords(string incoming) { Debug.WriteLine($"Adding { incoming } to DB"); var words = new WordsData() { Id = Guid.NewGuid(), NumberOfChars = incoming.Length, ReceivedWords = incoming, DateTime = DateTime.Now }; await _repository.AddOrUpdateAsync(words); }
//Work public async Task BodyOfWork() { WriteToConsoleAndPromptToContinue("Working on the DB commencing"); //Adding foreach (var added in _added) { await _personRepo.AddOrUpdateAsync(added); } //Updating foreach (var updated in _updated) { await _personRepo.AddOrUpdateAsync(updated); } //Deleting foreach (var removed in _removed) { await _personRepo.RemoveAsync(removed.Id); } WriteToConsoleAndPromptToContinue("Work on DB complete"); }
private async Task ProcessErroredHashtags(List <Hashtag> hashtags) { if (!hashtags.Any()) { return; } foreach (var hashtag in hashtags) { hashtag.IsCurrentlyInQueue = false; await _hashTagRepository.AddOrUpdateAsync(hashtag); } }
public async Task Run([TimerTrigger("0 */1 * * * *")] TimerInfo myTimer, ILogger log) { log.LogInformation($"TweetSchedulerFunction started executionat: { DateTime.Now}"); var config = _configurations.Value.AppSettings; var hashTags = await _hashTagRepository.WhereAsync(p => (!p.IsCurrentlyInQueue && p.LastSyncedDateTime < DateTime.UtcNow.AddMinutes(config.HashtagSyncIntervalInMinutes)) || (p.IsCurrentlyInQueue && p.LastSyncedDateTime < DateTime.UtcNow.AddHours(config.HashtagQueueThresholdIntervalInHours))); foreach (var hashTag in hashTags) { await _serviceBusOperations.SendMessageAsync(hashTag.Id, JsonConvert.SerializeObject(hashTag)); hashTag.IsCurrentlyInQueue = true; await _hashTagRepository.AddOrUpdateAsync(hashTag); } log.LogInformation($"TweetSchedulerFunction completed execution at: { DateTime.Now}"); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("SaveUserPreferences started."); string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var user = JsonConvert.DeserializeObject <User>(requestBody); var hashTags = user.Hashtags != null?user.Hashtags.Select(p => p.Text).ToList() : new List <string>(); var dbHashtagQuery = await _hashTagRepository.WhereAsync(p => hashTags.Contains(p.Text)); var dbHashtags = dbHashtagQuery.ToList(); foreach (var hashtag in user.Hashtags) { if (dbHashtags.Any(p => p.Text == hashtag.Text)) { continue; } hashtag.IsCurrentlyInQueue = false; hashtag.LastSyncedDateTime = DateTime.UtcNow.AddMinutes(_configurations.Value.AppSettings.HashtagSyncIntervalInMinutes); await _hashTagRepository.AddOrUpdateAsync(hashtag); } var dbUserQuery = await _userRepository.WhereAsync(p => p.UserId == user.UserId); var users = dbUserQuery.ToList(); if (users != null && users.Count() != 0) { user.Id = users.FirstOrDefault().Id; } await _userRepository.AddOrUpdateAsync(user); log.LogInformation("SaveUserPreferences completed."); return(new OkResult()); }