code.gitea.io/gitea@v1.21.7/models/migrations/v1_20/v253.go (about)

     1  // Copyright 2023 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package v1_20 //nolint
     5  
     6  import (
     7  	"code.gitea.io/gitea/modules/log"
     8  
     9  	"xorm.io/xorm"
    10  )
    11  
    12  func FixExternalTrackerAndExternalWikiAccessModeInOwnerAndAdminTeam(x *xorm.Engine) error {
    13  	type UnitType int
    14  	type AccessMode int
    15  
    16  	type TeamUnit struct {
    17  		ID         int64    `xorm:"pk autoincr"`
    18  		Type       UnitType `xorm:"UNIQUE(s)"`
    19  		AccessMode AccessMode
    20  	}
    21  
    22  	const (
    23  		// AccessModeRead read access
    24  		AccessModeRead = 1
    25  
    26  		// Unit Type
    27  		TypeExternalWiki    = 6
    28  		TypeExternalTracker = 7
    29  	)
    30  
    31  	sess := x.NewSession()
    32  	defer sess.Close()
    33  
    34  	if err := sess.Begin(); err != nil {
    35  		return err
    36  	}
    37  
    38  	count, err := sess.Table("team_unit").
    39  		Where("type IN (?, ?) AND access_mode > ?", TypeExternalWiki, TypeExternalTracker, AccessModeRead).
    40  		Update(&TeamUnit{
    41  			AccessMode: AccessModeRead,
    42  		})
    43  	if err != nil {
    44  		return err
    45  	}
    46  	log.Debug("Updated %d ExternalTracker and ExternalWiki access mode to belong to owner and admin", count)
    47  
    48  	return sess.Commit()
    49  }