Skip to content

Commit b57c9cb

Browse files
committed
improve
1 parent 8aa7b81 commit b57c9cb

File tree

2 files changed

+42
-11
lines changed

2 files changed

+42
-11
lines changed

models/user/user.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,44 @@ func GetUserFollowing(ctx context.Context, u, viewer *User, listOptions db.ListO
353353
return users, count, err
354354
}
355355

356+
// GetUserFollowers returns range of user's followers.
357+
func GetUserFollowersCount(ctx context.Context, u, viewer *User, listOptions db.ListOptions) (int64, error) {
358+
sess := db.GetEngine(ctx).
359+
Select("`user`.*").
360+
Join("LEFT", "follow", "`user`.id=follow.user_id").
361+
Where("follow.follow_id=?", u.ID).
362+
And("`user`.type=?", UserTypeIndividual).
363+
And(isUserVisibleToViewerCond(viewer))
364+
365+
if listOptions.Page != 0 {
366+
sess = db.SetSessionPagination(sess, &listOptions)
367+
count, err := sess.Count()
368+
return count, err
369+
}
370+
371+
count, err := sess.Count()
372+
return count, err
373+
}
374+
375+
// GetUserFollowing returns range of user's following.
376+
func GetUserFollowingCount(ctx context.Context, u, viewer *User, listOptions db.ListOptions) (int64, error) {
377+
sess := db.GetEngine(db.DefaultContext).
378+
Select("`user`.*").
379+
Join("LEFT", "follow", "`user`.id=follow.follow_id").
380+
Where("follow.user_id=?", u.ID).
381+
And("`user`.type IN (?, ?)", UserTypeIndividual, UserTypeOrganization).
382+
And(isUserVisibleToViewerCond(viewer))
383+
384+
if listOptions.Page != 0 {
385+
sess = db.SetSessionPagination(sess, &listOptions)
386+
count, err := sess.Count()
387+
return count, err
388+
}
389+
390+
count, err := sess.Count()
391+
return count, err
392+
}
393+
356394
// NewGitSig generates and returns the signature of given user.
357395
func (u *User) NewGitSig() *git.Signature {
358396
return &git.Signature{

services/convert/user.go

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"code.gitea.io/gitea/models/db"
1010
"code.gitea.io/gitea/models/perm"
1111
user_model "code.gitea.io/gitea/models/user"
12-
"code.gitea.io/gitea/modules/setting"
1312
api "code.gitea.io/gitea/modules/structs"
1413
)
1514

@@ -66,22 +65,16 @@ func toUser(ctx context.Context, user, doer *user_model.User, accessMode perm.Ac
6665
signed = true
6766
authed = doer.ID == user.ID || doer.IsAdmin
6867

69-
_, followersCount, err := user_model.GetUserFollowers(ctx, user, doer, db.ListOptions{
70-
Page: 1,
71-
PageSize: setting.API.DefaultPagingNum,
72-
})
68+
count, err := user_model.GetUserFollowersCount(ctx, user, doer, db.ListOptions{ListAll: true})
7369
if err != nil {
7470
return nil
7571
}
76-
result.Followers = int(followersCount)
77-
_, followingCount, err := user_model.GetUserFollowing(ctx, user, doer, db.ListOptions{
78-
Page: 1,
79-
PageSize: setting.API.DefaultPagingNum,
80-
})
72+
result.Followers = int(count)
73+
count, err = user_model.GetUserFollowingCount(ctx, user, doer, db.ListOptions{ListAll: true})
8174
if err != nil {
8275
return nil
8376
}
84-
result.Following = int(followingCount)
77+
result.Following = int(count)
8578
} else if accessMode != perm.AccessModeNone {
8679
signed = true
8780
}

0 commit comments

Comments
 (0)