gitlab-org--gitlab-foss/app/services/groups/destroy_service.rb
Z.J. van de Weg d7062dd042
Remove Mattermost team with GitLab group
When destroying a group, now an API call is made to the Mattermost
server to request the deletion of the project. Actual team deletion on
the Mattermost side happens async, so the runtime shouldn't increase by
more than a second.
2017-07-28 09:09:55 +02:00

29 lines
1,023 B
Ruby

module Groups
class DestroyService < Groups::BaseService
def async_execute
group.soft_delete_without_removing_associations
job_id = GroupDestroyWorker.perform_async(group.id, current_user.id)
Rails.logger.info("User #{current_user.id} scheduled a deletion of group ID #{group.id} with job ID #{job_id}")
end
def execute
group.prepare_for_destroy
group.projects.each do |project|
# Execute the destruction of the models immediately to ensure atomic cleanup.
# Skip repository removal because we remove directory with namespace
# that contain all these repositories
::Projects::DestroyService.new(project, current_user, skip_repo: true).execute
end
group.children.each do |group|
# This needs to be synchronous since the namespace gets destroyed below
DestroyService.new(group, current_user).execute
end
group.chat_team&.remove_mattermost_team(current_user)
group.really_destroy!
end
end
end