diff options
author | 2023-10-25 16:04:53 +0200 | |
---|---|---|
committer | 2023-10-25 15:04:53 +0100 | |
commit | c7b6cd7770cad9bfdc23decffa7c4068752dbbbd (patch) | |
tree | 0f039fd34fb0287860fce06ff1c30dedd1882136 /internal/cache/gts.go | |
parent | [bugfix] allow store smaller PNG image than 261 bytes (#2263) (#2298) (diff) | |
download | gotosocial-c7b6cd7770cad9bfdc23decffa7c4068752dbbbd.tar.xz |
[feature] Status thread mute/unmute functionality (#2278)
* add db models + functions for keeping track of threads
* give em the old linty testy
* create, remove, check mutes
* swagger
* testerino
* test mute/unmute via api
* add info log about new index creation
* thread + allow muting of any remote statuses that mention a local account
* IsStatusThreadMutedBy -> IsThreadMutedByAccount
* use common processing functions in status processor
* set = NULL
* favee!
* get rekt darlings, darlings get rekt
* testrig please, have mercy muy liege
Diffstat (limited to 'internal/cache/gts.go')
-rw-r--r-- | internal/cache/gts.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/internal/cache/gts.go b/internal/cache/gts.go index 16a1585f7..d96b7267f 100644 --- a/internal/cache/gts.go +++ b/internal/cache/gts.go @@ -57,6 +57,7 @@ type GTSCaches struct { statusFave *result.Cache[*gtsmodel.StatusFave] statusFaveIDs *SliceCache[string] tag *result.Cache[*gtsmodel.Tag] + threadMute *result.Cache[*gtsmodel.ThreadMute] tombstone *result.Cache[*gtsmodel.Tombstone] user *result.Cache[*gtsmodel.User] @@ -93,6 +94,7 @@ func (c *GTSCaches) Init() { c.initStatus() c.initStatusFave() c.initTag() + c.initThreadMute() c.initStatusFaveIDs() c.initTombstone() c.initUser() @@ -249,6 +251,11 @@ func (c *GTSCaches) Tag() *result.Cache[*gtsmodel.Tag] { return c.tag } +// ThreadMute provides access to the gtsmodel ThreadMute database cache. +func (c *GTSCaches) ThreadMute() *result.Cache[*gtsmodel.ThreadMute] { + return c.threadMute +} + // StatusFaveIDs provides access to the status fave IDs list database cache. func (c *GTSCaches) StatusFaveIDs() *SliceCache[string] { return c.statusFaveIDs @@ -712,6 +719,7 @@ func (c *GTSCaches) initStatus() { {Name: "URI"}, {Name: "URL"}, {Name: "BoostOfID.AccountID"}, + {Name: "ThreadID", Multi: true}, }, func(s1 *gtsmodel.Status) *gtsmodel.Status { s2 := new(gtsmodel.Status) *s2 = *s1 @@ -778,6 +786,28 @@ func (c *GTSCaches) initTag() { c.tag.IgnoreErrors(ignoreErrors) } +func (c *GTSCaches) initThreadMute() { + cap := calculateResultCacheMax( + sizeOfThreadMute(), // model in-mem size. + config.GetCacheThreadMuteMemRatio(), + ) + + log.Infof(nil, "cache size = %d", cap) + + c.threadMute = result.New([]result.Lookup{ + {Name: "ID"}, + {Name: "ThreadID", Multi: true}, + {Name: "AccountID", Multi: true}, + {Name: "ThreadID.AccountID"}, + }, func(t1 *gtsmodel.ThreadMute) *gtsmodel.ThreadMute { + t2 := new(gtsmodel.ThreadMute) + *t2 = *t1 + return t2 + }, cap) + + c.threadMute.IgnoreErrors(ignoreErrors) +} + func (c *GTSCaches) initTombstone() { // Calculate maximum cache size. cap := calculateResultCacheMax( |