public void RemoveEvent(NewsfeedEventModel entry, IEnumerable <string> followers) { var activityEntry = MapToActivity(entry); var keys = MapRedisKeys(entry.ReferencePostId, followers); var isPostRemoval = entry.ActionType == NewsfeedActionType.wallpost; var transaction = StackExchangeRedisConnectionProvider.GetTransaction(); if (isPostRemoval) { foreach (var key in keys) { transaction.SetRemoveAsync(key.PostFeedKey, entry.ReferencePostId); transaction.KeyDeleteAsync(key.PostActionsKey); } } else { foreach (var key in keys) { transaction.SortedSetDecrementAsync(key.PostActionsKey, activityEntry, 1); transaction.SortedSetRemoveRangeByScoreAsync(key.PostActionsKey, -10, 0); } } transaction.Execute(); }
private IEnumerable <NewsfeedEventModel> MapInitialFeed(IEnumerable <GetInitialFeedPosts_Result> procResult) { var retVal = new List <NewsfeedEventModel>(); foreach (var record in procResult) { var model = new NewsfeedEventModel(); model.ReferencePostId = record.Id; model.By = record.EventBy; model.ActionType = (NewsfeedActionType)Enum.Parse(typeof(NewsfeedActionType), record.EventDetail); retVal.Add(model); } return(retVal); }
public void AddEvent(NewsfeedEventModel entry, IEnumerable <string> followers) { var activityEntry = MapToActivity(entry); var keys = MapRedisKeys(entry.ReferencePostId, followers); var transaction = StackExchangeRedisConnectionProvider.GetTransaction(); foreach (var key in keys) { transaction.SetAddAsync(key.PostFeedKey, entry.ReferencePostId); transaction.SortedSetIncrementAsync(key.PostActionsKey, activityEntry, 1); } transaction.Execute(); }
public void RemovePost(NewsfeedItem newsFeedEntry) { var followers = GetFollowers(newsFeedEntry.By, newsFeedEntry.WallOwner); if (followers.Any()) { var newsFeedCacheModel = new NewsfeedEventModel { By = newsFeedEntry.By, ActionType = newsFeedEntry.FeedType, ReferencePostId = newsFeedEntry.ReferencePostId }; feedCacheRepo.RemoveEvent(newsFeedCacheModel, followers); } }
private string MapToActivity(NewsfeedEventModel newsFeedEntry) { return(string.Concat(newsFeedEntry.By, ":", (short)newsFeedEntry.ActionType)); }