Expose one more context

This commit is contained in:
Chongyi Zheng 2023-08-24 14:47:31 -04:00
parent 775af9ef17
commit fa40aa7093
No known key found for this signature in database
GPG Key ID: E3C2287691E40E35
2 changed files with 51 additions and 55 deletions

View File

@ -397,72 +397,67 @@ func GetLabelsByRepoID(ctx context.Context, repoID int64, sortType string, listO
return labels, sess.Find(&labels)
}
// UpdateLabels adds, updates, and deletes relevant labels for the given repository.
func UpdateLabelsByRepoID(repoID int64, labels ...*Label) error {
ctx, committer, err := db.TxContext(db.DefaultContext)
if err != nil {
return err
}
defer committer.Close()
// UpdateLabelsByRepoID adds, updates, and deletes relevant labels for the given repository.
func UpdateLabelsByRepoID(ctx context.Context, repoID int64, labels ...*Label) error {
return db.WithTx(ctx, func(ctx context.Context) error {
existingLabels, err := GetLabelsByRepoID(ctx, repoID, "", db.ListOptions{})
if err != nil {
return err
}
labelsToAdd := make([]*Label, 0)
labelsToUpdate := make([]*Label, 0)
labelsToDelete := make([]*Label, 0)
existingLabels, err := GetLabelsByRepoID(ctx, repoID, "", db.ListOptions{})
if err != nil {
return err
}
labelsToAdd := make([]*Label, 0)
labelsToUpdate := make([]*Label, 0)
labelsToDelete := make([]*Label, 0)
for _, l := range labels {
var foundLabel *Label
for _, existingLabel := range existingLabels {
if existingLabel.OriginalID == l.OriginalID {
foundLabel = existingLabel
break
}
}
if foundLabel == nil {
labelsToAdd = append(labelsToAdd, l)
} else if foundLabel.Name != l.Name || foundLabel.Description != l.Description ||
foundLabel.Color != l.Color {
l.RepoID = repoID
labelsToUpdate = append(labelsToUpdate, l)
}
}
for _, l := range labels {
var foundLabel *Label
for _, existingLabel := range existingLabels {
if existingLabel.OriginalID == l.OriginalID {
foundLabel = existingLabel
break
found := false
for _, label := range labels {
if label.OriginalID == existingLabel.OriginalID {
found = true
break
}
}
if !found {
labelsToDelete = append(labelsToDelete, existingLabel)
}
}
if foundLabel == nil {
labelsToAdd = append(labelsToAdd, l)
} else if foundLabel.Name != l.Name || foundLabel.Description != l.Description ||
foundLabel.Color != l.Color {
l.RepoID = repoID
labelsToUpdate = append(labelsToUpdate, l)
}
}
for _, existingLabel := range existingLabels {
found := false
for _, label := range labels {
if label.OriginalID == existingLabel.OriginalID {
found = true
break
for _, l := range labelsToAdd {
if err = NewLabel(ctx, l); err != nil {
return err
}
}
if !found {
labelsToDelete = append(labelsToDelete, existingLabel)
}
}
for _, l := range labelsToAdd {
if err = NewLabel(ctx, l); err != nil {
return err
for _, l := range labelsToUpdate {
if err = UpdateLabel(ctx, l); err != nil {
return err
}
}
}
for _, l := range labelsToUpdate {
if err = UpdateLabel(ctx, l); err != nil {
return err
for _, l := range labelsToDelete {
if err = DeleteLabel(ctx, repoID, l.ID); err != nil {
return err
}
}
}
for _, l := range labelsToDelete {
if err = DeleteLabel(ctx, repoID, l.ID); err != nil {
return err
}
}
return committer.Commit()
return nil
})
}
// CountLabelsByRepoID count number of all labels that belong to given repository by ID.

View File

@ -1009,7 +1009,8 @@ func (g *GiteaLocalUploader) UpdateMilestones(milestones ...*base.Milestone) err
func (g *GiteaLocalUploader) UpdateLabels(labels ...*base.Label) error {
lbs := g.convertLabels(labels...)
if err := issues_model.UpdateLabelsByRepoID(g.repo.ID, lbs...); err != nil {
ctx := db.DefaultContext
if err := issues_model.UpdateLabelsByRepoID(ctx, g.repo.ID, lbs...); err != nil {
return err
}
for _, lb := range lbs {