summaryrefslogtreecommitdiffstats
path: root/models/repo.go
diff options
context:
space:
mode:
authorSpaWn2KiLl <SpaWn2KiLl@users.noreply.github.com>2020-01-24 19:00:29 +0000
committertechknowlogick <techknowlogick@gitea.io>2020-01-24 14:00:29 -0500
commit1f01f53c53ea75634f981611635be49c69e1920b (patch)
treedd99285ba1d9a8a888f8deccef7865e53901d859 /models/repo.go
parent333401e0fdca1abe096257479e7090c6e69985ec (diff)
downloadgitea-1f01f53c53ea75634f981611635be49c69e1920b.tar.gz
gitea-1f01f53c53ea75634f981611635be49c69e1920b.zip
API add/generalize pagination (#9452)
* paginate results * fixed deadlock * prevented breaking change * updated swagger * go fmt * fixed find topic * go mod tidy * go mod vendor with go1.13.5 * fixed repo find topics * fixed unit test * added Limit method to Engine struct; use engine variable when provided; fixed gitignore * use ItemsPerPage for default pagesize; fix GetWatchers, getOrgUsersByOrgID and GetStargazers; fix GetAllCommits headers; reverted some changed behaviors * set Page value on Home route * improved memory allocations * fixed response headers * removed logfiles * fixed import order * import order * improved swagger * added function to get models.ListOptions from context * removed pagesize diff on unit test * fixed imports * removed unnecessary struct field * fixed go fmt * scoped PR * code improvements * code improvements * go mod tidy * fixed import order * fixed commit statuses session * fixed files headers * fixed headers; added pagination for notifications * go mod tidy * go fmt * removed Private from user search options; added setting.UI.IssuePagingNum as default valeu on repo's issues list * Apply suggestions from code review Co-Authored-By: 6543 <6543@obermui.de> Co-Authored-By: zeripath <art27@cantab.net> * fixed build error * CI.restart() * fixed merge conflicts resolve * fixed conflicts resolve * improved FindTrackedTimesOptions.ToOptions() method * added backwards compatibility on ListReleases request; fixed issue tracked time ToSession * fixed build error; fixed swagger template * fixed swagger template * fixed ListReleases backwards compatibility * added page to user search route Co-authored-by: techknowlogick <matti@mdranta.net> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: zeripath <art27@cantab.net>
Diffstat (limited to 'models/repo.go')
-rw-r--r--models/repo.go43
1 files changed, 23 insertions, 20 deletions
diff --git a/models/repo.go b/models/repo.go
index ecff8482a7..aa7639e4ba 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -1024,7 +1024,7 @@ func CreateRepository(ctx DBContext, doer, u *User, repo *Repository) (err error
// Give access to all members in teams with access to all repositories.
if u.IsOrganization() {
- if err := u.GetTeams(); err != nil {
+ if err := u.GetTeams(&SearchTeamOptions{}); err != nil {
return fmt.Errorf("GetTeams: %v", err)
}
for _, t := range u.Teams {
@@ -1141,7 +1141,7 @@ func TransferOwnership(doer *User, newOwnerName string, repo *Repository) error
}
// Remove redundant collaborators.
- collaborators, err := repo.getCollaborators(sess)
+ collaborators, err := repo.getCollaborators(sess, ListOptions{})
if err != nil {
return fmt.Errorf("getCollaborators: %v", err)
}
@@ -1171,7 +1171,7 @@ func TransferOwnership(doer *User, newOwnerName string, repo *Repository) error
}
if newOwner.IsOrganization() {
- if err := newOwner.GetTeams(); err != nil {
+ if err := newOwner.GetTeams(&SearchTeamOptions{}); err != nil {
return fmt.Errorf("GetTeams: %v", err)
}
for _, t := range newOwner.Teams {
@@ -1422,7 +1422,7 @@ func DeleteRepository(doer *User, uid, repoID int64) error {
return err
}
if org.IsOrganization() {
- if err = org.GetTeams(); err != nil {
+ if err = org.GetTeams(&SearchTeamOptions{}); err != nil {
return err
}
}
@@ -1442,7 +1442,7 @@ func DeleteRepository(doer *User, uid, repoID int64) error {
}
// Delete Deploy Keys
- deployKeys, err := listDeployKeys(sess, repo.ID)
+ deployKeys, err := listDeployKeys(sess, repo.ID, ListOptions{})
if err != nil {
return fmt.Errorf("listDeployKeys: %v", err)
}
@@ -1701,25 +1701,22 @@ func GetRepositoriesMapByIDs(ids []int64) (map[int64]*Repository, error) {
}
// GetUserRepositories returns a list of repositories of given user.
-func GetUserRepositories(userID int64, private bool, page, pageSize int, orderBy string) ([]*Repository, error) {
- if len(orderBy) == 0 {
- orderBy = "updated_unix DESC"
+func GetUserRepositories(opts *SearchRepoOptions) ([]*Repository, error) {
+ if len(opts.OrderBy) == 0 {
+ opts.OrderBy = "updated_unix DESC"
}
sess := x.
- Where("owner_id = ?", userID).
- OrderBy(orderBy)
- if !private {
+ Where("owner_id = ?", opts.Actor.ID).
+ OrderBy(opts.OrderBy.String())
+ if !opts.Private {
sess.And("is_private=?", false)
}
- if page <= 0 {
- page = 1
- }
- sess.Limit(pageSize, (page-1)*pageSize)
+ sess = opts.setSessionPagination(sess)
- repos := make([]*Repository, 0, pageSize)
- return repos, sess.Find(&repos)
+ repos := make([]*Repository, 0, opts.PageSize)
+ return repos, opts.setSessionPagination(sess).Find(&repos)
}
// GetUserMirrorRepositories returns a list of mirror repositories of given user.
@@ -2029,9 +2026,15 @@ func CopyLFS(ctx DBContext, newRepo, oldRepo *Repository) error {
}
// GetForks returns all the forks of the repository
-func (repo *Repository) GetForks() ([]*Repository, error) {
- forks := make([]*Repository, 0, repo.NumForks)
- return forks, x.Find(&forks, &Repository{ForkID: repo.ID})
+func (repo *Repository) GetForks(listOptions ListOptions) ([]*Repository, error) {
+ if listOptions.Page == 0 {
+ forks := make([]*Repository, 0, repo.NumForks)
+ return forks, x.Find(&forks, &Repository{ForkID: repo.ID})
+ }
+
+ sess := listOptions.getPaginatedSession()
+ forks := make([]*Repository, 0, listOptions.PageSize)
+ return forks, sess.Find(&forks, &Repository{ForkID: repo.ID})
}
// GetUserFork return user forked repository from this repository, if not forked return nil