// GetStargazers returns the users that starred the repo. | // GetStargazers returns the users that starred the repo. | ||||
func (repo *Repository) GetStargazers(page int) ([]*User, error) { | func (repo *Repository) GetStargazers(page int) ([]*User, error) { | ||||
users := make([]*User, 0, ItemsPerPage) | users := make([]*User, 0, ItemsPerPage) | ||||
err := x. | |||||
Limit(ItemsPerPage, (page-1)*ItemsPerPage). | |||||
Where("star.repo_id = ?", repo.ID). | |||||
Join("LEFT", "star", "`user`.id = star.uid"). | |||||
Find(&users) | |||||
return users, err | |||||
sess := x.Where("star.repo_id = ?", repo.ID). | |||||
Join("LEFT", "star", "`user`.id = star.uid") | |||||
if page > 0 { | |||||
sess = sess.Limit(ItemsPerPage, (page-1)*ItemsPerPage) | |||||
} | |||||
return users, sess.Find(&users) | |||||
} | } | ||||
// GetStarredRepos returns the repos the user starred. | // GetStarredRepos returns the repos the user starred. |
Patch(reqRepoWriter(), bind(api.EditMilestoneOption{}), repo.EditMilestone). | Patch(reqRepoWriter(), bind(api.EditMilestoneOption{}), repo.EditMilestone). | ||||
Delete(reqRepoWriter(), repo.DeleteMilestone) | Delete(reqRepoWriter(), repo.DeleteMilestone) | ||||
}) | }) | ||||
m.Get("/stargazers", repo.ListStargazers) | |||||
m.Group("/subscription", func() { | m.Group("/subscription", func() { | ||||
m.Get("", user.IsWatching) | m.Get("", user.IsWatching) | ||||
m.Put("", user.Watch) | m.Put("", user.Watch) |
// Copyright 2017 The Gitea Authors. All rights reserved. | |||||
// Use of this source code is governed by a MIT-style | |||||
// license that can be found in the LICENSE file. | |||||
package repo | |||||
import ( | |||||
api "code.gitea.io/sdk/gitea" | |||||
"code.gitea.io/gitea/modules/context" | |||||
) | |||||
// ListStargazers list a repository's stargazers | |||||
func ListStargazers(ctx *context.APIContext) { | |||||
stargazers, err := ctx.Repo.Repository.GetStargazers(-1) | |||||
if err != nil { | |||||
ctx.Error(500, "GetStargazers", err) | |||||
return | |||||
} | |||||
users := make([]*api.User, len(stargazers)) | |||||
for i, stargazer := range stargazers { | |||||
users[i] = stargazer.APIFormat() | |||||
} | |||||
ctx.JSON(200, users) | |||||
} |