module Gitlab::Triage::Resource::Shared::Issuable
Constants
- MAX_PARENT_LOOKUP
- SourceTooDeep
Public Instance Methods
full_resource_reference()
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 59 def full_resource_reference @full_resource_reference ||= "#{project_path}#{reference}#{resource[:iid]}" end
label_events()
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 41 def label_events @label_events ||= query_label_events .map { |label_event| LabelEvent.new(label_event, parent: self) } end
labels()
click to toggle source
This will be more useful when we have: gitlab.com/gitlab-org/gitlab-ce/issues/51011
# File lib/gitlab/triage/resource/shared/issuable.rb, line 23 def labels @labels ||= resource[:labels] # an array of label names .map { |label| Label.new({ name: label }, parent: self) } end
labels_chronologically()
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 46 def labels_chronologically @labels_chronologically ||= labels_with_details.sort_by(&:added_at) end
labels_with_details()
click to toggle source
Make this an alias of `labels` when we have: gitlab.com/gitlab-org/gitlab-ce/issues/51011
# File lib/gitlab/triage/resource/shared/issuable.rb, line 30 def labels_with_details # Labels can be deleted thus event.label can be nil @labels_with_details ||= label_events .select { |event| event.action == 'add' && event.label } .map(&:label) .sort_by(&:added_at) .reverse .uniq(&:name) .select { |label| resource[:labels].include?(label.name) } end
milestone()
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 15 def milestone @milestone ||= resource[:milestone] && Milestone.new(resource[:milestone], parent: self) end
project_path()
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 54 def project_path @project_path ||= request_project(resource[:project_id])[:path_with_namespace] end
reference()
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 64 def reference raise NotImplementedError end
root_id( resource: source_resource, max_levels: MAX_PARENT_LOOKUP)
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 68 def root_id( resource: source_resource, max_levels: MAX_PARENT_LOOKUP) raise SourceTooDeep if max_levels <= 0 parent_id = resource.dig(:namespace, :parent_id) if parent_id root_id( resource: request_group(parent_id), max_levels: max_levels - 1) else resource.dig(:namespace, :id) || resource[:id] end end
Private Instance Methods
group_url(group_id)
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 99 def group_url(group_id) Gitlab::Triage::UrlBuilders::UrlBuilder.new( network_options: network.options, source: 'groups', source_id: group_id ).build end
project_url(project_id)
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 107 def project_url(project_id) Gitlab::Triage::UrlBuilders::UrlBuilder.new( network_options: network.options, source: 'projects', source_id: project_id ).build end
query_label_events()
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 86 def query_label_events network.query_api_cached( resource_url(sub_resource_type: 'resource_label_events')) end
request_group(group_id)
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 95 def request_group(group_id) network.query_api_cached(group_url(group_id)).first end
request_project(project_id)
click to toggle source
# File lib/gitlab/triage/resource/shared/issuable.rb, line 91 def request_project(project_id) network.query_api_cached(project_url(project_id)).first end