api: support get releases endpoint (#6026)

This commit is contained in:
Philidor Green
2020-03-28 16:56:11 +03:00
committed by GitHub
parent af0cfe112b
commit 470274204e
3 changed files with 30 additions and 0 deletions

View File

@@ -267,6 +267,12 @@ func GetPublishedReleasesByRepoID(repoID int64, matches ...string) ([]*Release,
return releases, sess.Find(&releases, new(Release))
}
// GetReleasesByRepoID returns a list of all releases (including drafts) of given repository.
func GetReleasesByRepoID(repoID int64) ([]*Release, error) {
releases := make([]*Release, 0)
return releases, x.Where("repo_id = ?", repoID).Find(&releases)
}
// GetDraftReleasesByRepoID returns all draft releases of repository.
func GetDraftReleasesByRepoID(repoID int64) ([]*Release, error) {
releases := make([]*Release, 0)

View File

@@ -245,6 +245,7 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Get("/search", repo.Search)
m.Get("/:username/:reponame", repoAssignment(), repo.Get)
m.Get("/:username/:reponame/releases", repoAssignment(), repo.Releases)
})
m.Group("/repos", func() {

View File

@@ -403,3 +403,26 @@ func MirrorSync(c *context.APIContext) {
go db.MirrorQueue.Add(repo.ID)
c.Status(http.StatusAccepted)
}
func Releases(c *context.APIContext) {
_, repo := parseOwnerAndRepo(c)
releases, err := db.GetReleasesByRepoID(repo.ID)
if err != nil {
c.Error(err, "get releases by repository ID")
return
}
apiReleases := make([]*api.Release, 0, len(releases))
for _, r := range releases {
publisher, err := db.GetUserByID(r.PublisherID)
if err != nil {
c.Error(err, "get release publisher")
return
}
r.Publisher = publisher
}
for _, r := range releases {
apiReleases = append(apiReleases, r.APIFormat())
}
c.JSONSuccess(&apiReleases)
}