From f23f04e0b1d117be714bf91d5266dab219ed741e Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Sat, 24 Aug 2024 11:49:37 +0200 Subject: [feature] Interaction requests client api + settings panel (#3215) * [feature] Interaction requests client api + settings panel * test accept / reject * fmt * don't pin rejected interaction * use single db model for interaction accept, reject, and request * swaggor * env sharting * append errors * remove ErrNoEntries checks * change intReqID to reqID * rename "pend" to "request" * markIntsPending -> mark interactionsPending * use log instead of returning error when rejecting interaction * empty migration * jolly renaming * make interactionURI unique again * swag grr * remove unnecessary locks * invalidate as last step --- internal/cache/cache.go | 4 ++-- internal/cache/db.go | 23 ++++++++++++++--------- internal/cache/size.go | 11 ++++++----- 3 files changed, 22 insertions(+), 16 deletions(-) (limited to 'internal/cache') diff --git a/internal/cache/cache.go b/internal/cache/cache.go index 2949d528a..f1c382d11 100644 --- a/internal/cache/cache.go +++ b/internal/cache/cache.go @@ -81,7 +81,7 @@ func (c *Caches) Init() { c.initFollowRequestIDs() c.initInReplyToIDs() c.initInstance() - c.initInteractionApproval() + c.initInteractionRequest() c.initList() c.initListEntry() c.initMarker() @@ -158,7 +158,7 @@ func (c *Caches) Sweep(threshold float64) { c.DB.FollowRequestIDs.Trim(threshold) c.DB.InReplyToIDs.Trim(threshold) c.DB.Instance.Trim(threshold) - c.DB.InteractionApproval.Trim(threshold) + c.DB.InteractionRequest.Trim(threshold) c.DB.List.Trim(threshold) c.DB.ListEntry.Trim(threshold) c.DB.Marker.Trim(threshold) diff --git a/internal/cache/db.go b/internal/cache/db.go index c1b87ef96..5e86c92a2 100644 --- a/internal/cache/db.go +++ b/internal/cache/db.go @@ -106,8 +106,8 @@ type DBCaches struct { // Instance provides access to the gtsmodel Instance database cache. Instance StructCache[*gtsmodel.Instance] - // InteractionApproval provides access to the gtsmodel InteractionApproval database cache. - InteractionApproval StructCache[*gtsmodel.InteractionApproval] + // InteractionRequest provides access to the gtsmodel InteractionRequest database cache. + InteractionRequest StructCache[*gtsmodel.InteractionRequest] // InReplyToIDs provides access to the status in reply to IDs list database cache. InReplyToIDs SliceCache[string] @@ -802,31 +802,36 @@ func (c *Caches) initInstance() { }) } -func (c *Caches) initInteractionApproval() { +func (c *Caches) initInteractionRequest() { // Calculate maximum cache size. cap := calculateResultCacheMax( - sizeofInteractionApproval(), - config.GetCacheInteractionApprovalMemRatio(), + sizeofInteractionRequest(), + config.GetCacheInteractionRequestMemRatio(), ) log.Infof(nil, "cache size = %d", cap) - copyF := func(i1 *gtsmodel.InteractionApproval) *gtsmodel.InteractionApproval { - i2 := new(gtsmodel.InteractionApproval) + copyF := func(i1 *gtsmodel.InteractionRequest) *gtsmodel.InteractionRequest { + i2 := new(gtsmodel.InteractionRequest) *i2 = *i1 // Don't include ptr fields that // will be populated separately. // See internal/db/bundb/interaction.go. - i2.Account = nil + i2.Status = nil + i2.TargetAccount = nil i2.InteractingAccount = nil + i2.Like = nil + i2.Reply = nil + i2.Announce = nil return i2 } - c.DB.InteractionApproval.Init(structr.CacheConfig[*gtsmodel.InteractionApproval]{ + c.DB.InteractionRequest.Init(structr.CacheConfig[*gtsmodel.InteractionRequest]{ Indices: []structr.IndexConfig{ {Fields: "ID"}, + {Fields: "InteractionURI"}, {Fields: "URI"}, }, MaxSize: cap, diff --git a/internal/cache/size.go b/internal/cache/size.go index 4c474fa28..29ab77fbf 100644 --- a/internal/cache/size.go +++ b/internal/cache/size.go @@ -190,7 +190,7 @@ func totalOfRatios() float64 { config.GetCacheFollowRequestMemRatio() + config.GetCacheFollowRequestIDsMemRatio() + config.GetCacheInstanceMemRatio() + - config.GetCacheInteractionApprovalMemRatio() + + config.GetCacheInteractionRequestMemRatio() + config.GetCacheInReplyToIDsMemRatio() + config.GetCacheListMemRatio() + config.GetCacheListEntryMemRatio() + @@ -441,16 +441,17 @@ func sizeofInstance() uintptr { })) } -func sizeofInteractionApproval() uintptr { - return uintptr(size.Of(>smodel.InteractionApproval{ +func sizeofInteractionRequest() uintptr { + return uintptr(size.Of(>smodel.InteractionRequest{ ID: exampleID, CreatedAt: exampleTime, - UpdatedAt: exampleTime, - AccountID: exampleID, + StatusID: exampleID, + TargetAccountID: exampleID, InteractingAccountID: exampleID, InteractionURI: exampleURI, InteractionType: gtsmodel.InteractionAnnounce, URI: exampleURI, + AcceptedAt: exampleTime, })) } -- cgit v1.2.3