mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-06 03:46:39 +08:00
Wrap unsaring actions in transaction [SCI-6918]
This commit is contained in:
parent
bf8f838214
commit
ba54f42d2f
2 changed files with 16 additions and 11 deletions
|
@ -6,16 +6,19 @@ class TeamRepositoriesController < ApplicationController
|
||||||
|
|
||||||
# DELETE :team_id/repositories/:repository_id/team_repositories/:id
|
# DELETE :team_id/repositories/:repository_id/team_repositories/:id
|
||||||
def destroy
|
def destroy
|
||||||
team_shared_object = @repository.team_shared_objects.find_by(id: destory_params[:id])
|
team_shared_object = @repository.team_shared_objects.find(destory_params[:id])
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
if team_shared_object
|
|
||||||
log_activity(:unshare_inventory, team_shared_object)
|
log_activity(:unshare_inventory, team_shared_object)
|
||||||
team_shared_object.destroy!
|
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
|
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
|
end
|
||||||
|
|
||||||
# POST :team_id/repositories/:repository_id/update
|
# POST :team_id/repositories/:repository_id/update
|
||||||
|
|
|
@ -51,14 +51,16 @@ module Repositories
|
||||||
end
|
end
|
||||||
|
|
||||||
@team_ids_for_unshare.each do |team_id|
|
@team_ids_for_unshare.each do |team_id|
|
||||||
team_shared_object = @repository.team_shared_objects.find_by(team_id: team_id)
|
@repository.transaction do
|
||||||
|
team_shared_object = @repository.team_shared_objects.find_by!(team_id: team_id)
|
||||||
if team_shared_object
|
|
||||||
log_activity(:unshare_inventory, team_shared_object)
|
log_activity(:unshare_inventory, team_shared_object)
|
||||||
team_shared_object.destroy!
|
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',
|
warnings << I18n.t('repositories.multiple_share_service.unable_to_unshare',
|
||||||
repository: @repository.name, team: team_id)
|
repository: @repository.name, team: team_id)
|
||||||
|
raise ActiveRecord::Rollback
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue