diff options
Diffstat (limited to 'internal/db/bundb/account.go')
-rw-r--r-- | internal/db/bundb/account.go | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/internal/db/bundb/account.go b/internal/db/bundb/account.go index 94fd054bf..b57dcb57b 100644 --- a/internal/db/bundb/account.go +++ b/internal/db/bundb/account.go @@ -1285,34 +1285,40 @@ func (a *accountDB) RegenerateAccountStats(ctx context.Context, account *gtsmode if err := a.db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error { var err error - // Scan database for account statuses. + // Scan database for account statuses, ignoring + // statuses that are currently pending approval. statusesCount, err := tx.NewSelect(). - Table("statuses"). - Where("? = ?", bun.Ident("account_id"), account.ID). + TableExpr("? AS ?", bun.Ident("statuses"), bun.Ident("status")). + Where("? = ?", bun.Ident("status.account_id"), account.ID). + Where("NOT ? = ?", bun.Ident("status.pending_approval"), true). Count(ctx) if err != nil { return err } stats.StatusesCount = &statusesCount - // Scan database for pinned statuses. + // Scan database for pinned statuses, ignoring + // statuses that are currently pending approval. statusesPinnedCount, err := tx.NewSelect(). - Table("statuses"). - Where("? = ?", bun.Ident("account_id"), account.ID). - Where("? IS NOT NULL", bun.Ident("pinned_at")). + TableExpr("? AS ?", bun.Ident("statuses"), bun.Ident("status")). + Where("? = ?", bun.Ident("status.account_id"), account.ID). + Where("? IS NOT NULL", bun.Ident("status.pinned_at")). + Where("NOT ? = ?", bun.Ident("status.pending_approval"), true). Count(ctx) if err != nil { return err } stats.StatusesPinnedCount = &statusesPinnedCount - // Scan database for last status. + // Scan database for last status, ignoring + // statuses that are currently pending approval. lastStatusAt := time.Time{} err = tx. NewSelect(). TableExpr("? AS ?", bun.Ident("statuses"), bun.Ident("status")). Column("status.created_at"). Where("? = ?", bun.Ident("status.account_id"), account.ID). + Where("NOT ? = ?", bun.Ident("status.pending_approval"), true). Order("status.id DESC"). Limit(1). Scan(ctx, &lastStatusAt) |