summaryrefslogtreecommitdiff
path: root/internal/cache
diff options
context:
space:
mode:
Diffstat (limited to 'internal/cache')
-rw-r--r--internal/cache/cache.go1
-rw-r--r--internal/cache/gts.go30
-rw-r--r--internal/cache/size.go11
3 files changed, 42 insertions, 0 deletions
diff --git a/internal/cache/cache.go b/internal/cache/cache.go
index ec0ec3faa..777088f07 100644
--- a/internal/cache/cache.go
+++ b/internal/cache/cache.go
@@ -248,6 +248,7 @@ func (c *Caches) Sweep(threshold float64) {
c.GTS.Status().Trim(threshold)
c.GTS.StatusFave().Trim(threshold)
c.GTS.Tag().Trim(threshold)
+ c.GTS.ThreadMute().Trim(threshold)
c.GTS.Tombstone().Trim(threshold)
c.GTS.User().Trim(threshold)
c.Visibility.Trim(threshold)
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(
diff --git a/internal/cache/size.go b/internal/cache/size.go
index f578b9402..3e77c68ac 100644
--- a/internal/cache/size.go
+++ b/internal/cache/size.go
@@ -194,6 +194,7 @@ func totalOfRatios() float64 {
config.GetCacheStatusFaveMemRatio() +
config.GetCacheStatusFaveIDsMemRatio() +
config.GetCacheTagMemRatio() +
+ config.GetCacheThreadMuteMemRatio() +
config.GetCacheTombstoneMemRatio() +
config.GetCacheUserMemRatio() +
config.GetCacheWebfingerMemRatio() +
@@ -511,6 +512,16 @@ func sizeofTag() uintptr {
}))
}
+func sizeOfThreadMute() uintptr {
+ return uintptr(size.Of(&gtsmodel.ThreadMute{
+ ID: exampleID,
+ CreatedAt: exampleTime,
+ UpdatedAt: exampleTime,
+ ThreadID: exampleID,
+ AccountID: exampleID,
+ }))
+}
+
func sizeofTombstone() uintptr {
return uintptr(size.Of(&gtsmodel.Tombstone{
ID: exampleID,