diff --git a/models/db/search.go b/models/db/search.go index aa577f08e0439..f4a03ddc24239 100644 --- a/models/db/search.go +++ b/models/db/search.go @@ -30,6 +30,8 @@ const ( SearchOrderByStarsReverse SearchOrderBy = "num_stars DESC" SearchOrderByForks SearchOrderBy = "num_forks ASC" SearchOrderByForksReverse SearchOrderBy = "num_forks DESC" + SearchOrderByLeastIndex SearchOrderBy = "index DESC" + SearchOrderByHighestIndex SearchOrderBy = "index ASC" ) const ( diff --git a/models/git/commit_status.go b/models/git/commit_status.go index 17090f30dd55b..c183ce700e360 100644 --- a/models/git/commit_status.go +++ b/models/git/commit_status.go @@ -254,17 +254,17 @@ func listCommitStatusesStatement(ctx context.Context, repo *repo_model.Repositor func sortCommitStatusesSession(sess *xorm.Session, sortType string) { switch sortType { case "oldest": - sess.Asc("created_unix") + sess.OrderBy(db.SearchOrderByOldest.String()) case "recentupdate": - sess.Desc("updated_unix") + sess.OrderBy(db.SearchOrderByRecentUpdated.String()) case "leastupdate": - sess.Asc("updated_unix") + sess.OrderBy(db.SearchOrderByLeastUpdated.String()) case "leastindex": - sess.Desc("index") + sess.OrderBy(db.SearchOrderByLeastIndex.String()) case "highestindex": - sess.Asc("index") + sess.OrderBy(db.SearchOrderByHighestIndex.String()) default: - sess.Desc("created_unix") + sess.OrderBy(db.SearchOrderByNewest.String()) } } diff --git a/models/project/project.go b/models/project/project.go index 17348a9443408..48c1d34dcb338 100644 --- a/models/project/project.go +++ b/models/project/project.go @@ -16,6 +16,7 @@ import ( "code.gitea.io/gitea/modules/util" "xorm.io/builder" + "xorm.io/xorm" ) type ( @@ -196,7 +197,7 @@ type SearchOptions struct { RepoID int64 Page int IsClosed util.OptionalBool - OrderBy db.SearchOrderBy + OrderBy string Type Type } @@ -226,24 +227,24 @@ func CountProjects(ctx context.Context, opts SearchOptions) (int64, error) { return db.GetEngine(ctx).Where(opts.toConds()).Count(new(Project)) } -func GetSearchOrderByBySortType(sortType string) db.SearchOrderBy { +func sortProjectSession(sess *xorm.Session, sortType string) { switch sortType { case "oldest": - return db.SearchOrderByOldest + sess.OrderBy(db.SearchOrderByOldest.String()) case "recentupdate": - return db.SearchOrderByRecentUpdated + sess.OrderBy(db.SearchOrderByRecentUpdated.String()) case "leastupdate": - return db.SearchOrderByLeastUpdated + sess.OrderBy(db.SearchOrderByLeastUpdated.String()) default: - return db.SearchOrderByNewest + sess.OrderBy(db.SearchOrderByNewest.String()) } } // FindProjects returns a list of all projects that have been created in the repository func FindProjects(ctx context.Context, opts SearchOptions) ([]*Project, int64, error) { e := db.GetEngine(ctx).Where(opts.toConds()) - if opts.OrderBy.String() != "" { - e = e.OrderBy(opts.OrderBy.String()) + if opts.OrderBy != "" { + sortProjectSession(e, opts.OrderBy) } projects := make([]*Project, 0, setting.UI.IssuePagingNum) diff --git a/models/project/project_test.go b/models/project/project_test.go index d1a471565367c..964ac1f4f58b9 100644 --- a/models/project/project_test.go +++ b/models/project/project_test.go @@ -110,7 +110,7 @@ func TestProjectsSort(t *testing.T) { for _, tt := range tests { projects, count, err := FindProjects(db.DefaultContext, SearchOptions{ - OrderBy: GetSearchOrderByBySortType(tt.sortType), + OrderBy: tt.sortType, }) assert.NoError(t, err) assert.EqualValues(t, int64(4), count) diff --git a/routers/web/org/projects.go b/routers/web/org/projects.go index ea6e7dff48ffd..6ce107dea4fbd 100644 --- a/routers/web/org/projects.go +++ b/routers/web/org/projects.go @@ -62,7 +62,7 @@ func Projects(ctx *context.Context) { OwnerID: ctx.ContextUser.ID, Page: page, IsClosed: util.OptionalBoolOf(isShowClosed), - OrderBy: project_model.GetSearchOrderByBySortType(sortType), + OrderBy: sortType, Type: projectType, }) if err != nil { diff --git a/routers/web/repo/projects.go b/routers/web/repo/projects.go index b8662e0605562..292b78fd1dd6c 100644 --- a/routers/web/repo/projects.go +++ b/routers/web/repo/projects.go @@ -74,7 +74,7 @@ func Projects(ctx *context.Context) { RepoID: repo.ID, Page: page, IsClosed: util.OptionalBoolOf(isShowClosed), - OrderBy: project_model.GetSearchOrderByBySortType(sortType), + OrderBy: sortType, Type: project_model.TypeRepository, }) if err != nil {