diff --git a/modules/boards/app/services/boards/sprint_task_board_create_service.rb b/modules/boards/app/services/boards/sprint_task_board_create_service.rb index b4df3b89ecf..6a99b352e52 100644 --- a/modules/boards/app/services/boards/sprint_task_board_create_service.rb +++ b/modules/boards/app/services/boards/sprint_task_board_create_service.rb @@ -35,12 +35,8 @@ module Boards def before_perform(_service_result) create_queries_results = create_queries(params) - failures = create_queries_results.select(&:failure?) - if failures.any? - return ServiceResult.failure.tap do |result| - failures.each { |f| result.add_dependent!(f) } - end - end + failure_result = aggregate_failures(create_queries_results) + return failure_result if failure_result set_attributes(params.merge(query_ids: create_queries_results.map { it.result.id })).tap do |service_result| service_result.result.linked = params[:sprint] if service_result.success? @@ -49,6 +45,15 @@ module Boards private + def aggregate_failures(results) + failures = results.select(&:failure?) + return nil if failures.empty? + + ServiceResult.failure.tap do |result| + failures.each { |f| result.add_dependent!(f) } + end + end + def create_query_params(params, status) default_create_query_params(params).merge( name: query_name(status),