Method: Gitlab::Triage::Resource::Shared::Issuable#root_id

Defined in:
lib/gitlab/triage/resource/shared/issuable.rb

#root_id(resource: source_resource, max_levels: MAX_PARENT_LOOKUP) ⇒ Object

Raises:



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/gitlab/triage/resource/shared/issuable.rb', line 67

def root_id(
  resource: source_resource,
  max_levels: MAX_PARENT_LOOKUP)
  raise SourceTooDeep if max_levels <= 0

  # In projects, the reference to the namespace's parent ID is `namespace.parent_id`
  # but in groups, the reference is directly in `parent_id`
  parent_id = resource.dig(:namespace, :parent_id) || resource.dig(: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