diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-09 18:10:12 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-09 18:10:12 +0300 |
commit | e91cb68359c900aa51ffdb1863502168742e94f0 (patch) | |
tree | b7dd1749da6e2a11899905b4eae258236cd4f6a6 /app/services/boards/lists | |
parent | 1361891b0a87187364d1586395df176a8984e914 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/boards/lists')
-rw-r--r-- | app/services/boards/lists/create_service.rb | 28 | ||||
-rw-r--r-- | app/services/boards/lists/generate_service.rb | 6 |
2 files changed, 21 insertions, 13 deletions
diff --git a/app/services/boards/lists/create_service.rb b/app/services/boards/lists/create_service.rb index 9c7a165776e..a21ceee083f 100644 --- a/app/services/boards/lists/create_service.rb +++ b/app/services/boards/lists/create_service.rb @@ -6,17 +6,21 @@ module Boards include Gitlab::Utils::StrongMemoize def execute(board) - List.transaction do - case type - when :backlog - create_backlog(board) - else - target = target(board) - position = next_position(board) - - create_list(board, type, target, position) - end - end + list = case type + when :backlog + create_backlog(board) + else + target = target(board) + position = next_position(board) + + return ServiceResponse.error(message: _('%{board_target} not found') % { board_target: type.to_s.capitalize }) if target.blank? + + create_list(board, type, target, position) + end + + return ServiceResponse.error(message: list.errors.full_messages) unless list.persisted? + + ServiceResponse.success(payload: { list: list }) end private @@ -33,7 +37,7 @@ module Boards def target(board) strong_memoize(:target) do - available_labels.find(params[:label_id]) + available_labels.find_by(id: params[:label_id]) # rubocop: disable CodeReuse/ActiveRecord end end diff --git a/app/services/boards/lists/generate_service.rb b/app/services/boards/lists/generate_service.rb index 4fbf1026019..d74320e92a3 100644 --- a/app/services/boards/lists/generate_service.rb +++ b/app/services/boards/lists/generate_service.rb @@ -7,7 +7,11 @@ module Boards return false unless board.lists.movable.empty? List.transaction do - label_params.each { |params| create_list(board, params) } + label_params.each do |params| + response = create_list(board, params) + + raise ActiveRecord::Rollback unless response.success? + end end true |