/// <summary> /// Calculate the hash tags trend score and save. Maintain the link between a has tag and meme /// NOTE: A meme's hash tag list never changes. /// </summary> /// <param name="hashTag"></param> /// <param name="memeId"></param> /// <param name="previousMemeTrendScore"></param> /// <param name="newMemeTrendScore"></param> /// <returns></returns> public IHashTag SaveMemeTags(string hashTag, string memeId, double previousMemeTrendScore, double newMemeTrendScore) { string id = hashTag.ToLower(); // Get from repository or create new if doesn't exist IHashTag tag = repository.GetHashTag(id) ?? new HashTag { Id = id, Name = hashTag }; // Update the score of the hash tag to account for the memes new score tag.TrendScoreOfAllMemes += newMemeTrendScore - previousMemeTrendScore; // Save hash tag in repository var savedHashTag = repository.Save(tag); // Maintain a link between the hash tag and meme repository.Save(new HashTagMeme(tag.Id, memeId, newMemeTrendScore)); return(savedHashTag); }
/// <summary> /// Save the hashtag /// </summary> /// <param name="hashTag"></param> /// <returns></returns> public IHashTag Save(IHashTag hashTag) { hashTagCollection.Save(hashTag.ToBsonDocument()); return(hashTag); }
/// <summary> /// Get a hashtag by name (ID is hash tag name) /// </summary> /// <param name="hashTagName"></param> /// <returns></returns> public IHashTag GetHashTag(string hashTagName) { IHashTag hashTag = hashTagCollection.FindOne(Query <HashTag> .EQ(e => e.Id, hashTagName)); return(hashTag); }