summaryrefslogtreecommitdiff
path: root/internal/cache
diff options
context:
space:
mode:
Diffstat (limited to 'internal/cache')
-rw-r--r--internal/cache/cache.go14
-rw-r--r--internal/cache/gts.go3
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