Skip to content

Commit a606860

Browse files
committed
change commit hash status table unique index
1 parent 41362de commit a606860

File tree

4 files changed

+11
-36
lines changed

4 files changed

+11
-36
lines changed

models/commit_status.go

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -156,27 +156,6 @@ func GetLatestCommitStatus(repo *Repository, sha string, page int) ([]*CommitSta
156156
return statuses, x.In("id", ids).Find(&statuses)
157157
}
158158

159-
// GetCommitStatus populates a given status for a given commit.
160-
// NOTE: If ID or Index isn't given, and only Context, TargetURL and/or Description
161-
// is given, the CommitStatus created _last_ will be returned.
162-
func GetCommitStatus(repo *Repository, sha string, status *CommitStatus) (*CommitStatus, error) {
163-
conds := &CommitStatus{
164-
Context: status.Context,
165-
State: status.State,
166-
TargetURL: status.TargetURL,
167-
Description: status.Description,
168-
}
169-
has, err := x.Where("repo_id = ?", repo.ID).And("sha = ?", sha).Desc("created_unix").Get(conds)
170-
if err != nil {
171-
return nil, fmt.Errorf("GetCommitStatus[%s, %s]: %v", repo.RepoPath(), sha, err)
172-
}
173-
if !has {
174-
return nil, fmt.Errorf("GetCommitStatus[%s, %s]: not found", repo.RepoPath(), sha)
175-
}
176-
177-
return conds, nil
178-
}
179-
180159
// NewCommitStatusOptions holds options for creating a CommitStatus
181160
type NewCommitStatusOptions struct {
182161
Repo *Repository
@@ -240,7 +219,9 @@ func NewCommitStatus(opts NewCommitStatusOptions) error {
240219
return fmt.Errorf("Insert CommitStatus[%s, %s]: %v", repoPath, opts.SHA, err)
241220
}
242221

243-
exist, err := sess.Table("commit_status_context").Where("context_hash = ?", opts.CommitStatus.ContextHash).Exist()
222+
exist, err := sess.Table("commit_status_context").
223+
Where("repo_id =? AND context_hash = ?", opts.Repo.ID, opts.CommitStatus.ContextHash).
224+
Exist()
244225
if err != nil {
245226
return fmt.Errorf("Check CommistStatusContext Exist failed: %v", err)
246227
}
@@ -297,8 +278,8 @@ func HashCommitStatusContext(context string) string {
297278
// CommitStatusContext represents commit status context
298279
type CommitStatusContext struct {
299280
ID int64
300-
RepoID int64 `xorm:"index"`
301-
ContextHash string `xorm:"varchar(40) unique"`
281+
RepoID int64 `xorm:"index unique(s)"`
282+
ContextHash string `xorm:"varchar(40) unique(s)"`
302283
ContextLogo string `xorm:"TEXT"`
303284
Context string `xorm:"TEXT"`
304285
CreatedUnix util.TimeStamp `xorm:"created"`

models/migrations/v88.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ func addCommitStatusContext(x *xorm.Engine) error {
6666

6767
type CommitStatusContext struct {
6868
ID int64
69-
RepoID int64 `xorm:"index"`
70-
ContextHash string `xorm:"varchar(64) unique"`
69+
RepoID int64 `xorm:"index unique(s)"`
70+
ContextHash string `xorm:"varchar(40) unique(s)"`
7171
ContextLogo string `xorm:"TEXT"`
7272
Context string `xorm:"TEXT"`
7373
CreatedUnix util.TimeStamp `xorm:"created"`

modules/repofiles/commit_status.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
// CreateCommitStatus creates a new CommitStatus given a bunch of parameters
1515
// NOTE: All text-values will be trimmed from whitespaces.
1616
// Requires: Repo, Creator, SHA
17-
func CreateCommitStatus(repo *models.Repository, creator *models.User, sha string, status *models.CommitStatus, isOAuth bool) error {
17+
func CreateCommitStatus(repo *models.Repository, creator *models.User, sha string, status *models.CommitStatus) error {
1818
repoPath := repo.RepoPath()
1919

2020
// confirm that commit is exist

routers/api/v1/repo/status.go

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,12 @@ func NewCommitStatus(ctx *context.APIContext, form api.CreateStatusOption) {
5858
Description: form.Description,
5959
Context: form.Context,
6060
}
61-
isOAuthToken := ctx.Data["IsApiToken"] == true
62-
if err := repofiles.CreateCommitStatus(ctx.Repo.Repository, ctx.User, sha, status, isOAuthToken); err != nil {
63-
ctx.Error(500, "NewCommitStatus", err)
61+
if err := repofiles.CreateCommitStatus(ctx.Repo.Repository, ctx.User, sha, status); err != nil {
62+
ctx.Error(500, "CreateCommitStatus", err)
6463
return
6564
}
6665

67-
newStatus, err := models.GetCommitStatus(ctx.Repo.Repository, sha, status)
68-
if err != nil {
69-
ctx.Error(500, "GetCommitStatus", err)
70-
return
71-
}
72-
ctx.JSON(201, newStatus.APIFormat())
66+
ctx.JSON(201, status.APIFormat())
7367
}
7468

7569
// GetCommitStatuses returns all statuses for any given commit hash

0 commit comments

Comments
 (0)