aboutsummaryrefslogtreecommitdiffstats
path: root/models/git/commit_status.go
diff options
context:
space:
mode:
authorKN4CK3R <admin@oldschoolhack.me>2024-01-15 15:07:32 +0100
committerGitHub <noreply@github.com>2024-01-15 14:07:32 +0000
commit3793ec4d141c718462a273c02d147645c56c341a (patch)
treef1bdb905363cf6dc050c0b6ed366bb4704f1564f /models/git/commit_status.go
parentb0e6c255359f754fd94c81e5762ba634a4b23261 (diff)
downloadgitea-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.go54
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"
}
}