module JSONAPI::Relationships::Events

def emit_relationship_event(action, relationship_data)

def emit_relationship_event(action, relationship_data)
  resource_type_name = params[:resource_type] || @resource_name.pluralize
  JSONAPI::Instrumentation.relationship_event(
    action:,
    resource_type: resource_type_name,
    resource_id: @resource.id,
    relationship_name: @relationship_name.to_s,
    related_ids: extract_related_ids(relationship_data),
    related_type: extract_related_type(relationship_data),
  )
end

def extract_related_ids(relationship_data)

def extract_related_ids(relationship_data)
  return nil if relationship_data.nil?
  if relationship_data.is_a?(Array)
    relationship_data.filter_map { |item| item[:id] }
  else
    [relationship_data[:id]].compact
  end
end

def extract_related_type(relationship_data)

def extract_related_type(relationship_data)
  return nil if relationship_data.nil?
  if relationship_data.is_a?(Array)
    relationship_data.first&.dig(:type)
  else
    relationship_data[:type]
  end
end