diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index cac36edf50..6570460425 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -269,6 +269,8 @@ var migrations = []Migration{ NewMigration("Convert task type from int to string", convertTaskTypeToString), // v162 -> v163 NewMigration("Convert webhook task type from int to string", convertWebhookTaskTypeToString), + // v163 -> v164 + NewMigration("Convert topic name from 25 to 50", convertTopicNameFrom25To50), } // GetCurrentDBVersion returns the current db version diff --git a/models/migrations/v163.go b/models/migrations/v163.go new file mode 100644 index 0000000000..150cc34f02 --- /dev/null +++ b/models/migrations/v163.go @@ -0,0 +1,34 @@ +// 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 ( + "xorm.io/xorm" +) + +func convertTopicNameFrom25To50(x *xorm.Engine) error { + type Topic struct { + ID int64 `xorm:"pk autoincr"` + Name string `xorm:"UNIQUE VARCHAR(50)"` + RepoCount int + CreatedUnix int64 `xorm:"INDEX created"` + UpdatedUnix int64 `xorm:"INDEX updated"` + } + + if err := x.Sync2(new(Topic)); err != nil { + return err + } + + sess := x.NewSession() + defer sess.Close() + if err := sess.Begin(); err != nil { + return err + } + if err := recreateTable(sess, new(Topic)); err != nil { + return err + } + + return sess.Commit() +} diff --git a/models/topic.go b/models/topic.go index 6be4f10295..1969c57db8 100644 --- a/models/topic.go +++ b/models/topic.go @@ -26,7 +26,7 @@ var topicPattern = regexp.MustCompile(`^[a-z0-9][a-z0-9-]*$`) // Topic represents a topic of repositories type Topic struct { ID int64 `xorm:"pk autoincr"` - Name string `xorm:"UNIQUE VARCHAR(25)"` + Name string `xorm:"UNIQUE VARCHAR(50)"` RepoCount int CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`