From cfcbdca1f269c3a3ebb4bfe7298b23d1d1e103db Mon Sep 17 00:00:00 2001 From: "karthik.bhandary" Date: Sun, 22 Mar 2026 19:16:48 +0000 Subject: [PATCH] updated DeleteOrgRepos to use GetRepositoryByID --- models/repo/org_repo.go | 6 ++++++ routers/api/v1/org/org.go | 14 +++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/models/repo/org_repo.go b/models/repo/org_repo.go index 96f21ba2ac..82951fc2e7 100644 --- a/models/repo/org_repo.go +++ b/models/repo/org_repo.go @@ -21,6 +21,12 @@ func GetOrgRepositories(ctx context.Context, orgID int64) (RepositoryList, error return orgRepos, db.GetEngine(ctx).Where("owner_id = ?", orgID).Find(&orgRepos) } +// GetOrgRepositoryIDs get repo IDs belonging to the given organization +func GetOrgRepositoryIDs(ctx context.Context, orgID int64) ([]int64, error) { + var repoIDs []int64 + return repoIDs, db.GetEngine(ctx).Table("repository").Where("owner_id = ?", orgID).Cols("id").Find(&repoIDs) +} + type SearchTeamRepoOptions struct { db.ListOptions TeamID int64 diff --git a/routers/api/v1/org/org.go b/routers/api/v1/org/org.go index 0f4da7966c..ccff453080 100644 --- a/routers/api/v1/org/org.go +++ b/routers/api/v1/org/org.go @@ -522,13 +522,13 @@ func DeleteOrgRepos(ctx *context.APIContext) { // "404": // "$ref": "#/responses/notFound" org := ctx.Org.Organization - repos, err := repo_model.GetOrgRepositories(ctx, org.ID) + repoIDs, err := repo_model.GetOrgRepositoryIDs(ctx, org.ID) if err != nil { ctx.APIErrorInternal(err) return } - if len(repos) == 0 { + if len(repoIDs) == 0 { ctx.Status(http.StatusNoContent) return } @@ -549,7 +549,15 @@ func DeleteOrgRepos(ctx *context.APIContext) { // Use HammerContext so deletion continues even if client disconnects bgCtx := graceful.GetManager().HammerContext() - for _, repo := range repos { + for _, repoID := range repoIDs { + repo, err := repo_model.GetRepositoryByID(bgCtx, repoID) + if err != nil { + desc := fmt.Sprintf("Failed to get repository ID %d in org %s: %v", repoID, org.Name, err) + if noticeErr := system_model.CreateNotice(bgCtx, system_model.NoticeRepository, desc); noticeErr != nil { + log.Error("Failed to create notice for repo get failure: %v", noticeErr) + } + continue + } if err := repo_service.DeleteRepository(bgCtx, doer, repo, true); err != nil { desc := fmt.Sprintf("Failed to delete repository %s (ID: %d) in org %s: %v", repo.Name, repo.ID, org.Name, err) if noticeErr := system_model.CreateNotice(bgCtx, system_model.NoticeRepository, desc); noticeErr != nil {