diff options
Diffstat (limited to 'models/migrations/v50.go')
-rw-r--r-- | models/migrations/v50.go | 49 |
1 files changed, 38 insertions, 11 deletions
diff --git a/models/migrations/v50.go b/models/migrations/v50.go index 7437cace25..4ed8f05157 100644 --- a/models/migrations/v50.go +++ b/models/migrations/v50.go @@ -5,24 +5,51 @@ package migrations import ( - "fmt" + "time" + + "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" "github.com/go-xorm/xorm" ) -func addReactions(x *xorm.Engine) error { - // Reaction see models/issue_reaction.go - type Reaction struct { +func migrateProtectedBranchStruct(x *xorm.Engine) error { + type ProtectedBranch struct { ID int64 `xorm:"pk autoincr"` - Type string `xorm:"INDEX UNIQUE(s) NOT NULL"` - IssueID int64 `xorm:"INDEX UNIQUE(s) NOT NULL"` - CommentID int64 `xorm:"INDEX UNIQUE(s)"` - UserID int64 `xorm:"INDEX UNIQUE(s) NOT NULL"` - CreatedUnix int64 `xorm:"INDEX created"` + RepoID int64 `xorm:"UNIQUE(s)"` + BranchName string `xorm:"UNIQUE(s)"` + CanPush bool + Created time.Time `xorm:"-"` + CreatedUnix int64 + Updated time.Time `xorm:"-"` + UpdatedUnix int64 + } + + var pbs []ProtectedBranch + err := x.Find(&pbs) + if err != nil { + return err } - if err := x.Sync2(new(Reaction)); err != nil { - return fmt.Errorf("Sync2: %v", err) + for _, pb := range pbs { + if pb.CanPush { + if _, err = x.ID(pb.ID).Delete(new(ProtectedBranch)); err != nil { + return err + } + } } + + switch { + case setting.UseSQLite3: + log.Warn("Unable to drop columns in SQLite") + case setting.UseMySQL, setting.UsePostgreSQL, setting.UseMSSQL, setting.UseTiDB: + if _, err := x.Exec("ALTER TABLE protected_branch DROP COLUMN can_push"); err != nil { + // Ignoring this error in case we run this migration second time (after migration reordering) + log.Warn("DROP COLUMN can_push (skipping): %v", err) + } + default: + log.Fatal(4, "Unrecognized DB") + } + return nil } |