mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-20 08:34:12 +02:00
Some improvements
This commit is contained in:
10 files changed
+40
-38
No files matched your search
@@ -89,27 +89,27 @@ func GetLatestCombinedStatusForRepoAndSHAs(ctx context.Context, repoSHAs []RepoS
|
||||
return summaries, nil
|
||||
}
|
||||
|
||||
func UpdateCommitStatusSummary(ctx context.Context, repoID int64, sha string) error {
|
||||
func InsertOrUpdateCombinedStatus(ctx context.Context, repoID int64, sha string) error {
|
||||
commitStatuses, _, err := GetLatestCommitStatus(ctx, repoID, sha, db.ListOptionsAll)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
summary := CalcCombinedStatus(commitStatuses)
|
||||
combinedStatus := CalcCombinedStatus(commitStatuses)
|
||||
|
||||
// mysql will return 0 when update a record which state hasn't been changed which behaviour is different from other database,
|
||||
// so we need to use insert in on duplicate
|
||||
if setting.Database.Type.IsMySQL() {
|
||||
_, err := db.GetEngine(ctx).Exec("INSERT INTO commit_status_summary (repo_id,sha,state,target_url) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE state=?",
|
||||
repoID, sha, summary.State, summary.TargetURL, summary.State)
|
||||
repoID, sha, combinedStatus.State, combinedStatus.TargetURL, combinedStatus.State)
|
||||
return err
|
||||
}
|
||||
|
||||
if cnt, err := db.GetEngine(ctx).Where("repo_id=? AND sha=?", repoID, sha).
|
||||
Cols("state, target_url").
|
||||
Update(summary); err != nil {
|
||||
Update(combinedStatus); err != nil {
|
||||
return err
|
||||
} else if cnt == 0 {
|
||||
_, err = db.GetEngine(ctx).Insert(summary)
|
||||
_, err = db.GetEngine(ctx).Insert(combinedStatus)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -232,7 +232,7 @@ func CalcCombinedStatusState(statuses []*CommitStatus) commitstatus.CombinedStat
|
||||
for _, status := range statuses {
|
||||
states = append(states, status.State)
|
||||
}
|
||||
return states.Merge()
|
||||
return states.CalcAsCombinedStatusState()
|
||||
}
|
||||
|
||||
// CalcCombinedStatus returns combined status struct, the commit statuses should order by id desc
|
||||
@@ -252,7 +252,7 @@ func CalcCombinedStatus(statuses []*CommitStatus) *CombinedStatus {
|
||||
return &CombinedStatus{
|
||||
RepoID: statuses[0].RepoID,
|
||||
SHA: statuses[0].SHA,
|
||||
State: states.Merge(),
|
||||
State: states.CalcAsCombinedStatusState(),
|
||||
TargetURL: targetURL,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ func Test_CalcCommitStatus(t *testing.T) {
|
||||
State: commitstatus.CommitStatusPending,
|
||||
},
|
||||
},
|
||||
expected: commitstatus.CombinedStatusStatePending,
|
||||
expected: commitstatus.CombinedStatusPending,
|
||||
},
|
||||
{
|
||||
statuses: []*git_model.CommitStatus{
|
||||
@@ -89,7 +89,7 @@ func Test_CalcCommitStatus(t *testing.T) {
|
||||
State: commitstatus.CommitStatusPending,
|
||||
},
|
||||
},
|
||||
expected: commitstatus.CombinedStatusStatePending,
|
||||
expected: commitstatus.CombinedStatusPending,
|
||||
},
|
||||
{
|
||||
statuses: []*git_model.CommitStatus{
|
||||
@@ -103,7 +103,7 @@ func Test_CalcCommitStatus(t *testing.T) {
|
||||
State: commitstatus.CommitStatusSuccess,
|
||||
},
|
||||
},
|
||||
expected: commitstatus.CombinedStatusStatePending,
|
||||
expected: commitstatus.CombinedStatusPending,
|
||||
},
|
||||
{
|
||||
statuses: []*git_model.CommitStatus{
|
||||
@@ -117,7 +117,7 @@ func Test_CalcCommitStatus(t *testing.T) {
|
||||
State: commitstatus.CommitStatusSuccess,
|
||||
},
|
||||
},
|
||||
expected: commitstatus.CombinedStatusStateFailure,
|
||||
expected: commitstatus.CombinedStatusFailure,
|
||||
},
|
||||
{
|
||||
statuses: []*git_model.CommitStatus{
|
||||
@@ -131,7 +131,7 @@ func Test_CalcCommitStatus(t *testing.T) {
|
||||
State: commitstatus.CommitStatusSuccess,
|
||||
},
|
||||
},
|
||||
expected: commitstatus.CombinedStatusStatePending,
|
||||
expected: commitstatus.CombinedStatusPending,
|
||||
},
|
||||
{
|
||||
statuses: []*git_model.CommitStatus{
|
||||
@@ -145,7 +145,7 @@ func Test_CalcCommitStatus(t *testing.T) {
|
||||
State: commitstatus.CommitStatusSuccess,
|
||||
},
|
||||
},
|
||||
expected: commitstatus.CombinedStatusStateSuccess,
|
||||
expected: commitstatus.CombinedStatusSuccess,
|
||||
},
|
||||
{
|
||||
statuses: []*git_model.CommitStatus{
|
||||
@@ -159,7 +159,7 @@ func Test_CalcCommitStatus(t *testing.T) {
|
||||
State: commitstatus.CommitStatusWarning,
|
||||
},
|
||||
},
|
||||
expected: commitstatus.CombinedStatusStateFailure,
|
||||
expected: commitstatus.CombinedStatusFailure,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user