[bugfix] Deref stats async, serve stub collections if handshaking (#2990)

* [bugfix] Deref stats async, allow peek if handshaking

* don't return totalItems when handshaking or hiding collections

* use GetLimit()

* use StubAccountStats
This commit is contained in:
tobi 2024-06-11 11:54:59 +02:00 committed by GitHub
commit 611f9de39b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 412 additions and 261 deletions

View file

@ -140,10 +140,23 @@ type Account interface {
// Update local account settings.
UpdateAccountSettings(ctx context.Context, settings *gtsmodel.AccountSettings, columns ...string) error
// PopulateAccountStats gets (or creates and gets) account stats for
// the given account, and attaches them to the account model.
// PopulateAccountStats either creates account stats for the given
// account by performing COUNT(*) database queries, or retrieves
// existing stats from the database, and attaches stats to account.
//
// If account is local and stats were last regenerated > 48 hours ago,
// stats will always be regenerated using COUNT(*) queries, to prevent drift.
PopulateAccountStats(ctx context.Context, account *gtsmodel.Account) error
// StubAccountStats creates zeroed account stats for the given account,
// skipping COUNT(*) queries, upserts them in the DB, and attaches them
// to the account model.
//
// Useful following fresh dereference of a remote account, or fresh
// creation of a local account, when you know all COUNT(*) queries
// would return 0 anyway.
StubAccountStats(ctx context.Context, account *gtsmodel.Account) error
// RegenerateAccountStats creates, upserts, and returns stats
// for the given account, and attaches them to the account model.
//