mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 07:22:24 -05:00
[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
This commit is contained in:
parent
8e5a72ac5c
commit
f23f04e0b1
72 changed files with 4446 additions and 663 deletions
4
internal/cache/cache.go
vendored
4
internal/cache/cache.go
vendored
|
|
@ -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)
|
||||
|
|
|
|||
23
internal/cache/db.go
vendored
23
internal/cache/db.go
vendored
|
|
@ -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,
|
||||
|
|
|
|||
11
internal/cache/size.go
vendored
11
internal/cache/size.go
vendored
|
|
@ -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,
|
||||
}))
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue