Skip to content

Commit e0736bb

Browse files
committed
fix
1 parent ebf30ac commit e0736bb

11 files changed

Lines changed: 36 additions & 74 deletions

File tree

models/actions/run.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func (run *ActionRun) RefTooltip() string {
120120
}
121121

122122
// LoadAttributes load Repo TriggerUser if not loaded
123-
func (run *ActionRun) LoadAttributes(ctx context.Context) error {
123+
func (run *ActionRun) LoadAttributes(ctx context.Context) (err error) {
124124
if run == nil {
125125
return nil
126126
}
@@ -134,11 +134,10 @@ func (run *ActionRun) LoadAttributes(ctx context.Context) error {
134134
}
135135

136136
if run.TriggerUser == nil {
137-
u, err := user_model.GetPossibleUserByID(ctx, run.TriggerUserID)
137+
run.TriggerUserID, run.TriggerUser, err = user_model.GetPossibleUserByID(ctx, run.TriggerUserID)
138138
if err != nil {
139139
return err
140140
}
141-
run.TriggerUser = u
142141
}
143142

144143
return nil

models/actions/run_attempt.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func (attempt *ActionRunAttempt) Duration() time.Duration {
5050
return calculateDuration(attempt.Started, attempt.Stopped, attempt.Status, attempt.Updated)
5151
}
5252

53-
func (attempt *ActionRunAttempt) LoadAttributes(ctx context.Context) error {
53+
func (attempt *ActionRunAttempt) LoadAttributes(ctx context.Context) (err error) {
5454
if attempt == nil {
5555
return nil
5656
}
@@ -67,11 +67,10 @@ func (attempt *ActionRunAttempt) LoadAttributes(ctx context.Context) error {
6767
}
6868

6969
if attempt.TriggerUser == nil {
70-
u, err := user_model.GetPossibleUserByID(ctx, attempt.TriggerUserID)
70+
attempt.TriggerUserID, attempt.TriggerUser, err = user_model.GetPossibleUserByID(ctx, attempt.TriggerUserID)
7171
if err != nil {
7272
return err
7373
}
74-
attempt.TriggerUser = u
7574
}
7675

7776
return nil

models/activities/action.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -186,15 +186,7 @@ func (a *Action) LoadActUser(ctx context.Context) {
186186
if a.ActUser != nil {
187187
return
188188
}
189-
var err error
190-
a.ActUser, err = user_model.GetPossibleUserByID(ctx, a.ActUserID)
191-
if err == nil {
192-
return
193-
} else if user_model.IsErrUserNotExist(err) {
194-
a.ActUser = user_model.NewGhostUser()
195-
} else {
196-
log.Error("GetUserByID(%d): %v", a.ActUserID, err)
197-
}
189+
a.ActUserID, a.ActUser, _ = user_model.GetPossibleUserByID(ctx, a.ActUserID)
198190
}
199191

200192
func (a *Action) LoadRepo(ctx context.Context) error {

models/issues/comment.go

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -400,16 +400,7 @@ func (c *Comment) LoadPoster(ctx context.Context) (err error) {
400400
if c.Poster != nil {
401401
return nil
402402
}
403-
404-
c.Poster, err = user_model.GetPossibleUserByID(ctx, c.PosterID)
405-
if err != nil {
406-
if user_model.IsErrUserNotExist(err) {
407-
c.PosterID = user_model.GhostUserID
408-
c.Poster = user_model.NewGhostUser()
409-
} else {
410-
log.Error("getUserByID[%d]: %v", c.ID, err)
411-
}
412-
}
403+
c.PosterID, c.Poster, err = user_model.GetPossibleUserByID(ctx, c.PosterID)
413404
return err
414405
}
415406

models/issues/issue.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -175,17 +175,10 @@ func (issue *Issue) IsTimetrackerEnabled(ctx context.Context) bool {
175175

176176
// LoadPoster loads poster
177177
func (issue *Issue) LoadPoster(ctx context.Context) (err error) {
178-
if issue.Poster == nil && issue.PosterID != 0 {
179-
issue.Poster, err = user_model.GetPossibleUserByID(ctx, issue.PosterID)
180-
if err != nil {
181-
issue.PosterID = user_model.GhostUserID
182-
issue.Poster = user_model.NewGhostUser()
183-
if !user_model.IsErrUserNotExist(err) {
184-
return fmt.Errorf("getUserByID.(poster) [%d]: %w", issue.PosterID, err)
185-
}
186-
return nil
187-
}
178+
if issue.Poster != nil {
179+
return nil
188180
}
181+
issue.PosterID, issue.Poster, err = user_model.GetPossibleUserByID(ctx, issue.PosterID)
189182
return err
190183
}
191184

models/issues/review.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,7 @@ func (r *Review) LoadReviewer(ctx context.Context) (err error) {
176176
if r.ReviewerID == 0 || r.Reviewer != nil {
177177
return err
178178
}
179-
r.Reviewer, err = user_model.GetPossibleUserByID(ctx, r.ReviewerID)
180-
if err != nil {
181-
if !user_model.IsErrUserNotExist(err) {
182-
return fmt.Errorf("GetPossibleUserByID [%d]: %w", r.ReviewerID, err)
183-
}
184-
r.ReviewerID = user_model.GhostUserID
185-
r.Reviewer = user_model.NewGhostUser()
186-
return nil
187-
}
179+
r.ReviewerID, r.Reviewer, err = user_model.GetPossibleUserByID(ctx, r.ReviewerID)
188180
return err
189181
}
190182

models/pull/automerge.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,12 @@ package pull
55

66
import (
77
"context"
8-
"errors"
98
"fmt"
109

1110
"code.gitea.io/gitea/models/db"
1211
repo_model "code.gitea.io/gitea/models/repo"
1312
user_model "code.gitea.io/gitea/models/user"
1413
"code.gitea.io/gitea/modules/timeutil"
15-
"code.gitea.io/gitea/modules/util"
1614
)
1715

1816
// AutoMerge represents a pull request scheduled for merging when checks succeed
@@ -78,16 +76,8 @@ func GetScheduledMergeByPullID(ctx context.Context, pullID int64) (bool, *AutoMe
7876
return false, nil, err
7977
}
8078

81-
doer, err := user_model.GetPossibleUserByID(ctx, scheduledPRM.DoerID)
82-
if errors.Is(err, util.ErrNotExist) {
83-
doer, err = user_model.NewGhostUser(), nil
84-
}
85-
if err != nil {
86-
return false, nil, err
87-
}
88-
89-
scheduledPRM.Doer = doer
90-
return true, scheduledPRM, nil
79+
scheduledPRM.DoerID, scheduledPRM.Doer, err = user_model.GetPossibleUserByID(ctx, scheduledPRM.DoerID)
80+
return true, scheduledPRM, err
9181
}
9282

9383
// DeleteScheduledAutoMerge delete a scheduled pull request

models/user/user.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package user
77
import (
88
"context"
99
"encoding/hex"
10+
"errors"
1011
"fmt"
1112
"html/template"
1213
"mime"
@@ -1013,17 +1014,22 @@ func GetUserByIDs(ctx context.Context, ids []int64) ([]*User, error) {
10131014
return users, err
10141015
}
10151016

1016-
// GetPossibleUserByID returns the user if id > 0 or returns system user if id < 0
1017-
func GetPossibleUserByID(ctx context.Context, id int64) (*User, error) {
1017+
// GetPossibleUserByID returns the possible user and its ID. If the user doesn't exist, it returns Ghost user
1018+
func GetPossibleUserByID(ctx context.Context, id int64) (_ int64, u *User, err error) {
10181019
if id < 0 {
10191020
if newFunc, ok := globalVars().systemUserNewFuncs[id]; ok {
1020-
return newFunc(), nil
1021+
u = newFunc()
1022+
}
1023+
}
1024+
if u == nil {
1025+
u, err = GetUserByID(ctx, id)
1026+
if errors.Is(err, util.ErrNotExist) {
1027+
u = NewGhostUser()
1028+
} else if err != nil {
1029+
return 0, nil, err
10211030
}
1022-
return nil, ErrUserNotExist{UID: id}
1023-
} else if id == 0 {
1024-
return nil, ErrUserNotExist{}
10251031
}
1026-
return GetUserByID(ctx, id)
1032+
return u.ID, u, nil
10271033
}
10281034

10291035
// GetPossibleUserByIDs returns the users if id > 0 or returns system users if id < 0

models/user/user_system_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ import (
1111
)
1212

1313
func TestSystemUser(t *testing.T) {
14-
u, err := GetPossibleUserByID(t.Context(), -1)
14+
uid, u, err := GetPossibleUserByID(t.Context(), -1)
1515
require.NoError(t, err)
16+
assert.Equal(t, int64(-1), uid)
1617
assert.Equal(t, "Ghost", u.Name)
1718
assert.Equal(t, "ghost", u.LowerName)
1819
assert.True(t, u.IsGhost())
@@ -21,8 +22,9 @@ func TestSystemUser(t *testing.T) {
2122
require.NotNil(t, u)
2223
assert.Equal(t, "Ghost", u.Name)
2324

24-
u, err = GetPossibleUserByID(t.Context(), -2)
25+
uid, u, err = GetPossibleUserByID(t.Context(), -2)
2526
require.NoError(t, err)
27+
assert.Equal(t, int64(-2), uid)
2628
assert.Equal(t, "gitea-actions", u.Name)
2729
assert.Equal(t, "gitea-actions", u.LowerName)
2830
assert.True(t, u.IsGiteaActions())
@@ -31,6 +33,8 @@ func TestSystemUser(t *testing.T) {
3133
require.NotNil(t, u)
3234
assert.Equal(t, "Gitea Actions", u.FullName)
3335

34-
_, err = GetPossibleUserByID(t.Context(), -3)
35-
require.Error(t, err)
36+
uid, u, err = GetPossibleUserByID(t.Context(), 999999)
37+
require.NoError(t, err)
38+
assert.Equal(t, int64(-1), uid)
39+
assert.Equal(t, "Ghost", u.Name)
3640
}

routers/web/repo/release.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,9 @@ func getReleaseInfos(ctx *context.Context, opts *repo_model.FindReleasesOptions)
104104
releaseInfos := make([]*ReleaseInfo, 0, len(releases))
105105
for _, r := range releases {
106106
if r.Publisher, ok = cacheUsers[r.PublisherID]; !ok {
107-
r.Publisher, err = user_model.GetPossibleUserByID(ctx, r.PublisherID)
107+
r.PublisherID, r.Publisher, err = user_model.GetPossibleUserByID(ctx, r.PublisherID)
108108
if err != nil {
109-
if user_model.IsErrUserNotExist(err) {
110-
r.Publisher = user_model.NewGhostUser()
111-
} else {
112-
return nil, err
113-
}
109+
return nil, err
114110
}
115111
cacheUsers[r.PublisherID] = r.Publisher
116112
}

0 commit comments

Comments
 (0)