Browse Source

Fix bug in removeOrgRepo

for-closed-social
Ethan Koenig 7 years ago
parent
commit
f82ea42679
2 changed files with 22 additions and 2 deletions
  1. +2
    -0
      models/models.go
  2. +20
    -2
      models/org.go

+ 2
- 0
models/models.go View File

@ -30,12 +30,14 @@ import (
// Engine represents a xorm engine or session. // Engine represents a xorm engine or session.
type Engine interface { type Engine interface {
Decr(column string, arg ...interface{}) *xorm.Session
Delete(interface{}) (int64, error) Delete(interface{}) (int64, error)
Exec(string, ...interface{}) (sql.Result, error) Exec(string, ...interface{}) (sql.Result, error)
Find(interface{}, ...interface{}) error Find(interface{}, ...interface{}) error
Get(interface{}) (bool, error) Get(interface{}) (bool, error)
Id(interface{}) *xorm.Session Id(interface{}) *xorm.Session
In(string, ...interface{}) *xorm.Session In(string, ...interface{}) *xorm.Session
Incr(column string, arg ...interface{}) *xorm.Session
Insert(...interface{}) (int64, error) Insert(...interface{}) (int64, error)
InsertOne(interface{}) (int64, error) InsertOne(interface{}) (int64, error)
Iterate(interface{}, xorm.IterFunc) error Iterate(interface{}, xorm.IterFunc) error

+ 20
- 2
models/org.go View File

@ -526,10 +526,28 @@ func RemoveOrgUser(orgID, userID int64) error {
} }
func removeOrgRepo(e Engine, orgID, repoID int64) error { func removeOrgRepo(e Engine, orgID, repoID int64) error {
_, err := e.Delete(&TeamRepo{
teamRepos := make([]*TeamRepo, 0, 10)
if err := e.Find(&teamRepos, &TeamRepo{OrgID: orgID, RepoID: repoID}); err != nil {
return err
}
if len(teamRepos) == 0 {
return nil
}
if _, err := e.Delete(&TeamRepo{
OrgID: orgID, OrgID: orgID,
RepoID: repoID, RepoID: repoID,
})
}); err != nil {
return err
}
teamIDs := make([]int64, len(teamRepos))
for i, teamRepo := range teamRepos {
teamIDs[i] = teamRepo.ID
}
_, err := x.Decr("num_repos").In("id", teamIDs).Update(new(Team))
return err return err
} }

Loading…
Cancel
Save