diff options
author | 2024-07-29 11:26:31 -0700 | |
---|---|---|
committer | 2024-07-29 19:26:31 +0100 | |
commit | a237e2b295fee71bdf7266520b0b6e0fb79b565c (patch) | |
tree | c522adc47019584b60de9420595505820635bb11 /internal/cache/db.go | |
parent | [bugfix] take into account rotation when generating thumbnail (#3147) (diff) | |
download | gotosocial-a237e2b295fee71bdf7266520b0b6e0fb79b565c.tar.xz |
[feature] Implement following hashtags (#3141)
* Implement followed tags API
* Insert statuses with followed tags into home timelines
* Test following and unfollowing tags
* Correct Swagger path params
* Trim conversation caches
* Migration for followed_tags table
* Followed tag caches and DB implementation
* Lint and tests
* Add missing tag info endpoint, reorganize tag API
* Unwrap boosts when timelining based on tags
* Apply visibility filters to tag followers
* Address review comments
Diffstat (limited to 'internal/cache/db.go')
-rw-r--r-- | internal/cache/db.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/internal/cache/db.go b/internal/cache/db.go index 16e1d286a..c1b87ef96 100644 --- a/internal/cache/db.go +++ b/internal/cache/db.go @@ -29,6 +29,9 @@ type DBCaches struct { // Account provides access to the gtsmodel Account database cache. Account StructCache[*gtsmodel.Account] + // AccountIDsFollowingTag caches account IDs following a given tag ID. + AccountIDsFollowingTag SliceCache[string] + // AccountNote provides access to the gtsmodel Note database cache. AccountNote StructCache[*gtsmodel.AccountNote] @@ -160,6 +163,9 @@ type DBCaches struct { // Tag provides access to the gtsmodel Tag database cache. Tag StructCache[*gtsmodel.Tag] + // TagIDsFollowedByAccount caches tag IDs followed by a given account ID. + TagIDsFollowedByAccount SliceCache[string] + // ThreadMute provides access to the gtsmodel ThreadMute database cache. ThreadMute StructCache[*gtsmodel.ThreadMute] @@ -234,6 +240,17 @@ func (c *Caches) initAccount() { }) } +func (c *Caches) initAccountIDsFollowingTag() { + // Calculate maximum cache size. + cap := calculateSliceCacheMax( + config.GetCacheAccountIDsFollowingTagMemRatio(), + ) + + log.Infof(nil, "cache size = %d", cap) + + c.DB.AccountIDsFollowingTag.Init(0, cap) +} + func (c *Caches) initAccountNote() { // Calculate maximum cache size. cap := calculateResultCacheMax( @@ -1317,6 +1334,17 @@ func (c *Caches) initTag() { }) } +func (c *Caches) initTagIDsFollowedByAccount() { + // Calculate maximum cache size. + cap := calculateSliceCacheMax( + config.GetCacheTagIDsFollowedByAccountMemRatio(), + ) + + log.Infof(nil, "cache size = %d", cap) + + c.DB.TagIDsFollowedByAccount.Init(0, cap) +} + func (c *Caches) initThreadMute() { cap := calculateResultCacheMax( sizeofThreadMute(), // model in-mem size. |