mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2026-01-07 02:43:15 -06:00
[feature] Create/update/remove domain permission subscriptions
This commit is contained in:
parent
8504043024
commit
a3743f8234
44 changed files with 4389 additions and 171 deletions
1
internal/cache/cache.go
vendored
1
internal/cache/cache.go
vendored
|
|
@ -75,6 +75,7 @@ func (c *Caches) Init() {
|
|||
c.initDomainAllow()
|
||||
c.initDomainBlock()
|
||||
c.initDomainPermissionDraft()
|
||||
c.initDomainPermissionSubscription()
|
||||
c.initDomainPermissionExclude()
|
||||
c.initEmoji()
|
||||
c.initEmojiCategory()
|
||||
|
|
|
|||
34
internal/cache/db.go
vendored
34
internal/cache/db.go
vendored
|
|
@ -70,6 +70,9 @@ type DBCaches struct {
|
|||
// DomainPermissionDraft provides access to the domain permission draft database cache.
|
||||
DomainPermissionDraft StructCache[*gtsmodel.DomainPermissionDraft]
|
||||
|
||||
// DomainPermissionSubscription provides access to the domain permission subscription database cache.
|
||||
DomainPermissionSubscription StructCache[*gtsmodel.DomainPermissionSubscription]
|
||||
|
||||
// DomainPermissionExclude provides access to the domain permission exclude database cache.
|
||||
DomainPermissionExclude *domain.Cache
|
||||
|
||||
|
|
@ -589,6 +592,37 @@ func (c *Caches) initDomainPermissionDraft() {
|
|||
})
|
||||
}
|
||||
|
||||
func (c *Caches) initDomainPermissionSubscription() {
|
||||
// Calculate maximum cache size.
|
||||
cap := calculateResultCacheMax(
|
||||
sizeofDomainPermissionSubscription(), // model in-mem size.
|
||||
config.GetCacheDomainPermissionSubscriptionMemRation(),
|
||||
)
|
||||
|
||||
log.Infof(nil, "cache size = %d", cap)
|
||||
|
||||
copyF := func(d1 *gtsmodel.DomainPermissionSubscription) *gtsmodel.DomainPermissionSubscription {
|
||||
d2 := new(gtsmodel.DomainPermissionSubscription)
|
||||
*d2 = *d1
|
||||
|
||||
// Don't include ptr fields that
|
||||
// will be populated separately.
|
||||
d2.CreatedByAccount = nil
|
||||
|
||||
return d2
|
||||
}
|
||||
|
||||
c.DB.DomainPermissionSubscription.Init(structr.CacheConfig[*gtsmodel.DomainPermissionSubscription]{
|
||||
Indices: []structr.IndexConfig{
|
||||
{Fields: "ID"},
|
||||
{Fields: "URI"},
|
||||
},
|
||||
MaxSize: cap,
|
||||
IgnoreErr: ignoreErrors,
|
||||
Copy: copyF,
|
||||
})
|
||||
}
|
||||
|
||||
func (c *Caches) initDomainPermissionExclude() {
|
||||
c.DB.DomainPermissionExclude = new(domain.Cache)
|
||||
}
|
||||
|
|
|
|||
20
internal/cache/size.go
vendored
20
internal/cache/size.go
vendored
|
|
@ -357,6 +357,26 @@ func sizeofDomainPermissionDraft() uintptr {
|
|||
}))
|
||||
}
|
||||
|
||||
func sizeofDomainPermissionSubscription() uintptr {
|
||||
return uintptr(size.Of(>smodel.DomainPermissionSubscription{
|
||||
ID: exampleID,
|
||||
Priority: uint8(255),
|
||||
Title: exampleTextSmall,
|
||||
PermissionType: gtsmodel.DomainPermissionBlock,
|
||||
AsDraft: util.Ptr(true),
|
||||
CreatedByAccountID: exampleID,
|
||||
URI: exampleURI,
|
||||
ContentType: gtsmodel.DomainPermSubContentTypeCSV,
|
||||
FetchUsername: "username",
|
||||
FetchPassword: "password",
|
||||
FetchedAt: exampleTime,
|
||||
SuccessfullyFetchedAt: exampleTime,
|
||||
ETag: exampleID,
|
||||
Error: exampleTextSmall,
|
||||
Count: 100,
|
||||
}))
|
||||
}
|
||||
|
||||
func sizeofEmoji() uintptr {
|
||||
return uintptr(size.Of(>smodel.Emoji{
|
||||
ID: exampleID,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue