mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 20:36:07 +01:00 
			
		
		
		
	Use custom type and constants to hold order by options (#2572)
This commit is contained in:
		@@ -99,7 +99,7 @@ type SearchRepoOptions struct {
 | 
			
		||||
	// in: query
 | 
			
		||||
	OwnerID     int64         `json:"uid"`
 | 
			
		||||
	Searcher    *User         `json:"-"` //ID of the person who's seeking
 | 
			
		||||
	OrderBy     string `json:"-"`
 | 
			
		||||
	OrderBy     SearchOrderBy `json:"-"`
 | 
			
		||||
	Private     bool          `json:"-"` // Include private repositories in results
 | 
			
		||||
	Collaborate bool          `json:"-"` // Include collaborative repositories
 | 
			
		||||
	Starred     bool          `json:"-"`
 | 
			
		||||
@@ -112,6 +112,25 @@ type SearchRepoOptions struct {
 | 
			
		||||
	PageSize int `json:"limit"` // Can be smaller than or equal to setting.ExplorePagingNum
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//SearchOrderBy is used to sort the result
 | 
			
		||||
type SearchOrderBy string
 | 
			
		||||
 | 
			
		||||
func (s SearchOrderBy) String() string {
 | 
			
		||||
	return string(s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Strings for sorting result
 | 
			
		||||
const (
 | 
			
		||||
	SearchOrderByAlphabetically        SearchOrderBy = "name ASC"
 | 
			
		||||
	SearchOrderByAlphabeticallyReverse               = "name DESC"
 | 
			
		||||
	SearchOrderByLeastUpdated                        = "updated_unix ASC"
 | 
			
		||||
	SearchOrderByRecentUpdated                       = "updated_unix DESC"
 | 
			
		||||
	SearchOrderByOldest                              = "created_unix ASC"
 | 
			
		||||
	SearchOrderByNewest                              = "created_unix DESC"
 | 
			
		||||
	SearchOrderBySize                                = "size ASC"
 | 
			
		||||
	SearchOrderBySizeReverse                         = "size DESC"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// SearchRepositoryByName takes keyword and part of repository name to search,
 | 
			
		||||
// it returns results in given range and number of total results.
 | 
			
		||||
func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, count int64, err error) {
 | 
			
		||||
@@ -164,7 +183,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, coun
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(opts.OrderBy) == 0 {
 | 
			
		||||
		opts.OrderBy = "name ASC"
 | 
			
		||||
		opts.OrderBy = SearchOrderByAlphabetically
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	sess := x.NewSession()
 | 
			
		||||
@@ -193,7 +212,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, coun
 | 
			
		||||
	if err = sess.
 | 
			
		||||
		Where(cond).
 | 
			
		||||
		Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
 | 
			
		||||
		OrderBy(opts.OrderBy).
 | 
			
		||||
		OrderBy(opts.OrderBy.String()).
 | 
			
		||||
		Find(&repos); err != nil {
 | 
			
		||||
		return nil, 0, fmt.Errorf("Repo: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
@@ -217,7 +236,7 @@ func Repositories(opts *SearchRepoOptions) (_ RepositoryList, count int64, err e
 | 
			
		||||
 | 
			
		||||
	if err = x.
 | 
			
		||||
		Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
 | 
			
		||||
		OrderBy(opts.OrderBy).
 | 
			
		||||
		OrderBy(opts.OrderBy.String()).
 | 
			
		||||
		Find(&repos); err != nil {
 | 
			
		||||
		return nil, 0, fmt.Errorf("Repo: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
@@ -236,7 +255,7 @@ func GetRecentUpdatedRepositories(opts *SearchRepoOptions) (repos RepositoryList
 | 
			
		||||
	var cond = builder.NewCond()
 | 
			
		||||
 | 
			
		||||
	if len(opts.OrderBy) == 0 {
 | 
			
		||||
		opts.OrderBy = "updated_unix DESC"
 | 
			
		||||
		opts.OrderBy = SearchOrderByRecentUpdated
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !opts.Private {
 | 
			
		||||
@@ -270,7 +289,7 @@ func GetRecentUpdatedRepositories(opts *SearchRepoOptions) (repos RepositoryList
 | 
			
		||||
	if err = x.Where(cond).
 | 
			
		||||
		Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
 | 
			
		||||
		Limit(opts.PageSize).
 | 
			
		||||
		OrderBy(opts.OrderBy).
 | 
			
		||||
		OrderBy(opts.OrderBy.String()).
 | 
			
		||||
		Find(&repos); err != nil {
 | 
			
		||||
		return nil, 0, fmt.Errorf("Repo: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -86,27 +86,27 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
 | 
			
		||||
		repos   []*models.Repository
 | 
			
		||||
		count   int64
 | 
			
		||||
		err     error
 | 
			
		||||
		orderBy string
 | 
			
		||||
		orderBy models.SearchOrderBy
 | 
			
		||||
	)
 | 
			
		||||
	ctx.Data["SortType"] = ctx.Query("sort")
 | 
			
		||||
 | 
			
		||||
	switch ctx.Query("sort") {
 | 
			
		||||
	case "oldest":
 | 
			
		||||
		orderBy = "created_unix ASC"
 | 
			
		||||
		orderBy = models.SearchOrderByOldest
 | 
			
		||||
	case "recentupdate":
 | 
			
		||||
		orderBy = "updated_unix DESC"
 | 
			
		||||
		orderBy = models.SearchOrderByRecentUpdated
 | 
			
		||||
	case "leastupdate":
 | 
			
		||||
		orderBy = "updated_unix ASC"
 | 
			
		||||
		orderBy = models.SearchOrderByLeastUpdated
 | 
			
		||||
	case "reversealphabetically":
 | 
			
		||||
		orderBy = "name DESC"
 | 
			
		||||
		orderBy = models.SearchOrderByAlphabeticallyReverse
 | 
			
		||||
	case "alphabetically":
 | 
			
		||||
		orderBy = "name ASC"
 | 
			
		||||
		orderBy = models.SearchOrderByAlphabetically
 | 
			
		||||
	case "reversesize":
 | 
			
		||||
		orderBy = "size DESC"
 | 
			
		||||
		orderBy = models.SearchOrderBySizeReverse
 | 
			
		||||
	case "size":
 | 
			
		||||
		orderBy = "size ASC"
 | 
			
		||||
		orderBy = models.SearchOrderBySize
 | 
			
		||||
	default:
 | 
			
		||||
		orderBy = "created_unix DESC"
 | 
			
		||||
		orderBy = models.SearchOrderByNewest
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	keyword := strings.Trim(ctx.Query("q"), " ")
 | 
			
		||||
 
 | 
			
		||||
@@ -107,26 +107,26 @@ func Profile(ctx *context.Context) {
 | 
			
		||||
	var (
 | 
			
		||||
		repos   []*models.Repository
 | 
			
		||||
		count   int64
 | 
			
		||||
		orderBy string
 | 
			
		||||
		orderBy models.SearchOrderBy
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	ctx.Data["SortType"] = ctx.Query("sort")
 | 
			
		||||
	switch ctx.Query("sort") {
 | 
			
		||||
	case "newest":
 | 
			
		||||
		orderBy = "created_unix DESC"
 | 
			
		||||
		orderBy = models.SearchOrderByNewest
 | 
			
		||||
	case "oldest":
 | 
			
		||||
		orderBy = "created_unix ASC"
 | 
			
		||||
		orderBy = models.SearchOrderByOldest
 | 
			
		||||
	case "recentupdate":
 | 
			
		||||
		orderBy = "updated_unix DESC"
 | 
			
		||||
		orderBy = models.SearchOrderByRecentUpdated
 | 
			
		||||
	case "leastupdate":
 | 
			
		||||
		orderBy = "updated_unix ASC"
 | 
			
		||||
		orderBy = models.SearchOrderByLeastUpdated
 | 
			
		||||
	case "reversealphabetically":
 | 
			
		||||
		orderBy = "name DESC"
 | 
			
		||||
		orderBy = models.SearchOrderByAlphabeticallyReverse
 | 
			
		||||
	case "alphabetically":
 | 
			
		||||
		orderBy = "name ASC"
 | 
			
		||||
		orderBy = models.SearchOrderByAlphabetically
 | 
			
		||||
	default:
 | 
			
		||||
		ctx.Data["SortType"] = "recentupdate"
 | 
			
		||||
		orderBy = "updated_unix DESC"
 | 
			
		||||
		orderBy = models.SearchOrderByNewest
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// set default sort value if sort is empty.
 | 
			
		||||
@@ -149,7 +149,7 @@ func Profile(ctx *context.Context) {
 | 
			
		||||
	case "stars":
 | 
			
		||||
		ctx.Data["PageIsProfileStarList"] = true
 | 
			
		||||
		if len(keyword) == 0 {
 | 
			
		||||
			repos, err = ctxUser.GetStarredRepos(showPrivate, page, setting.UI.User.RepoPagingNum, orderBy)
 | 
			
		||||
			repos, err = ctxUser.GetStarredRepos(showPrivate, page, setting.UI.User.RepoPagingNum, orderBy.String())
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				ctx.Handle(500, "GetStarredRepos", err)
 | 
			
		||||
				return
 | 
			
		||||
@@ -182,7 +182,7 @@ func Profile(ctx *context.Context) {
 | 
			
		||||
	default:
 | 
			
		||||
		if len(keyword) == 0 {
 | 
			
		||||
			var total int
 | 
			
		||||
			repos, err = models.GetUserRepositories(ctxUser.ID, showPrivate, page, setting.UI.User.RepoPagingNum, orderBy)
 | 
			
		||||
			repos, err = models.GetUserRepositories(ctxUser.ID, showPrivate, page, setting.UI.User.RepoPagingNum, orderBy.String())
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				ctx.Handle(500, "GetRepositories", err)
 | 
			
		||||
				return
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user