diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-28 03:09:08 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-28 03:09:08 +0300 |
commit | f54a50aa826d0eedcf2e56f51462613bc132f826 (patch) | |
tree | 7194aca23f9af822ea55966a6f477b3d8d68ee47 /app/services/projects | |
parent | c77fda905a8619b756163c10a75171dc9cfe7084 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/projects')
-rw-r--r-- | app/services/projects/destroy_service.rb | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb index 066d1f1ca72..fd1366d2c4a 100644 --- a/app/services/projects/destroy_service.rb +++ b/app/services/projects/destroy_service.rb @@ -47,7 +47,7 @@ module Projects private - def trash_repositories! + def trash_project_repositories! unless remove_repository(project.repository) raise_error(s_('DeleteProject|Failed to remove project repository. Please try again or contact administrator.')) end @@ -57,6 +57,18 @@ module Projects end end + def trash_relation_repositories! + unless remove_snippets + raise_error(s_('DeleteProject|Failed to remove project snippets. Please try again or contact administrator.')) + end + end + + def remove_snippets + response = Snippets::BulkDestroyService.new(current_user, project.snippets).execute + + response.success? + end + def remove_repository(repository) return true unless repository @@ -95,7 +107,8 @@ module Projects Project.transaction do log_destroy_event - trash_repositories! + trash_relation_repositories! + trash_project_repositories! # Rails attempts to load all related records into memory before # destroying: https://github.com/rails/rails/issues/22510 @@ -103,7 +116,7 @@ module Projects # # Exclude container repositories because its before_destroy would be # called multiple times, and it doesn't destroy any database records. - project.destroy_dependent_associations_in_batches(exclude: [:container_repositories]) + project.destroy_dependent_associations_in_batches(exclude: [:container_repositories, :snippets]) project.destroy! end end |