summaryrefslogtreecommitdiff
path: root/internal/db/bundb/account.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2024-06-11 11:54:59 +0200
committerLibravatar GitHub <noreply@github.com>2024-06-11 11:54:59 +0200
commit611f9de39b7a29e89616c9ffe76d2aca1194877b (patch)
treec5792f5c4c21070b608e0bb3b743edffbd190074 /internal/db/bundb/account.go
parent[bugfix] boost and account recursion (#2982) (diff)
downloadgotosocial-611f9de39b7a29e89616c9ffe76d2aca1194877b.tar.xz
[bugfix] Deref stats async, serve stub collections if handshaking (#2990)v0.16.0-rc2
* [bugfix] Deref stats async, allow peek if handshaking * don't return totalItems when handshaking or hiding collections * use GetLimit() * use StubAccountStats
Diffstat (limited to 'internal/db/bundb/account.go')
-rw-r--r--internal/db/bundb/account.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/internal/db/bundb/account.go b/internal/db/bundb/account.go
index eb5385c70..43978243a 100644
--- a/internal/db/bundb/account.go
+++ b/internal/db/bundb/account.go
@@ -1217,6 +1217,35 @@ func (a *accountDB) PopulateAccountStats(ctx context.Context, account *gtsmodel.
return nil
}
+func (a *accountDB) StubAccountStats(ctx context.Context, account *gtsmodel.Account) error {
+ stats := &gtsmodel.AccountStats{
+ AccountID: account.ID,
+ RegeneratedAt: time.Now(),
+ FollowersCount: util.Ptr(0),
+ FollowingCount: util.Ptr(0),
+ FollowRequestsCount: util.Ptr(0),
+ StatusesCount: util.Ptr(0),
+ StatusesPinnedCount: util.Ptr(0),
+ }
+
+ // Upsert this stats in case a race
+ // meant someone else inserted it first.
+ if err := a.state.Caches.GTS.AccountStats.Store(stats, func() error {
+ if _, err := NewUpsert(a.db).
+ Model(stats).
+ Constraint("account_id").
+ Exec(ctx); err != nil {
+ return err
+ }
+ return nil
+ }); err != nil {
+ return err
+ }
+
+ account.Stats = stats
+ return nil
+}
+
func (a *accountDB) RegenerateAccountStats(ctx context.Context, account *gtsmodel.Account) error {
// Initialize a new stats struct.
stats := &gtsmodel.AccountStats{