diff options
author | 6543 <6543@obermui.de> | 2023-10-19 15:20:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-19 15:20:52 +0200 |
commit | e83f2cbbacd2696f26dde7105d7f07833c0cc33e (patch) | |
tree | 35d87113518a7efc8c511e0361a7652fe6afaac3 /services/repository/delete.go | |
parent | 3dc0c962bf3a74188bed02c01b4d34636112805a (diff) | |
download | gitea-e83f2cbbacd2696f26dde7105d7f07833c0cc33e.tar.gz gitea-e83f2cbbacd2696f26dde7105d7f07833c0cc33e.zip |
Add doctor dbconsistency fix to delete repos with no owner (#27290)
to address #27273
replace #24873
Diffstat (limited to 'services/repository/delete.go')
-rw-r--r-- | services/repository/delete.go | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/services/repository/delete.go b/services/repository/delete.go index 9b0a988ea3..861dfa2dcd 100644 --- a/services/repository/delete.go +++ b/services/repository/delete.go @@ -33,7 +33,7 @@ import ( // DeleteRepository deletes a repository for a user or organization. // make sure if you call this func to close open sessions (sqlite will otherwise get a deadlock) -func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, repoID int64) error { +func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, repoID int64, ignoreOrgTeams ...bool) error { ctx, committer, err := db.TxContext(ctx) if err != nil { return err @@ -65,10 +65,13 @@ func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, repoID return fmt.Errorf("list actions artifacts of repo %v: %w", repoID, err) } - // In case is a organization. - org, err := user_model.GetUserByID(ctx, repo.OwnerID) - if err != nil { - return err + // In case owner is a organization, we have to change repo specific teams + // if ignoreOrgTeams is not true + var org *user_model.User + if len(ignoreOrgTeams) == 0 || !ignoreOrgTeams[0] { + if org, err = user_model.GetUserByID(ctx, repo.OwnerID); err != nil { + return err + } } // Delete Deploy Keys @@ -93,7 +96,7 @@ func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, repoID } } - if org.IsOrganization() { + if org != nil && org.IsOrganization() { teams, err := organization.FindOrgTeams(ctx, org.ID) if err != nil { return err |