From ce3b8d565c80f17689ca7af2662cf59ff9733408 Mon Sep 17 00:00:00 2001 From: caicandong Date: Thu, 13 Jul 2023 13:39:35 +0800 Subject: [PATCH 1/4] refactor reuse SearchOrderBy --- models/db/search.go | 2 ++ models/git/commit_status.go | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) 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 c418cd23eb63c..22d7f69a01566 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()) } } From b5b2286a7141774714a44ee9f89ee45448dce90b Mon Sep 17 00:00:00 2001 From: caicandong Date: Thu, 13 Jul 2023 14:00:12 +0800 Subject: [PATCH 2/4] refactor project sort --- models/project/project.go | 16 +++++++++------- models/project/project_test.go | 2 +- routers/web/org/projects.go | 2 +- routers/web/repo/projects.go | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/models/project/project.go b/models/project/project.go index 6fa2adf604dc4..295b59c824c1b 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,22 +227,23 @@ 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) case "recentupdate": - return db.SearchOrderByRecentUpdated + sess.OrderBy(db.SearchOrderByRecentUpdated) case "leastupdate": - return db.SearchOrderByLeastUpdated + sess.OrderBy(db.SearchOrderByLeastUpdated) default: - return db.SearchOrderByNewest + sess.OrderBy(db.SearchOrderByNewest) } } // 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()).OrderBy(opts.OrderBy.String()) + e := db.GetEngine(ctx).Where(opts.toConds()) + sortProjectSession(e, opts.OrderBy) projects := make([]*Project, 0, setting.UI.IssuePagingNum) if opts.Page > 0 { 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 50bb5591e57aa..7c1c787754394 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 1574c90c02ed0..a09c1756c40b2 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 { From 1f6cff438e3a7bdc7f6b6a4ea3f30bfeca05356f Mon Sep 17 00:00:00 2001 From: caicandong Date: Thu, 13 Jul 2023 14:32:00 +0800 Subject: [PATCH 3/4] fix sortProjectSession bug --- models/project/project.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/models/project/project.go b/models/project/project.go index 295b59c824c1b..21597d6551029 100644 --- a/models/project/project.go +++ b/models/project/project.go @@ -230,13 +230,13 @@ func CountProjects(ctx context.Context, opts SearchOptions) (int64, error) { func sortProjectSession(sess *xorm.Session, sortType string) { switch sortType { case "oldest": - sess.OrderBy(db.SearchOrderByOldest) + sess.OrderBy(db.SearchOrderByOldest.String()) case "recentupdate": - sess.OrderBy(db.SearchOrderByRecentUpdated) + sess.OrderBy(db.SearchOrderByRecentUpdated.String()) case "leastupdate": - sess.OrderBy(db.SearchOrderByLeastUpdated) + sess.OrderBy(db.SearchOrderByLeastUpdated.String()) default: - sess.OrderBy(db.SearchOrderByNewest) + sess.OrderBy(db.SearchOrderByNewest.String()) } } From 256315773794f12110112a8bb4f7135ecd4c19e8 Mon Sep 17 00:00:00 2001 From: CaiCandong <1290147055@qq.com> Date: Mon, 31 Jul 2023 11:11:01 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix=20bug=C3=A2=C2=80=C3=A2=C2=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/project/project.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/project/project.go b/models/project/project.go index 2ca8777586cf5..48c1d34dcb338 100644 --- a/models/project/project.go +++ b/models/project/project.go @@ -243,7 +243,7 @@ func sortProjectSession(sess *xorm.Session, sortType 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() != "" { + if opts.OrderBy != "" { sortProjectSession(e, opts.OrderBy) } projects := make([]*Project, 0, setting.UI.IssuePagingNum)