mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 16:01:32 +01:00 
			
		
		
		
	Use custom type and constants to hold order by options (#2572)
This commit is contained in:
		
							parent
							
								
									ca68a75b5b
								
							
						
					
					
						commit
						9a75a5d59b
					
				| @ -97,14 +97,14 @@ type SearchRepoOptions struct { | ||||
| 	// Owner in we search search | ||||
| 	// | ||||
| 	// in: query | ||||
| 	OwnerID     int64  `json:"uid"` | ||||
| 	Searcher    *User  `json:"-"` //ID of the person who's seeking | ||||
| 	OrderBy     string `json:"-"` | ||||
| 	Private     bool   `json:"-"` // Include private repositories in results | ||||
| 	Collaborate bool   `json:"-"` // Include collaborative repositories | ||||
| 	Starred     bool   `json:"-"` | ||||
| 	Page        int    `json:"-"` | ||||
| 	IsProfile   bool   `json:"-"` | ||||
| 	OwnerID     int64         `json:"uid"` | ||||
| 	Searcher    *User         `json:"-"` //ID of the person who's seeking | ||||
| 	OrderBy     SearchOrderBy `json:"-"` | ||||
| 	Private     bool          `json:"-"` // Include private repositories in results | ||||
| 	Collaborate bool          `json:"-"` // Include collaborative repositories | ||||
| 	Starred     bool          `json:"-"` | ||||
| 	Page        int           `json:"-"` | ||||
| 	IsProfile   bool          `json:"-"` | ||||
| 	// Limit of result | ||||
| 	// | ||||
| 	// maximum: setting.ExplorePagingNum | ||||
| @ -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 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user