You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

team_unit.go 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package organization
  4. import (
  5. "context"
  6. "code.gitea.io/gitea/models/db"
  7. "code.gitea.io/gitea/models/perm"
  8. "code.gitea.io/gitea/models/unit"
  9. )
  10. // TeamUnit describes all units of a repository
  11. type TeamUnit struct {
  12. ID int64 `xorm:"pk autoincr"`
  13. OrgID int64 `xorm:"INDEX"`
  14. TeamID int64 `xorm:"UNIQUE(s)"`
  15. Type unit.Type `xorm:"UNIQUE(s)"`
  16. AccessMode perm.AccessMode
  17. }
  18. // Unit returns Unit
  19. func (t *TeamUnit) Unit() unit.Unit {
  20. return unit.Units[t.Type]
  21. }
  22. func getUnitsByTeamID(ctx context.Context, teamID int64) (units []*TeamUnit, err error) {
  23. return units, db.GetEngine(ctx).Where("team_id = ?", teamID).Find(&units)
  24. }
  25. // UpdateTeamUnits updates a teams's units
  26. func UpdateTeamUnits(team *Team, units []TeamUnit) (err error) {
  27. ctx, committer, err := db.TxContext(db.DefaultContext)
  28. if err != nil {
  29. return err
  30. }
  31. defer committer.Close()
  32. if _, err = db.GetEngine(ctx).Where("team_id = ?", team.ID).Delete(new(TeamUnit)); err != nil {
  33. return err
  34. }
  35. if len(units) > 0 {
  36. if err = db.Insert(ctx, units); err != nil {
  37. return err
  38. }
  39. }
  40. return committer.Commit()
  41. }