From 0ae48e068794a732f728de76ffbf3f95e702ba9a Mon Sep 17 00:00:00 2001 From: Felipe Artur Date: Wed, 3 Oct 2018 17:45:39 -0300 Subject: Move issue related_branches to service Moves the related_branches method from Issue model to RelatedBranchesService --- app/services/issues/related_branches_service.rb | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 app/services/issues/related_branches_service.rb (limited to 'app/services/issues') diff --git a/app/services/issues/related_branches_service.rb b/app/services/issues/related_branches_service.rb new file mode 100644 index 00000000000..76af482b7ac --- /dev/null +++ b/app/services/issues/related_branches_service.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# This service fetches all branches containing the current issue's ID, except for +# those with a merge request open referencing the current issue. +module Issues + class RelatedBranchesService < Issues::BaseService + def execute(issue) + branches_with_iid_of(issue) - branches_with_merge_request_for(issue) + end + + private + + def branches_with_merge_request_for(issue) + Issues::ReferencedMergeRequestsService + .new(project, current_user) + .referenced_merge_requests(issue) + .map(&:source_branch) + end + + def branches_with_iid_of(issue) + project.repository.branch_names.select do |branch| + branch =~ /\A#{issue.iid}-(?!\d+-stable)/i + end + end + end +end -- cgit v1.2.1