diff options
author | 2024-04-16 13:10:13 +0200 | |
---|---|---|
committer | 2024-04-16 13:10:13 +0200 | |
commit | 3cceed11b28b5f42a653d85ed779d652fd8c26ad (patch) | |
tree | 0a7f0994e477609ca705a45f382dfb62056b196e /internal/gtsmodel/accountstats.go | |
parent | [performance] cached oauth database types (#2838) (diff) | |
download | gotosocial-3cceed11b28b5f42a653d85ed779d652fd8c26ad.tar.xz |
[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
Diffstat (limited to 'internal/gtsmodel/accountstats.go')
-rw-r--r-- | internal/gtsmodel/accountstats.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/internal/gtsmodel/accountstats.go b/internal/gtsmodel/accountstats.go new file mode 100644 index 000000000..92b50d5e3 --- /dev/null +++ b/internal/gtsmodel/accountstats.go @@ -0,0 +1,33 @@ +// GoToSocial +// Copyright (C) GoToSocial Authors admin@gotosocial.org +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + +package gtsmodel + +import "time" + +// AccountStats models statistics +// for a remote or local account. +type AccountStats struct { + AccountID string `bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // AccountID of this AccountStats. + RegeneratedAt time.Time `bun:"type:timestamptz,nullzero"` // Time this stats model was last regenerated (ie., created from scratch using COUNTs). + FollowersCount *int `bun:",nullzero,notnull"` // Number of accounts following AccountID. + FollowingCount *int `bun:",nullzero,notnull"` // Number of accounts followed by AccountID. + FollowRequestsCount *int `bun:",nullzero,notnull"` // Number of pending follow requests aimed at AccountID. + StatusesCount *int `bun:",nullzero,notnull"` // Number of statuses created by AccountID. + StatusesPinnedCount *int `bun:",nullzero,notnull"` // Number of statuses pinned by AccountID. + LastStatusAt time.Time `bun:"type:timestamptz,nullzero"` // Time of most recent status created by AccountID. +} |