Skip to content

Commit 7c3dc51

Browse files
authored
Merge pull request #839 from ethantkoenig/fix/remove_org_repo
Fix bug in removeOrgRepo
2 parents 5fd19a4 + f82ea42 commit 7c3dc51

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

models/models.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@ import (
3030

3131
// Engine represents a xorm engine or session.
3232
type Engine interface {
33+
Decr(column string, arg ...interface{}) *xorm.Session
3334
Delete(interface{}) (int64, error)
3435
Exec(string, ...interface{}) (sql.Result, error)
3536
Find(interface{}, ...interface{}) error
3637
Get(interface{}) (bool, error)
3738
Id(interface{}) *xorm.Session
3839
In(string, ...interface{}) *xorm.Session
40+
Incr(column string, arg ...interface{}) *xorm.Session
3941
Insert(...interface{}) (int64, error)
4042
InsertOne(interface{}) (int64, error)
4143
Iterate(interface{}, xorm.IterFunc) error

models/org.go

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,10 +526,28 @@ func RemoveOrgUser(orgID, userID int64) error {
526526
}
527527

528528
func removeOrgRepo(e Engine, orgID, repoID int64) error {
529-
_, err := e.Delete(&TeamRepo{
529+
teamRepos := make([]*TeamRepo, 0, 10)
530+
if err := e.Find(&teamRepos, &TeamRepo{OrgID: orgID, RepoID: repoID}); err != nil {
531+
return err
532+
}
533+
534+
if len(teamRepos) == 0 {
535+
return nil
536+
}
537+
538+
if _, err := e.Delete(&TeamRepo{
530539
OrgID: orgID,
531540
RepoID: repoID,
532-
})
541+
}); err != nil {
542+
return err
543+
}
544+
545+
teamIDs := make([]int64, len(teamRepos))
546+
for i, teamRepo := range teamRepos {
547+
teamIDs[i] = teamRepo.ID
548+
}
549+
550+
_, err := x.Decr("num_repos").In("id", teamIDs).Update(new(Team))
533551
return err
534552
}
535553

0 commit comments

Comments
 (0)