summaryrefslogtreecommitdiff
path: root/internal/cache/db.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/cache/db.go')
-rw-r--r--internal/cache/db.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/internal/cache/db.go b/internal/cache/db.go
index 5e86c92a2..7f54ee8c5 100644
--- a/internal/cache/db.go
+++ b/internal/cache/db.go
@@ -145,6 +145,9 @@ type DBCaches struct {
// Report provides access to the gtsmodel Report database cache.
Report StructCache[*gtsmodel.Report]
+ // SinBinStatus provides access to the gtsmodel SinBinStatus database cache.
+ SinBinStatus StructCache[*gtsmodel.SinBinStatus]
+
// Status provides access to the gtsmodel Status database cache.
Status StructCache[*gtsmodel.Status]
@@ -1170,6 +1173,32 @@ func (c *Caches) initReport() {
})
}
+func (c *Caches) initSinBinStatus() {
+ // Calculate maximum cache size.
+ cap := calculateResultCacheMax(
+ sizeofSinBinStatus(), // model in-mem size.
+ config.GetCacheSinBinStatusMemRatio(),
+ )
+
+ log.Infof(nil, "cache size = %d", cap)
+
+ copyF := func(s1 *gtsmodel.SinBinStatus) *gtsmodel.SinBinStatus {
+ s2 := new(gtsmodel.SinBinStatus)
+ *s2 = *s1
+ return s2
+ }
+
+ c.DB.SinBinStatus.Init(structr.CacheConfig[*gtsmodel.SinBinStatus]{
+ Indices: []structr.IndexConfig{
+ {Fields: "ID"},
+ {Fields: "URI"},
+ },
+ MaxSize: cap,
+ IgnoreErr: ignoreErrors,
+ Copy: copyF,
+ })
+}
+
func (c *Caches) initStatus() {
// Calculate maximum cache size.
cap := calculateResultCacheMax(