gitea源码

team_unit.go 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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(ctx context.Context, team *Team, units []TeamUnit) (err error) {
  27. return db.WithTx(ctx, func(ctx context.Context) error {
  28. if _, err = db.GetEngine(ctx).Where("team_id = ?", team.ID).Delete(new(TeamUnit)); err != nil {
  29. return err
  30. }
  31. if len(units) > 0 {
  32. if err = db.Insert(ctx, units); err != nil {
  33. return err
  34. }
  35. }
  36. return nil
  37. })
  38. }