Browse Source

Add Primary Key to Topic and RepoTopic (#12639)

Add a primary key to Topic and RepoTopic tables

Fix #8920

Signed-off-by: Andrew Thornton <art27@cantab.net>
tags/v1.13.0-rc1
zeripath GitHub 5 years ago
parent
commit
c25855551d
3 changed files with 44 additions and 3 deletions
  1. +2
    -0
      models/migrations/migrations.go
  2. +39
    -0
      models/migrations/v150.go
  3. +3
    -3
      models/topic.go

+ 2
- 0
models/migrations/migrations.go View File

@@ -233,6 +233,8 @@ var migrations = []Migration{
NewMigration("remove issue dependency comments who refer to non existing issues", purgeInvalidDependenciesComments),
// v149 -> v150
NewMigration("Add Created and Updated to Milestone table", addCreatedAndUpdatedToMilestones),
// v150 -> v151
NewMigration("add primary key to repo_topic", addPrimaryKeyToRepoTopic),
}

// GetCurrentDBVersion returns the current db version


+ 39
- 0
models/migrations/v150.go View File

@@ -0,0 +1,39 @@
// Copyright 2020 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

package migrations

import (
"code.gitea.io/gitea/modules/timeutil"

"xorm.io/xorm"
)

func addPrimaryKeyToRepoTopic(x *xorm.Engine) error {
// Topic represents a topic of repositories
type Topic struct {
ID int64 `xorm:"pk autoincr"`
Name string `xorm:"UNIQUE VARCHAR(25)"`
RepoCount int
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
}

// RepoTopic represents associated repositories and topics
type RepoTopic struct {
RepoID int64 `xorm:"pk"`
TopicID int64 `xorm:"pk"`
}

sess := x.NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return err
}

recreateTable(sess, &Topic{})
recreateTable(sess, &RepoTopic{})

return sess.Commit()
}

+ 3
- 3
models/topic.go View File

@@ -25,7 +25,7 @@ var topicPattern = regexp.MustCompile(`^[a-z0-9][a-z0-9-]*$`)

// Topic represents a topic of repositories
type Topic struct {
ID int64
ID int64 `xorm:"pk autoincr"`
Name string `xorm:"UNIQUE VARCHAR(25)"`
RepoCount int
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
@@ -34,8 +34,8 @@ type Topic struct {

// RepoTopic represents associated repositories and topics
type RepoTopic struct {
RepoID int64 `xorm:"UNIQUE(s)"`
TopicID int64 `xorm:"UNIQUE(s)"`
RepoID int64 `xorm:"pk"`
TopicID int64 `xorm:"pk"`
}

// ErrTopicNotExist represents an error that a topic is not exist


Loading…
Cancel
Save