Skip to content

Commit e09fb30

Browse files
authored
improvement some release related code (#19867)
1 parent 0c759fd commit e09fb30

File tree

7 files changed

+35
-52
lines changed

7 files changed

+35
-52
lines changed

models/release.go

+9-23
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func init() {
5555
func (r *Release) loadAttributes(ctx context.Context) error {
5656
var err error
5757
if r.Repo == nil {
58-
r.Repo, err = repo_model.GetRepositoryByID(r.RepoID)
58+
r.Repo, err = repo_model.GetRepositoryByIDCtx(ctx, r.RepoID)
5959
if err != nil {
6060
return err
6161
}
@@ -99,24 +99,12 @@ func (r *Release) HTMLURL() string {
9999
}
100100

101101
// IsReleaseExist returns true if release with given tag name already exists.
102-
func IsReleaseExist(repoID int64, tagName string) (bool, error) {
102+
func IsReleaseExist(ctx context.Context, repoID int64, tagName string) (bool, error) {
103103
if len(tagName) == 0 {
104104
return false, nil
105105
}
106106

107-
return db.GetEngine(db.DefaultContext).Get(&Release{RepoID: repoID, LowerTagName: strings.ToLower(tagName)})
108-
}
109-
110-
// InsertRelease inserts a release
111-
func InsertRelease(rel *Release) error {
112-
_, err := db.GetEngine(db.DefaultContext).Insert(rel)
113-
return err
114-
}
115-
116-
// InsertReleasesContext insert releases
117-
func InsertReleasesContext(ctx context.Context, rels []*Release) error {
118-
_, err := db.GetEngine(ctx).Insert(rels)
119-
return err
107+
return db.GetEngine(ctx).Exist(&Release{RepoID: repoID, LowerTagName: strings.ToLower(tagName)})
120108
}
121109

122110
// UpdateRelease updates all columns of a release
@@ -149,22 +137,20 @@ func AddReleaseAttachments(ctx context.Context, releaseID int64, attachmentUUIDs
149137

150138
// GetRelease returns release by given ID.
151139
func GetRelease(repoID int64, tagName string) (*Release, error) {
152-
isExist, err := IsReleaseExist(repoID, tagName)
140+
rel := &Release{RepoID: repoID, LowerTagName: strings.ToLower(tagName)}
141+
has, err := db.GetEngine(db.DefaultContext).Get(rel)
153142
if err != nil {
154143
return nil, err
155-
} else if !isExist {
144+
} else if !has {
156145
return nil, ErrReleaseNotExist{0, tagName}
157146
}
158-
159-
rel := &Release{RepoID: repoID, LowerTagName: strings.ToLower(tagName)}
160-
_, err = db.GetEngine(db.DefaultContext).Get(rel)
161-
return rel, err
147+
return rel, nil
162148
}
163149

164150
// GetReleaseByID returns release with given ID.
165-
func GetReleaseByID(id int64) (*Release, error) {
151+
func GetReleaseByID(ctx context.Context, id int64) (*Release, error) {
166152
rel := new(Release)
167-
has, err := db.GetEngine(db.DefaultContext).
153+
has, err := db.GetEngine(ctx).
168154
ID(id).
169155
Get(rel)
170156
if err != nil {

models/repo.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1144,7 +1144,7 @@ func LinkedRepository(a *repo_model.Attachment) (*repo_model.Repository, unit.Ty
11441144
}
11451145
return repo, unitType, err
11461146
} else if a.ReleaseID != 0 {
1147-
rel, err := GetReleaseByID(a.ReleaseID)
1147+
rel, err := GetReleaseByID(db.DefaultContext, a.ReleaseID)
11481148
if err != nil {
11491149
return nil, unit.TypeReleases, err
11501150
}

routers/api/v1/repo/release.go

+10-9
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
api "code.gitea.io/gitea/modules/structs"
1616
"code.gitea.io/gitea/modules/web"
1717
"code.gitea.io/gitea/routers/api/v1/utils"
18-
releaseservice "code.gitea.io/gitea/services/release"
18+
release_service "code.gitea.io/gitea/services/release"
1919
)
2020

2121
// GetRelease get a single release of a repository
@@ -49,7 +49,7 @@ func GetRelease(ctx *context.APIContext) {
4949
// "$ref": "#/responses/notFound"
5050

5151
id := ctx.ParamsInt64(":id")
52-
release, err := models.GetReleaseByID(id)
52+
release, err := models.GetReleaseByID(ctx, id)
5353
if err != nil && !models.IsErrReleaseNotExist(err) {
5454
ctx.Error(http.StatusInternalServerError, "GetReleaseByID", err)
5555
return
@@ -202,7 +202,7 @@ func CreateRelease(ctx *context.APIContext) {
202202
IsTag: false,
203203
Repo: ctx.Repo.Repository,
204204
}
205-
if err := releaseservice.CreateRelease(ctx.Repo.GitRepo, rel, nil, ""); err != nil {
205+
if err := release_service.CreateRelease(ctx.Repo.GitRepo, rel, nil, ""); err != nil {
206206
if models.IsErrReleaseAlreadyExist(err) {
207207
ctx.Error(http.StatusConflict, "ReleaseAlreadyExist", err)
208208
} else {
@@ -225,7 +225,7 @@ func CreateRelease(ctx *context.APIContext) {
225225
rel.Repo = ctx.Repo.Repository
226226
rel.Publisher = ctx.Doer
227227

228-
if err = releaseservice.UpdateRelease(ctx.Doer, ctx.Repo.GitRepo, rel, nil, nil, nil); err != nil {
228+
if err = release_service.UpdateRelease(ctx.Doer, ctx.Repo.GitRepo, rel, nil, nil, nil); err != nil {
229229
ctx.Error(http.StatusInternalServerError, "UpdateRelease", err)
230230
return
231231
}
@@ -271,7 +271,7 @@ func EditRelease(ctx *context.APIContext) {
271271

272272
form := web.GetForm(ctx).(*api.EditReleaseOption)
273273
id := ctx.ParamsInt64(":id")
274-
rel, err := models.GetReleaseByID(id)
274+
rel, err := models.GetReleaseByID(ctx, id)
275275
if err != nil && !models.IsErrReleaseNotExist(err) {
276276
ctx.Error(http.StatusInternalServerError, "GetReleaseByID", err)
277277
return
@@ -300,12 +300,13 @@ func EditRelease(ctx *context.APIContext) {
300300
if form.IsPrerelease != nil {
301301
rel.IsPrerelease = *form.IsPrerelease
302302
}
303-
if err := releaseservice.UpdateRelease(ctx.Doer, ctx.Repo.GitRepo, rel, nil, nil, nil); err != nil {
303+
if err := release_service.UpdateRelease(ctx.Doer, ctx.Repo.GitRepo, rel, nil, nil, nil); err != nil {
304304
ctx.Error(http.StatusInternalServerError, "UpdateRelease", err)
305305
return
306306
}
307307

308-
rel, err = models.GetReleaseByID(id)
308+
// reload data from database
309+
rel, err = models.GetReleaseByID(ctx, id)
309310
if err != nil {
310311
ctx.Error(http.StatusInternalServerError, "GetReleaseByID", err)
311312
return
@@ -346,7 +347,7 @@ func DeleteRelease(ctx *context.APIContext) {
346347
// "$ref": "#/responses/notFound"
347348

348349
id := ctx.ParamsInt64(":id")
349-
rel, err := models.GetReleaseByID(id)
350+
rel, err := models.GetReleaseByID(ctx, id)
350351
if err != nil && !models.IsErrReleaseNotExist(err) {
351352
ctx.Error(http.StatusInternalServerError, "GetReleaseByID", err)
352353
return
@@ -356,7 +357,7 @@ func DeleteRelease(ctx *context.APIContext) {
356357
ctx.NotFound()
357358
return
358359
}
359-
if err := releaseservice.DeleteReleaseByID(ctx, id, ctx.Doer, false); err != nil {
360+
if err := release_service.DeleteReleaseByID(ctx, id, ctx.Doer, false); err != nil {
360361
ctx.Error(http.StatusInternalServerError, "DeleteReleaseByID", err)
361362
return
362363
}

routers/api/v1/repo/release_attachment.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func ListReleaseAttachments(ctx *context.APIContext) {
9898
// "$ref": "#/responses/AttachmentList"
9999

100100
releaseID := ctx.ParamsInt64(":id")
101-
release, err := models.GetReleaseByID(releaseID)
101+
release, err := models.GetReleaseByID(ctx, releaseID)
102102
if err != nil {
103103
ctx.Error(http.StatusInternalServerError, "GetReleaseByID", err)
104104
return
@@ -164,7 +164,7 @@ func CreateReleaseAttachment(ctx *context.APIContext) {
164164

165165
// Check if release exists an load release
166166
releaseID := ctx.ParamsInt64(":id")
167-
release, err := models.GetReleaseByID(releaseID)
167+
release, err := models.GetReleaseByID(ctx, releaseID)
168168
if err != nil {
169169
ctx.Error(http.StatusInternalServerError, "GetReleaseByID", err)
170170
return

services/release/release.go

+8-12
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,10 @@ func createTag(gitRepo *git.Repository, rel *models.Release, msg string) (bool,
112112

113113
// CreateRelease creates a new release of repository.
114114
func CreateRelease(gitRepo *git.Repository, rel *models.Release, attachmentUUIDs []string, msg string) error {
115-
isExist, err := models.IsReleaseExist(rel.RepoID, rel.TagName)
115+
has, err := models.IsReleaseExist(gitRepo.Ctx, rel.RepoID, rel.TagName)
116116
if err != nil {
117117
return err
118-
} else if isExist {
118+
} else if has {
119119
return models.ErrReleaseAlreadyExist{
120120
TagName: rel.TagName,
121121
}
@@ -126,7 +126,7 @@ func CreateRelease(gitRepo *git.Repository, rel *models.Release, attachmentUUIDs
126126
}
127127

128128
rel.LowerTagName = strings.ToLower(rel.TagName)
129-
if err = models.InsertRelease(rel); err != nil {
129+
if err = db.Insert(gitRepo.Ctx, rel); err != nil {
130130
return err
131131
}
132132

@@ -143,10 +143,10 @@ func CreateRelease(gitRepo *git.Repository, rel *models.Release, attachmentUUIDs
143143

144144
// CreateNewTag creates a new repository tag
145145
func CreateNewTag(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, commit, tagName, msg string) error {
146-
isExist, err := models.IsReleaseExist(repo.ID, tagName)
146+
has, err := models.IsReleaseExist(ctx, repo.ID, tagName)
147147
if err != nil {
148148
return err
149-
} else if isExist {
149+
} else if has {
150150
return models.ErrTagAlreadyExists{
151151
TagName: tagName,
152152
}
@@ -174,11 +174,7 @@ func CreateNewTag(ctx context.Context, doer *user_model.User, repo *repo_model.R
174174
return err
175175
}
176176

177-
if err = models.InsertRelease(rel); err != nil {
178-
return err
179-
}
180-
181-
return err
177+
return db.Insert(ctx, rel)
182178
}
183179

184180
// UpdateRelease updates information, attachments of a release and will create tag if it's not a draft and tag not exist.
@@ -286,12 +282,12 @@ func UpdateRelease(doer *user_model.User, gitRepo *git.Repository, rel *models.R
286282

287283
// DeleteReleaseByID deletes a release and corresponding Git tag by given ID.
288284
func DeleteReleaseByID(ctx context.Context, id int64, doer *user_model.User, delTag bool) error {
289-
rel, err := models.GetReleaseByID(id)
285+
rel, err := models.GetReleaseByID(ctx, id)
290286
if err != nil {
291287
return fmt.Errorf("GetReleaseByID: %v", err)
292288
}
293289

294-
repo, err := repo_model.GetRepositoryByID(rel.RepoID)
290+
repo, err := repo_model.GetRepositoryByIDCtx(ctx, rel.RepoID)
295291
if err != nil {
296292
return fmt.Errorf("GetRepositoryByID: %v", err)
297293
}

services/release/release_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ func TestRelease_Update(t *testing.T) {
162162
time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp
163163
release.Note = "Changed note"
164164
assert.NoError(t, UpdateRelease(user, gitRepo, release, nil, nil, nil))
165-
release, err = models.GetReleaseByID(release.ID)
165+
release, err = models.GetReleaseByID(db.DefaultContext, release.ID)
166166
assert.NoError(t, err)
167167
assert.Equal(t, int64(releaseCreatedUnix), int64(release.CreatedUnix))
168168

@@ -186,7 +186,7 @@ func TestRelease_Update(t *testing.T) {
186186
time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp
187187
release.Title = "Changed title"
188188
assert.NoError(t, UpdateRelease(user, gitRepo, release, nil, nil, nil))
189-
release, err = models.GetReleaseByID(release.ID)
189+
release, err = models.GetReleaseByID(db.DefaultContext, release.ID)
190190
assert.NoError(t, err)
191191
assert.Less(t, int64(releaseCreatedUnix), int64(release.CreatedUnix))
192192

@@ -211,7 +211,7 @@ func TestRelease_Update(t *testing.T) {
211211
release.Title = "Changed title"
212212
release.Note = "Changed note"
213213
assert.NoError(t, UpdateRelease(user, gitRepo, release, nil, nil, nil))
214-
release, err = models.GetReleaseByID(release.ID)
214+
release, err = models.GetReleaseByID(db.DefaultContext, release.ID)
215215
assert.NoError(t, err)
216216
assert.Equal(t, int64(releaseCreatedUnix), int64(release.CreatedUnix))
217217

@@ -236,7 +236,7 @@ func TestRelease_Update(t *testing.T) {
236236
tagName := release.TagName
237237

238238
assert.NoError(t, UpdateRelease(user, gitRepo, release, nil, nil, nil))
239-
release, err = models.GetReleaseByID(release.ID)
239+
release, err = models.GetReleaseByID(db.DefaultContext, release.ID)
240240
assert.NoError(t, err)
241241
assert.Equal(t, tagName, release.TagName)
242242

services/repository/push.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ func pushUpdateAddTags(ctx context.Context, repo *repo_model.Repository, gitRepo
399399
}
400400

401401
if len(newReleases) > 0 {
402-
if err = models.InsertReleasesContext(ctx, newReleases); err != nil {
402+
if err = db.Insert(ctx, newReleases); err != nil {
403403
return fmt.Errorf("Insert: %v", err)
404404
}
405405
}

0 commit comments

Comments
 (0)