mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 10:56:10 +01:00 
			
		
		
		
	Fix commitstatus summary (#30431)
The target_url is necessary for the UI, but missed in commit_status_summary table. This PR fix it. --------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: Giteabot <teabot@gitea.io>
This commit is contained in:
		| @@ -15,10 +15,11 @@ import ( | ||||
|  | ||||
| // CommitStatusSummary holds the latest commit Status of a single Commit | ||||
| type CommitStatusSummary struct { | ||||
| 	ID     int64                 `xorm:"pk autoincr"` | ||||
| 	RepoID int64                 `xorm:"INDEX UNIQUE(repo_id_sha)"` | ||||
| 	SHA    string                `xorm:"VARCHAR(64) NOT NULL INDEX UNIQUE(repo_id_sha)"` | ||||
| 	State  api.CommitStatusState `xorm:"VARCHAR(7) NOT NULL"` | ||||
| 	ID        int64                 `xorm:"pk autoincr"` | ||||
| 	RepoID    int64                 `xorm:"INDEX UNIQUE(repo_id_sha)"` | ||||
| 	SHA       string                `xorm:"VARCHAR(64) NOT NULL INDEX UNIQUE(repo_id_sha)"` | ||||
| 	State     api.CommitStatusState `xorm:"VARCHAR(7) NOT NULL"` | ||||
| 	TargetURL string                `xorm:"TEXT"` | ||||
| } | ||||
|  | ||||
| func init() { | ||||
| @@ -44,9 +45,10 @@ func GetLatestCommitStatusForRepoAndSHAs(ctx context.Context, repoSHAs []RepoSHA | ||||
| 	commitStatuses := make([]*CommitStatus, 0, len(repoSHAs)) | ||||
| 	for _, summary := range summaries { | ||||
| 		commitStatuses = append(commitStatuses, &CommitStatus{ | ||||
| 			RepoID: summary.RepoID, | ||||
| 			SHA:    summary.SHA, | ||||
| 			State:  summary.State, | ||||
| 			RepoID:    summary.RepoID, | ||||
| 			SHA:       summary.SHA, | ||||
| 			State:     summary.State, | ||||
| 			TargetURL: summary.TargetURL, | ||||
| 		}) | ||||
| 	} | ||||
| 	return commitStatuses, nil | ||||
| @@ -61,22 +63,24 @@ func UpdateCommitStatusSummary(ctx context.Context, repoID int64, sha string) er | ||||
| 	// 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) VALUES (?,?,?) ON DUPLICATE KEY UPDATE state=?", | ||||
| 			repoID, sha, state.State, state.State) | ||||
| 		_, err := db.GetEngine(ctx).Exec("INSERT INTO commit_status_summary (repo_id,sha,state,target_url) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE state=?", | ||||
| 			repoID, sha, state.State, state.TargetURL, state.State) | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	if cnt, err := db.GetEngine(ctx).Where("repo_id=? AND sha=?", repoID, sha). | ||||
| 		Cols("state"). | ||||
| 		Cols("state, target_url"). | ||||
| 		Update(&CommitStatusSummary{ | ||||
| 			State: state.State, | ||||
| 			State:     state.State, | ||||
| 			TargetURL: state.TargetURL, | ||||
| 		}); err != nil { | ||||
| 		return err | ||||
| 	} else if cnt == 0 { | ||||
| 		_, err = db.GetEngine(ctx).Insert(&CommitStatusSummary{ | ||||
| 			RepoID: repoID, | ||||
| 			SHA:    sha, | ||||
| 			State:  state.State, | ||||
| 			RepoID:    repoID, | ||||
| 			SHA:       sha, | ||||
| 			State:     state.State, | ||||
| 			TargetURL: state.TargetURL, | ||||
| 		}) | ||||
| 		return err | ||||
| 	} | ||||
|   | ||||
| @@ -580,6 +580,8 @@ var migrations = []Migration{ | ||||
| 	NewMigration("Add unique index for project issue table", v1_23.AddUniqueIndexForProjectIssue), | ||||
| 	// v295 -> v296 | ||||
| 	NewMigration("Add commit status summary table", v1_23.AddCommitStatusSummary), | ||||
| 	// v296 -> v297 | ||||
| 	NewMigration("Add missing field of commit status summary table", v1_23.AddCommitStatusSummary2), | ||||
| } | ||||
|  | ||||
| // GetCurrentDBVersion returns the current db version | ||||
|   | ||||
							
								
								
									
										16
									
								
								models/migrations/v1_23/v296.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								models/migrations/v1_23/v296.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| // Copyright 2024 The Gitea Authors. All rights reserved. | ||||
| // SPDX-License-Identifier: MIT | ||||
|  | ||||
| package v1_23 //nolint | ||||
|  | ||||
| import "xorm.io/xorm" | ||||
|  | ||||
| func AddCommitStatusSummary2(x *xorm.Engine) error { | ||||
| 	type CommitStatusSummary struct { | ||||
| 		ID        int64  `xorm:"pk autoincr"` | ||||
| 		TargetURL string `xorm:"TEXT"` | ||||
| 	} | ||||
| 	// there is no migrations because if there is no data on this table, it will fall back to get data | ||||
| 	// from commit status | ||||
| 	return x.Sync(new(CommitStatusSummary)) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user