Skip to content

Commit 8645c5c

Browse files
committed
improve
1 parent cc750a9 commit 8645c5c

File tree

2 files changed

+26
-44
lines changed

2 files changed

+26
-44
lines changed

models/user/user.go

Lines changed: 24 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"code.gitea.io/gitea/modules/validation"
3030

3131
"xorm.io/builder"
32+
"xorm.io/xorm"
3233
)
3334

3435
// UserType defines the user type
@@ -309,14 +310,27 @@ func (u *User) GenerateEmailActivateCode(email string) string {
309310
return code
310311
}
311312

312-
// GetUserFollowers returns range of user's followers.
313-
func GetUserFollowers(ctx context.Context, u, viewer *User, listOptions db.ListOptions) ([]*User, int64, error) {
314-
sess := db.GetEngine(ctx).
313+
func searchUserFollowers(ctx context.Context, u, viewer *User) *xorm.Session {
314+
return db.GetEngine(ctx).
315315
Select("`user`.*").
316316
Join("LEFT", "follow", "`user`.id=follow.user_id").
317317
Where("follow.follow_id=?", u.ID).
318318
And("`user`.type=?", UserTypeIndividual).
319319
And(isUserVisibleToViewerCond(viewer))
320+
}
321+
322+
func searchUserFollowing(ctx context.Context, u, viewer *User) *xorm.Session {
323+
return db.GetEngine(db.DefaultContext).
324+
Select("`user`.*").
325+
Join("LEFT", "follow", "`user`.id=follow.follow_id").
326+
Where("follow.user_id=?", u.ID).
327+
And("`user`.type IN (?, ?)", UserTypeIndividual, UserTypeOrganization).
328+
And(isUserVisibleToViewerCond(viewer))
329+
}
330+
331+
// GetUserFollowers returns range of user's followers.
332+
func GetUserFollowers(ctx context.Context, u, viewer *User, listOptions db.ListOptions) ([]*User, int64, error) {
333+
sess := searchUserFollowers(ctx, u, viewer)
320334

321335
if listOptions.Page != 0 {
322336
sess = db.SetSessionPagination(sess, &listOptions)
@@ -333,12 +347,7 @@ func GetUserFollowers(ctx context.Context, u, viewer *User, listOptions db.ListO
333347

334348
// GetUserFollowing returns range of user's following.
335349
func GetUserFollowing(ctx context.Context, u, viewer *User, listOptions db.ListOptions) ([]*User, int64, error) {
336-
sess := db.GetEngine(db.DefaultContext).
337-
Select("`user`.*").
338-
Join("LEFT", "follow", "`user`.id=follow.follow_id").
339-
Where("follow.user_id=?", u.ID).
340-
And("`user`.type IN (?, ?)", UserTypeIndividual, UserTypeOrganization).
341-
And(isUserVisibleToViewerCond(viewer))
350+
sess := searchUserFollowing(ctx, u, viewer)
342351

343352
if listOptions.Page != 0 {
344353
sess = db.SetSessionPagination(sess, &listOptions)
@@ -354,41 +363,15 @@ func GetUserFollowing(ctx context.Context, u, viewer *User, listOptions db.ListO
354363
}
355364

356365
// GetUserFollowersCount returns count 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
366+
func GetUserFollowersCount(ctx context.Context, u, viewer *User) (int64, error) {
367+
sess := searchUserFollowers(ctx, u, viewer)
368+
return sess.Count()
373369
}
374370

375371
// GetUserFollowingCount returns count 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
372+
func GetUserFollowingCount(ctx context.Context, u, viewer *User) (int64, error) {
373+
sess := searchUserFollowing(ctx, u, viewer)
374+
return sess.Count()
392375
}
393376

394377
// NewGitSig generates and returns the signature of given user.

services/convert/user.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package convert
66
import (
77
"context"
88

9-
"code.gitea.io/gitea/models/db"
109
"code.gitea.io/gitea/models/perm"
1110
user_model "code.gitea.io/gitea/models/user"
1211
api "code.gitea.io/gitea/modules/structs"
@@ -65,12 +64,12 @@ func toUser(ctx context.Context, user, doer *user_model.User, accessMode perm.Ac
6564
signed = true
6665
authed = doer.ID == user.ID || doer.IsAdmin
6766

68-
count, err := user_model.GetUserFollowersCount(ctx, user, doer, db.ListOptions{ListAll: true})
67+
count, err := user_model.GetUserFollowersCount(ctx, user, doer)
6968
if err != nil {
7069
return nil
7170
}
7271
result.Followers = int(count)
73-
count, err = user_model.GetUserFollowingCount(ctx, user, doer, db.ListOptions{ListAll: true})
72+
count, err = user_model.GetUserFollowingCount(ctx, user, doer)
7473
if err != nil {
7574
return nil
7675
}

0 commit comments

Comments
 (0)