|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // Copyright 2017 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/models"
-
- "github.com/go-xorm/xorm"
- )
-
- func removeCommitsUnitType(x *xorm.Engine) (err error) {
- // Update team unit types
- const batchSize = 100
- for start := 0; ; start += batchSize {
- teams := make([]*models.Team, 0, batchSize)
- if err := x.Limit(batchSize, start).Find(&teams); err != nil {
- return err
- }
- if len(teams) == 0 {
- break
- }
- for _, team := range teams {
- ut := make([]models.UnitType, 0, len(team.UnitTypes))
- for _, u := range team.UnitTypes {
- if u < V16UnitTypeCommits {
- ut = append(ut, u)
- } else if u > V16UnitTypeSettings {
- ut = append(ut, u-2)
- } else if u > V16UnitTypeCommits && u != V16UnitTypeSettings {
- ut = append(ut, u-1)
- }
- }
- team.UnitTypes = ut
- if _, err := x.Id(team.ID).Cols("unit_types").Update(team); err != nil {
- return err
- }
- }
- }
-
- // Delete commits and settings unit types
- if _, err = x.In("`type`", []models.UnitType{V16UnitTypeCommits, V16UnitTypeSettings}).Delete(new(RepoUnit)); err != nil {
- return err
- }
- // Fix renumber unit types that where in enumeration after settings unit type
- if _, err = x.Where("`type` > ?", V16UnitTypeSettings).Decr("type").Decr("index").Update(new(RepoUnit)); err != nil {
- return err
- }
- // Fix renumber unit types that where in enumeration after commits unit type
- if _, err = x.Where("`type` > ?", V16UnitTypeCommits).Decr("type").Decr("index").Update(new(RepoUnit)); err != nil {
- return err
- }
-
- return nil
- }
|