diff options
Diffstat (limited to 'internal/cache/cache.go')
-rw-r--r-- | internal/cache/cache.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/internal/cache/cache.go b/internal/cache/cache.go index 777088f07..dabf151ff 100644 --- a/internal/cache/cache.go +++ b/internal/cache/cache.go @@ -183,6 +183,22 @@ func (c *Caches) setuphooks() { } }) + c.GTS.Poll().SetInvalidateCallback(func(poll *gtsmodel.Poll) { + // Invalidate all cached votes of this poll. + c.GTS.PollVote().Invalidate("PollID", poll.ID) + + // Invalidate cache of poll vote IDs. + c.GTS.PollVoteIDs().Invalidate(poll.ID) + }) + + c.GTS.PollVote().SetInvalidateCallback(func(vote *gtsmodel.PollVote) { + // Invalidate cached poll (contains no. votes). + c.GTS.Poll().Invalidate("ID", vote.PollID) + + // Invalidate cache of poll vote IDs. + c.GTS.PollVoteIDs().Invalidate(vote.PollID) + }) + c.GTS.Status().SetInvalidateCallback(func(status *gtsmodel.Status) { // Invalidate status ID cached visibility. c.Visibility.Invalidate("ItemID", status.ID) @@ -206,6 +222,11 @@ func (c *Caches) setuphooks() { // Invalidate in reply to ID list of original status. c.GTS.InReplyToIDs().Invalidate(status.InReplyToID) } + + if status.PollID != "" { + // Invalidate cache of attached poll ID. + c.GTS.Poll().Invalidate("ID", status.PollID) + } }) c.GTS.StatusFave().SetInvalidateCallback(func(fave *gtsmodel.StatusFave) { @@ -244,6 +265,7 @@ func (c *Caches) Sweep(threshold float64) { c.GTS.Media().Trim(threshold) c.GTS.Mention().Trim(threshold) c.GTS.Notification().Trim(threshold) + c.GTS.Poll().Trim(threshold) c.GTS.Report().Trim(threshold) c.GTS.Status().Trim(threshold) c.GTS.StatusFave().Trim(threshold) |