mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-25 15:32:41 +01:00
Merge pull request #839 from ethantkoenig/fix/remove_org_repo
Fix bug in removeOrgRepo
This commit is contained in:
commit
7c3dc51655
2 changed files with 22 additions and 2 deletions
|
@ -30,12 +30,14 @@ import (
|
|||
|
||||
// Engine represents a xorm engine or session.
|
||||
type Engine interface {
|
||||
Decr(column string, arg ...interface{}) *xorm.Session
|
||||
Delete(interface{}) (int64, error)
|
||||
Exec(string, ...interface{}) (sql.Result, error)
|
||||
Find(interface{}, ...interface{}) error
|
||||
Get(interface{}) (bool, error)
|
||||
Id(interface{}) *xorm.Session
|
||||
In(string, ...interface{}) *xorm.Session
|
||||
Incr(column string, arg ...interface{}) *xorm.Session
|
||||
Insert(...interface{}) (int64, error)
|
||||
InsertOne(interface{}) (int64, error)
|
||||
Iterate(interface{}, xorm.IterFunc) error
|
||||
|
|
|
@ -526,10 +526,28 @@ func RemoveOrgUser(orgID, userID 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,
|
||||
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
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue