Skip to content

Commit 82ca99d

Browse files
committed
Merge two functions with the same content
1 parent dfd7594 commit 82ca99d

File tree

6 files changed

+38
-29
lines changed

6 files changed

+38
-29
lines changed

models/repo/fork.go

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,17 @@ func GetRepositoriesByForkID(ctx context.Context, forkID int64) ([]*Repository,
2121
}
2222

2323
// GetForkedRepo checks if given user has already forked a repository with given ID.
24-
func GetForkedRepo(ctx context.Context, ownerID, repoID int64) *Repository {
24+
func GetForkedRepo(ctx context.Context, ownerID, repoID int64) (*Repository, error) {
2525
repo := new(Repository)
26-
has, _ := db.GetEngine(ctx).
26+
has, err := db.GetEngine(ctx).
2727
Where("owner_id=? AND fork_id=?", ownerID, repoID).
2828
Get(repo)
29-
if has {
30-
return repo
29+
if err != nil {
30+
return nil, err
31+
} else if has {
32+
return nil, ErrRepoNotExist{ID: repoID}
3133
}
32-
return nil
34+
return repo, nil
3335
}
3436

3537
// HasForkedRepo checks if given user has already forked a repository with given ID.
@@ -41,19 +43,6 @@ func HasForkedRepo(ctx context.Context, ownerID, repoID int64) bool {
4143
return has
4244
}
4345

44-
// GetUserFork return user forked repository from this repository, if not forked return nil
45-
func GetUserFork(ctx context.Context, repoID, userID int64) (*Repository, error) {
46-
var forkedRepo Repository
47-
has, err := db.GetEngine(ctx).Where("fork_id = ?", repoID).And("owner_id = ?", userID).Get(&forkedRepo)
48-
if err != nil {
49-
return nil, err
50-
}
51-
if !has {
52-
return nil, nil
53-
}
54-
return &forkedRepo, nil
55-
}
56-
5746
// IncrementRepoForkNum increment repository fork number
5847
func IncrementRepoForkNum(ctx context.Context, repoID int64) error {
5948
_, err := db.GetEngine(ctx).Exec("UPDATE `repository` SET num_forks=num_forks+1 WHERE id=?", repoID)
@@ -87,8 +76,8 @@ func GetForksByUserAndOrgs(ctx context.Context, user *user_model.User, repo *Rep
8776
if user == nil {
8877
return repoList, nil
8978
}
90-
forkedRepo, err := GetUserFork(ctx, repo.ID, user.ID)
91-
if err != nil {
79+
forkedRepo, err := GetForkedRepo(ctx, repo.ID, user.ID)
80+
if err != nil && !IsErrRepoNotExist(err) {
9281
return repoList, err
9382
}
9483
if forkedRepo != nil {

models/repo/fork_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ func TestGetUserFork(t *testing.T) {
2020
repo, err := repo_model.GetRepositoryByID(db.DefaultContext, 10)
2121
assert.NoError(t, err)
2222
assert.NotNil(t, repo)
23-
repo, err = repo_model.GetUserFork(db.DefaultContext, repo.ID, 13)
23+
repo, err = repo_model.GetForkedRepo(db.DefaultContext, repo.ID, 13)
2424
assert.NoError(t, err)
2525
assert.NotNil(t, repo)
2626

2727
repo, err = repo_model.GetRepositoryByID(db.DefaultContext, 9)
2828
assert.NoError(t, err)
2929
assert.NotNil(t, repo)
30-
repo, err = repo_model.GetUserFork(db.DefaultContext, repo.ID, 13)
30+
repo, err = repo_model.GetForkedRepo(db.DefaultContext, repo.ID, 13)
3131
assert.NoError(t, err)
3232
assert.Nil(t, repo)
3333
}

routers/api/v1/repo/pull.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1132,7 +1132,11 @@ func parseCompareInfo(ctx *context.APIContext, form api.CreatePullRequestOption)
11321132
}
11331133

11341134
// Check if current user has fork of repository or in the same repository.
1135-
headRepo := repo_model.GetForkedRepo(ctx, headUser.ID, baseRepo.ID)
1135+
headRepo, err := repo_model.GetForkedRepo(ctx, headUser.ID, baseRepo.ID)
1136+
if err != nil && !repo_model.IsErrRepoNotExist(err) {
1137+
ctx.Error(http.StatusInternalServerError, "GetForkedRepo", err)
1138+
return nil, nil, nil, "", ""
1139+
}
11361140
if headRepo == nil && !isSameRepo {
11371141
err := baseRepo.GetBaseRepo(ctx)
11381142
if err != nil {

routers/web/repo/compare.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,11 @@ func ParseCompareInfo(ctx *context.Context) *common.CompareInfo {
356356
// "OwnForkRepo"
357357
var ownForkRepo *repo_model.Repository
358358
if ctx.Doer != nil && baseRepo.OwnerID != ctx.Doer.ID {
359-
repo := repo_model.GetForkedRepo(ctx, ctx.Doer.ID, baseRepo.ID)
359+
repo, err := repo_model.GetForkedRepo(ctx, ctx.Doer.ID, baseRepo.ID)
360+
if err != nil && !repo_model.IsErrRepoNotExist(err) {
361+
ctx.ServerError("GetForkedRepo", err)
362+
return nil
363+
}
360364
if repo != nil {
361365
ownForkRepo = repo
362366
ctx.Data["OwnForkRepo"] = ownForkRepo
@@ -380,13 +384,21 @@ func ParseCompareInfo(ctx *context.Context) *common.CompareInfo {
380384

381385
// 5. If the headOwner has a fork of the baseRepo - use that
382386
if !has {
383-
ci.HeadRepo = repo_model.GetForkedRepo(ctx, ci.HeadUser.ID, baseRepo.ID)
387+
ci.HeadRepo, err = repo_model.GetForkedRepo(ctx, ci.HeadUser.ID, baseRepo.ID)
388+
if err != nil && !repo_model.IsErrRepoNotExist(err) {
389+
ctx.ServerError("GetForkedRepo", err)
390+
return nil
391+
}
384392
has = ci.HeadRepo != nil
385393
}
386394

387395
// 6. If the baseRepo is a fork and the headUser has a fork of that use that
388396
if !has && baseRepo.IsFork {
389-
ci.HeadRepo = repo_model.GetForkedRepo(ctx, ci.HeadUser.ID, baseRepo.ForkID)
397+
ci.HeadRepo, err = repo_model.GetForkedRepo(ctx, ci.HeadUser.ID, baseRepo.ForkID)
398+
if err != nil && !repo_model.IsErrRepoNotExist(err) {
399+
ctx.ServerError("GetForkedRepo", err)
400+
return nil
401+
}
390402
has = ci.HeadRepo != nil
391403
}
392404

routers/web/repo/fork.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,11 @@ func ForkPost(ctx *context.Context) {
166166
ctx.RenderWithErr(ctx.Tr("repo.settings.new_owner_has_same_repo"), tplFork, &form)
167167
return
168168
}
169-
repo := repo_model.GetForkedRepo(ctx, ctxUser.ID, traverseParentRepo.ID)
169+
repo, err := repo_model.GetForkedRepo(ctx, ctxUser.ID, traverseParentRepo.ID)
170+
if err != nil && !repo_model.IsErrRepoNotExist(err) {
171+
ctx.ServerError("GetForkedRepo", err)
172+
return
173+
}
170174
if repo != nil {
171175
ctx.Redirect(ctxUser.HomeLink() + "/" + url.PathEscape(repo.Name))
172176
return

services/repository/fork.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
7171
}
7272
}
7373

74-
forkedRepo, err := repo_model.GetUserFork(ctx, opts.BaseRepo.ID, owner.ID)
75-
if err != nil {
74+
forkedRepo, err := repo_model.GetForkedRepo(ctx, opts.BaseRepo.ID, owner.ID)
75+
if err != nil && !repo_model.IsErrRepoNotExist(err) {
7676
return nil, err
7777
}
7878
if forkedRepo != nil {

0 commit comments

Comments
 (0)