diff options
Diffstat (limited to 'internal/cache')
-rw-r--r-- | internal/cache/cache.go | 14 | ||||
-rw-r--r-- | internal/cache/gts.go | 3 |
2 files changed, 13 insertions, 4 deletions
diff --git a/internal/cache/cache.go b/internal/cache/cache.go index df7d9a7ae..63564935e 100644 --- a/internal/cache/cache.go +++ b/internal/cache/cache.go @@ -93,13 +93,14 @@ func (c *Caches) setuphooks() { }) c.GTS.EmojiCategory().SetInvalidateCallback(func(category *gtsmodel.EmojiCategory) { - // Invalidate entire emoji cache, - // as we can't know which emojis - // specifically this will effect. - c.GTS.Emoji().Clear() + // Invalidate any emoji in this category. + c.GTS.Emoji().Invalidate("CategoryID", category.ID) }) c.GTS.Follow().SetInvalidateCallback(func(follow *gtsmodel.Follow) { + // Invalidate any related list entries. + c.GTS.ListEntry().Invalidate("FollowID", follow.ID) + // Invalidate follow origin account ID cached visibility. c.Visibility.Invalidate("ItemID", follow.AccountID) c.Visibility.Invalidate("RequesterID", follow.AccountID) @@ -122,6 +123,11 @@ func (c *Caches) setuphooks() { c.GTS.Follow().Invalidate("ID", followReq.ID) }) + c.GTS.List().SetInvalidateCallback(func(list *gtsmodel.List) { + // Invalidate all cached entries of this list. + c.GTS.ListEntry().Invalidate("ListID", list.ID) + }) + c.GTS.Status().SetInvalidateCallback(func(status *gtsmodel.Status) { // Invalidate status ID cached visibility. c.Visibility.Invalidate("ItemID", status.ID) diff --git a/internal/cache/gts.go b/internal/cache/gts.go index 4b2e65b9c..8082a9fdf 100644 --- a/internal/cache/gts.go +++ b/internal/cache/gts.go @@ -262,6 +262,7 @@ func (c *GTSCaches) initEmoji() { {Name: "URI"}, {Name: "Shortcode.Domain"}, {Name: "ImageStaticURL"}, + {Name: "CategoryID", Multi: true}, }, func(e1 *gtsmodel.Emoji) *gtsmodel.Emoji { e2 := new(gtsmodel.Emoji) *e2 = *e1 @@ -338,6 +339,8 @@ func (c *GTSCaches) initList() { func (c *GTSCaches) initListEntry() { c.listEntry = result.New([]result.Lookup{ {Name: "ID"}, + {Name: "ListID", Multi: true}, + {Name: "FollowID", Multi: true}, }, func(l1 *gtsmodel.ListEntry) *gtsmodel.ListEntry { l2 := new(gtsmodel.ListEntry) *l2 = *l1 |