0
0
mirror of https://github.com/go-gitea/gitea.git synced 2026-05-12 00:22:59 +02:00

error handling and swagger updated

This commit is contained in:
karthikbhandary2 2026-02-26 18:44:04 +05:30
parent c319345af3
commit e4c5c388aa
4 changed files with 25 additions and 16 deletions

View File

@ -455,9 +455,10 @@ type DeleteOrgReposResponse struct {
}
// DeleteRepoFailure represents a repository that failed to delete
// swagger:model
type DeleteRepoFailure struct {
// Repository name
RepoName string `json:"repo_name"`
// Reason for deletion failure
Reason string `json:"reason"`
// Message to be displayed
Message string `json:"reason"`
}

View File

@ -13,6 +13,7 @@ import (
"code.gitea.io/gitea/models/perm"
repo_model "code.gitea.io/gitea/models/repo"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/optional"
repo_module "code.gitea.io/gitea/modules/repository"
api "code.gitea.io/gitea/modules/structs"
@ -514,6 +515,8 @@ func DeleteOrgRepos(ctx *context.APIContext) {
// "$ref": "#/responses/DeleteOrgReposList"
// "403":
// "$ref": "#/responses/forbidden"
// "404":
// "$ref": "#/responses/notFound"
org := ctx.Org.Organization
repos, err := repo_model.GetOrgRepositories(ctx, org.ID)
if err != nil {
@ -526,21 +529,26 @@ func DeleteOrgRepos(ctx *context.APIContext) {
}
for _, repo := range repos {
canDelete, err := repo_module.CanUserDelete(ctx, repo, ctx.Doer)
if !canDelete || err != nil {
reason := "Permission denied"
if err != nil {
reason = err.Error()
}
if !canDelete {
response.Failed = append(response.Failed, api.DeleteRepoFailure{
RepoName: repo.Name,
Reason: reason,
Message: "Insufficient permissions to delete repository",
})
continue
}
if err != nil {
log.Error("Error checking delete permission for repo %s: %v", repo.Name, err)
response.Failed = append(response.Failed, api.DeleteRepoFailure{
RepoName: repo.Name,
Message: "Failed to verify delete permissions",
})
continue
}
if err := repo_service.DeleteRepository(ctx, ctx.Doer, repo, true); err != nil {
log.Error("Error deleting repo %s: %v", repo.Name, err)
response.Failed = append(response.Failed, api.DeleteRepoFailure{
RepoName: repo.Name,
Reason: err.Error(),
Message: "Failed to delete repository",
})
} else {
response.Deleted = append(response.Deleted, repo.Name)

View File

@ -47,5 +47,5 @@ type swaggerResponseOrganizationPermissions struct {
type swaggerDeleteOrgReposList struct {
// List of successfully deleted repositories and failures
//in:body
Body []api.DeleteOrgReposResponse `json:"body"`
Body api.DeleteOrgReposResponse `json:"body"`
}

View File

@ -3663,6 +3663,9 @@
},
"403": {
"$ref": "#/responses/forbidden"
},
"404": {
"$ref": "#/responses/notFound"
}
}
}
@ -24247,9 +24250,9 @@
"type": "object",
"properties": {
"reason": {
"description": "Reason for deletion failure",
"description": "Message to be displayed",
"type": "string",
"x-go-name": "Reason"
"x-go-name": "Message"
},
"repo_name": {
"description": "Repository name",
@ -29810,10 +29813,7 @@
"DeleteOrgReposList": {
"description": "DeleteOrgReposList",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/DeleteOrgReposResponse"
}
"$ref": "#/definitions/DeleteOrgReposResponse"
}
},
"DeployKey": {