Skip to content

Commit 10ca498

Browse files
committed
Simplify ensure_task_boards with add_dependent!
Replaces the map-then-aggregate pattern with a simpler loop that calls `add_dependent!` on a single `ServiceResult`. Since `add_dependent!` automatically propagates failure via `merge_success!`, no separate aggregation step is needed.
1 parent 2e73acd commit 10ca498

File tree

1 file changed

+9
-15
lines changed

1 file changed

+9
-15
lines changed

modules/backlogs/app/services/sprints/start_service.rb

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,25 +50,19 @@ def persist(service_call)
5050

5151
def ensure_task_boards
5252
projects = Agile::Sprint.receiving_projects(model)
53+
result = ServiceResult.success
5354

54-
results = projects.map do |project|
55-
next ServiceResult.success if model.task_board_for(project).present?
55+
projects.each do |project|
56+
next if model.task_board_for(project).present?
5657

57-
Boards::SprintTaskBoardCreateService
58-
.new(user: User.system)
59-
.call(project:, sprint: model, name: board_name)
58+
result.add_dependent!(
59+
Boards::SprintTaskBoardCreateService
60+
.new(user: User.system)
61+
.call(project:, sprint: model, name: board_name)
62+
)
6063
end
6164

62-
aggregate_failures(results)
63-
end
64-
65-
def aggregate_failures(results)
66-
failed = results.select(&:failure?)
67-
return ServiceResult.success if failed.empty?
68-
69-
failed.each_with_object(ServiceResult.failure) do |result, combined|
70-
combined.add_dependent!(result)
71-
end
65+
result
7266
end
7367

7468
def board_name

0 commit comments

Comments
 (0)