diff --git a/models/migrations/v67.go b/models/migrations/v67.go index 34df5166a..23327a4f5 100644 --- a/models/migrations/v67.go +++ b/models/migrations/v67.go @@ -129,7 +129,7 @@ func reformatAndRemoveIncorrectTopics(x *xorm.Engine) (err error) { } log.Info("Updating 'topics' field for repository with id = %v", repoID) if _, err := sess.ID(repoID).Cols("topics"). - Update(&models.Repository{ID: repoID, Topics: topicNames}); err != nil { + Update(&models.Repository{Topics: topicNames}); err != nil { return err } } diff --git a/models/topic.go b/models/topic.go index d4610c52e..d777c80b5 100644 --- a/models/topic.go +++ b/models/topic.go @@ -190,6 +190,13 @@ func SaveTopics(repoID int64, topicNames ...string) error { } } + topicNames = topicNames[:0] + if err := sess.Table("topic").Cols("name"). + Join("INNER", "repo_topic", "topic.id = repo_topic.topic_id"). + Where("repo_topic.repo_id = ?", repoID).Find(&topicNames); err != nil { + return err + } + if _, err := sess.ID(repoID).Cols("topics").Update(&Repository{ Topics: topicNames, }); err != nil {