gitea源码

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