summaryrefslogtreecommitdiffstats
path: root/store/local_cache_supplier_reactions.go
diff options
context:
space:
mode:
Diffstat (limited to 'store/local_cache_supplier_reactions.go')
-rw-r--r--store/local_cache_supplier_reactions.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/store/local_cache_supplier_reactions.go b/store/local_cache_supplier_reactions.go
new file mode 100644
index 000000000..7d2c9f065
--- /dev/null
+++ b/store/local_cache_supplier_reactions.go
@@ -0,0 +1,47 @@
+// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package store
+
+import (
+ "context"
+
+ "github.com/mattermost/platform/model"
+)
+
+func (s *LocalCacheSupplier) handleClusterInvalidateReaction(msg *model.ClusterMessage) {
+ if msg.Data == CLEAR_CACHE_MESSAGE_DATA {
+ s.reactionCache.Purge()
+ } else {
+ s.reactionCache.Remove(msg.Data)
+ }
+}
+
+func (s *LocalCacheSupplier) ReactionSave(ctx context.Context, reaction *model.Reaction, hints ...LayeredStoreHint) *LayeredStoreSupplierResult {
+ doInvalidateCacheCluster(s.reactionCache, reaction.PostId)
+ return s.Next().ReactionSave(ctx, reaction, hints...)
+}
+
+func (s *LocalCacheSupplier) ReactionDelete(ctx context.Context, reaction *model.Reaction, hints ...LayeredStoreHint) *LayeredStoreSupplierResult {
+ doInvalidateCacheCluster(s.reactionCache, reaction.PostId)
+ return s.Next().ReactionDelete(ctx, reaction, hints...)
+}
+
+func (s *LocalCacheSupplier) ReactionGetForPost(ctx context.Context, postId string, hints ...LayeredStoreHint) *LayeredStoreSupplierResult {
+ if result := doStandardReadCache(ctx, s.reactionCache, postId, hints...); result != nil {
+ return result
+ }
+
+ result := s.Next().ReactionGetForPost(ctx, postId, hints...)
+
+ doStandardAddToCache(ctx, s.reactionCache, postId, result, hints...)
+
+ return result
+}
+
+func (s *LocalCacheSupplier) ReactionDeleteAllWithEmojiName(ctx context.Context, emojiName string, hints ...LayeredStoreHint) *LayeredStoreSupplierResult {
+ // This could be improved. Right now we just clear the whole
+ // cache because we don't have a way find what post Ids have this emoji name.
+ doClearCacheCluster(s.reactionCache)
+ return s.Next().ReactionDeleteAllWithEmojiName(ctx, emojiName, hints...)
+}