mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[feature/performance] Store account stats in separate table (#2831)
* [feature/performance] Store account stats in separate table, get stats from remote * test account stats * add some missing increment / decrement calls * change stats function signatures * rejig logging a bit * use lock when updating stats
This commit is contained in:
@ -69,14 +69,18 @@ func (p *Processor) GetRSSFeedForUsername(ctx context.Context, username string)
|
||||
return nil, never, gtserror.NewErrorNotFound(err)
|
||||
}
|
||||
|
||||
// Ensure account stats populated.
|
||||
if account.Stats == nil {
|
||||
if err := p.state.DB.PopulateAccountStats(ctx, account); err != nil {
|
||||
err = gtserror.Newf("db error getting account stats %s: %w", username, err)
|
||||
return nil, never, gtserror.NewErrorInternalError(err)
|
||||
}
|
||||
}
|
||||
|
||||
// LastModified time is needed by callers to check freshness for cacheing.
|
||||
// This might be a zero time.Time if account has never posted a status that's
|
||||
// eligible to appear in the RSS feed; that's fine.
|
||||
lastPostAt, err := p.state.DB.GetAccountLastPosted(ctx, account.ID, true)
|
||||
if err != nil && !errors.Is(err, db.ErrNoEntries) {
|
||||
err = gtserror.Newf("db error getting account %s last posted: %w", username, err)
|
||||
return nil, never, gtserror.NewErrorInternalError(err)
|
||||
}
|
||||
lastPostAt := account.Stats.LastStatusAt
|
||||
|
||||
return func() (string, gtserror.WithCode) {
|
||||
// Assemble author namestring once only.
|
||||
|
Reference in New Issue
Block a user