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:
parent
c319345af3
commit
e4c5c388aa
@ -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"`
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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"`
|
||||
}
|
||||
|
||||
12
templates/swagger/v1_json.tmpl
generated
12
templates/swagger/v1_json.tmpl
generated
@ -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": {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user