diff options
author | KN4CK3R <admin@oldschoolhack.me> | 2024-01-15 15:07:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-15 14:07:32 +0000 |
commit | 3793ec4d141c718462a273c02d147645c56c341a (patch) | |
tree | f1bdb905363cf6dc050c0b6ed366bb4704f1564f /models/git/commit_status.go | |
parent | b0e6c255359f754fd94c81e5762ba634a4b23261 (diff) | |
download | gitea-3793ec4d141c718462a273c02d147645c56c341a.tar.gz gitea-3793ec4d141c718462a273c02d147645c56c341a.zip |
Fix `GetCommitStatuses` (#28787)
Fixes #28764.
Diffstat (limited to 'models/git/commit_status.go')
-rw-r--r-- | models/git/commit_status.go | 54 |
1 files changed, 19 insertions, 35 deletions
diff --git a/models/git/commit_status.go b/models/git/commit_status.go index 488e45de26..c126d17f20 100644 --- a/models/git/commit_status.go +++ b/models/git/commit_status.go @@ -25,7 +25,6 @@ import ( "code.gitea.io/gitea/modules/translation" "xorm.io/builder" - "xorm.io/xorm" ) // CommitStatus holds a single Status of a single Commit @@ -221,57 +220,42 @@ func CalcCommitStatus(statuses []*CommitStatus) *CommitStatus { // CommitStatusOptions holds the options for query commit statuses type CommitStatusOptions struct { db.ListOptions + RepoID int64 + SHA string State string SortType string } -// GetCommitStatuses returns all statuses for a given commit. -func GetCommitStatuses(ctx context.Context, repo *repo_model.Repository, sha string, opts *CommitStatusOptions) ([]*CommitStatus, int64, error) { - if opts.Page <= 0 { - opts.Page = 1 - } - if opts.PageSize <= 0 { - opts.Page = setting.ItemsPerPage - } - - countSession := listCommitStatusesStatement(ctx, repo, sha, opts) - countSession = db.SetSessionPagination(countSession, opts) - maxResults, err := countSession.Count(new(CommitStatus)) - if err != nil { - log.Error("Count PRs: %v", err) - return nil, maxResults, err +func (opts *CommitStatusOptions) ToConds() builder.Cond { + var cond builder.Cond = builder.Eq{ + "repo_id": opts.RepoID, + "sha": opts.SHA, } - statuses := make([]*CommitStatus, 0, opts.PageSize) - findSession := listCommitStatusesStatement(ctx, repo, sha, opts) - findSession = db.SetSessionPagination(findSession, opts) - sortCommitStatusesSession(findSession, opts.SortType) - return statuses, maxResults, findSession.Find(&statuses) -} - -func listCommitStatusesStatement(ctx context.Context, repo *repo_model.Repository, sha string, opts *CommitStatusOptions) *xorm.Session { - sess := db.GetEngine(ctx).Where("repo_id = ?", repo.ID).And("sha = ?", sha) switch opts.State { case "pending", "success", "error", "failure", "warning": - sess.And("state = ?", opts.State) + cond = cond.And(builder.Eq{ + "state": opts.State, + }) } - return sess + + return cond } -func sortCommitStatusesSession(sess *xorm.Session, sortType string) { - switch sortType { +func (opts *CommitStatusOptions) ToOrders() string { + switch opts.SortType { case "oldest": - sess.Asc("created_unix") + return "created_unix ASC" case "recentupdate": - sess.Desc("updated_unix") + return "updated_unix DESC" case "leastupdate": - sess.Asc("updated_unix") + return "updated_unix ASC" case "leastindex": - sess.Desc("index") + return "`index` DESC" case "highestindex": - sess.Asc("index") + return "`index` ASC" default: - sess.Desc("created_unix") + return "created_unix DESC" } } |