summaryrefslogtreecommitdiff
path: root/app/services/projects/container_repository/destroy_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/projects/container_repository/destroy_service.rb')
-rw-r--r--app/services/projects/container_repository/destroy_service.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/app/services/projects/container_repository/destroy_service.rb b/app/services/projects/container_repository/destroy_service.rb
new file mode 100644
index 00000000000..1f5af7970d6
--- /dev/null
+++ b/app/services/projects/container_repository/destroy_service.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Projects
+ module ContainerRepository
+ class DestroyService < BaseService
+ def execute(container_repository)
+ return false unless can?(current_user, :update_container_image, project)
+
+ # Delete tags outside of the transaction to avoid hitting an idle-in-transaction timeout
+ container_repository.delete_tags!
+ container_repository.destroy
+ end
+ end
+ end
+end