summaryrefslogtreecommitdiff
path: root/app/services/labels/group_service.rb
blob: b26cee24d56bbd1ab330744e74cc0b558a2f6fc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
module Labels
  class GroupService < ::BaseService
    def initialize(project_labels)
      @project_labels = project_labels.group_by(&:title)
    end

    def execute
      build(@project_labels)
    end

    def label(title)
      if title
        group_label = @project_labels[title].group_by(&:title)
        build(group_label).first
      else
        nil
      end
    end

    private

    def build(label)
      label.map { |title, labels| GroupLabel.new(title, labels) }
    end
  end
end