Skip to content

Commit ed80cfc

Browse files
committed
refactor: move load repoOwner of act.Repo into models
1 parent b782b0e commit ed80cfc

File tree

2 files changed

+37
-43
lines changed

2 files changed

+37
-43
lines changed

models/action_list.go

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func (actions ActionList) getUserIDs() []int64 {
2525
return keysInt64(userIDs)
2626
}
2727

28-
func (actions ActionList) loadUsers(e db.Engine) ([]*user_model.User, error) {
28+
func (actions ActionList) loadUsers(e db.Engine) (map[int64]*user_model.User, error) {
2929
if len(actions) == 0 {
3030
return nil, nil
3131
}
@@ -42,7 +42,7 @@ func (actions ActionList) loadUsers(e db.Engine) ([]*user_model.User, error) {
4242
for _, action := range actions {
4343
action.ActUser = userMaps[action.ActUserID]
4444
}
45-
return valuesUser(userMaps), nil
45+
return userMaps, nil
4646
}
4747

4848
func (actions ActionList) getRepoIDs() []int64 {
@@ -55,35 +55,57 @@ func (actions ActionList) getRepoIDs() []int64 {
5555
return keysInt64(repoIDs)
5656
}
5757

58-
func (actions ActionList) loadRepositories(e db.Engine) ([]*repo_model.Repository, error) {
58+
func (actions ActionList) loadRepositories(e db.Engine) error {
5959
if len(actions) == 0 {
60-
return nil, nil
60+
return nil
6161
}
6262

6363
repoIDs := actions.getRepoIDs()
6464
repoMaps := make(map[int64]*repo_model.Repository, len(repoIDs))
65-
err := e.
66-
In("id", repoIDs).
67-
Find(&repoMaps)
65+
err := e.In("id", repoIDs).Find(&repoMaps)
6866
if err != nil {
69-
return nil, fmt.Errorf("find repository: %v", err)
67+
return fmt.Errorf("find repository: %v", err)
7068
}
7169

7270
for _, action := range actions {
7371
action.Repo = repoMaps[action.RepoID]
7472
}
75-
return valuesRepository(repoMaps), nil
73+
return nil
7674
}
7775

78-
// loadAttributes loads all attributes
79-
func (actions ActionList) loadAttributes(e db.Engine) (err error) {
80-
if _, err = actions.loadUsers(e); err != nil {
81-
return
76+
func (actions ActionList) loadRepoOwner(e db.Engine, userMap map[int64]*user_model.User) (err error) {
77+
if userMap == nil {
78+
userMap = make(map[int64]*user_model.User)
8279
}
8380

84-
if _, err = actions.loadRepositories(e); err != nil {
85-
return
81+
for _, action := range actions {
82+
repoOwner, ok := userMap[action.Repo.OwnerID]
83+
if !ok {
84+
repoOwner, err = user_model.GetUserByID(action.Repo.OwnerID)
85+
if err != nil {
86+
if user_model.IsErrUserNotExist(err) {
87+
continue
88+
}
89+
return err
90+
}
91+
userMap[repoOwner.ID] = repoOwner
92+
}
93+
action.Repo.Owner = repoOwner
8694
}
8795

8896
return nil
8997
}
98+
99+
// loadAttributes loads all attributes
100+
func (actions ActionList) loadAttributes(e db.Engine) error {
101+
userMap, err := actions.loadUsers(e)
102+
if err != nil {
103+
return err
104+
}
105+
106+
if err := actions.loadRepositories(e); err != nil {
107+
return err
108+
}
109+
110+
return actions.loadRepoOwner(e, userMap)
111+
}

routers/web/feed/profile.go

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -23,34 +23,6 @@ func RetrieveFeeds(ctx *context.Context, options models.GetFeedsOptions) models.
2323
return nil
2424
}
2525

26-
// TODO: move load repoOwner of act.Repo into models.GetFeeds->loadAttributes()
27-
{
28-
userCache := map[int64]*user_model.User{options.RequestedUser.ID: options.RequestedUser}
29-
if ctx.User != nil {
30-
userCache[ctx.User.ID] = ctx.User
31-
}
32-
for _, act := range actions {
33-
if act.ActUser != nil {
34-
userCache[act.ActUserID] = act.ActUser
35-
}
36-
}
37-
for _, act := range actions {
38-
repoOwner, ok := userCache[act.Repo.OwnerID]
39-
if !ok {
40-
repoOwner, err = user_model.GetUserByID(act.Repo.OwnerID)
41-
if err != nil {
42-
if user_model.IsErrUserNotExist(err) {
43-
continue
44-
}
45-
ctx.ServerError("GetUserByID", err)
46-
return nil
47-
}
48-
userCache[repoOwner.ID] = repoOwner
49-
}
50-
act.Repo.Owner = repoOwner
51-
}
52-
}
53-
5426
return actions
5527
}
5628

0 commit comments

Comments
 (0)