27 lines
498 B
Ruby
27 lines
498 B
Ruby
|
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
|