Federation: return useful statistic information for nodeinfo (#19561)
Add statistic information for total user count, active user count, issue count and comment count for `/nodeinfo`
This commit is contained in:
parent
509d811243
commit
e2a3f3d259
11 changed files with 78 additions and 16 deletions
|
@ -590,3 +590,10 @@ func TestLoadTotalTrackedTime(t *testing.T) {
|
|||
|
||||
assert.Equal(t, int64(3682), milestone.TotalTrackedTime)
|
||||
}
|
||||
|
||||
func TestCountIssues(t *testing.T) {
|
||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||
count, err := CountIssues(&IssuesOptions{})
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 15, count)
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ type IssueByRepositoryCount struct {
|
|||
// GetStatistic returns the database statistics
|
||||
func GetStatistic() (stats Statistic) {
|
||||
e := db.GetEngine(db.DefaultContext)
|
||||
stats.Counter.User = user_model.CountUsers()
|
||||
stats.Counter.User = user_model.CountUsers(nil)
|
||||
stats.Counter.Org = organization.CountOrganizations()
|
||||
stats.Counter.PublicKey, _ = e.Count(new(asymkey_model.PublicKey))
|
||||
stats.Counter.Repo = repo_model.CountRepositories(true)
|
||||
|
|
|
@ -744,16 +744,25 @@ func CreateUser(u *User, overwriteDefault ...*CreateUserOverwriteOptions) (err e
|
|||
return committer.Commit()
|
||||
}
|
||||
|
||||
func countUsers(e db.Engine) int64 {
|
||||
count, _ := e.
|
||||
Where("type=0").
|
||||
Count(new(User))
|
||||
return count
|
||||
// CountUserFilter represent optional filters for CountUsers
|
||||
type CountUserFilter struct {
|
||||
LastLoginSince *int64
|
||||
}
|
||||
|
||||
// CountUsers returns number of users.
|
||||
func CountUsers() int64 {
|
||||
return countUsers(db.GetEngine(db.DefaultContext))
|
||||
func CountUsers(opts *CountUserFilter) int64 {
|
||||
return countUsers(db.DefaultContext, opts)
|
||||
}
|
||||
|
||||
func countUsers(ctx context.Context, opts *CountUserFilter) int64 {
|
||||
sess := db.GetEngine(ctx).Where(builder.Eq{"type": "0"})
|
||||
|
||||
if opts != nil && opts.LastLoginSince != nil {
|
||||
sess = sess.Where(builder.Gte{"last_login_unix": *opts.LastLoginSince})
|
||||
}
|
||||
|
||||
count, _ := sess.Count(new(User))
|
||||
return count
|
||||
}
|
||||
|
||||
// GetVerifyUser get user by verify code
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue