Wrap unsaring actions in transaction [SCI-6918]

This commit is contained in:
Oleksii Kriuchykhin 2022-08-31 17:19:29 +02:00
parent bf8f838214
commit ba54f42d2f
2 changed files with 16 additions and 11 deletions

View file

@ -6,16 +6,19 @@ class TeamRepositoriesController < ApplicationController
# DELETE :team_id/repositories/:repository_id/team_repositories/:id
def destroy
team_shared_object = @repository.team_shared_objects.find_by(id: destory_params[:id])
if team_shared_object
team_shared_object = @repository.team_shared_objects.find(destory_params[:id])
ActiveRecord::Base.transaction do
log_activity(:unshare_inventory, team_shared_object)
team_shared_object.destroy!
render json: {}, status: :no_content
else
render json: { message: I18n.t('repositories.multiple_share_service.nothing_to_delete') },
status: :unprocessable_entity
end
render json: {}, status: :no_content
rescue ActiveRecord::RecordNotFound
render json: { message: I18n.t('repositories.multiple_share_service.nothing_to_delete') },
status: :unprocessable_entity
rescue StandardError => e
Rails.logger.error(e.message)
Rails.logger.error(e.backtrace.join("\n"))
render json: { message: I18n.t('general.error') }, status: :unprocessable_entity
end
# POST :team_id/repositories/:repository_id/update

View file

@ -51,14 +51,16 @@ module Repositories
end
@team_ids_for_unshare.each do |team_id|
team_shared_object = @repository.team_shared_objects.find_by(team_id: team_id)
if team_shared_object
@repository.transaction do
team_shared_object = @repository.team_shared_objects.find_by!(team_id: team_id)
log_activity(:unshare_inventory, team_shared_object)
team_shared_object.destroy!
else
rescue StandardError => e
Rails.logger.error(e.message)
Rails.logger.error(e.backtrace.join("\n"))
warnings << I18n.t('repositories.multiple_share_service.unable_to_unshare',
repository: @repository.name, team: team_id)
raise ActiveRecord::Rollback
end
end