Class: HasHelpers::Resolvers::Lookup

Inherits:
Base
  • Object
show all
Defined in:
app/graphql/has_helpers/resolvers/lookup.rb

Instance Method Summary collapse

Methods included from Middleware::ApplicationAccess

#authorized?

Instance Method Details

#resolve(id:, type:) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/graphql/has_helpers/resolvers/lookup.rb', line 12

def resolve(id:, type:)
  resource = ::HasHelpers::Resources.lookup(type)
  return unless resource
  klass = type.safe_constantize
  return unless klass

  if [::HasHelpers::ResourceType::BASE, ::HasHelpers::ResourceType::TYPE].include?(resource && resource.resource_type)
    {
      id: id,
      base_resource: klass.name,
      base_resource_id: id,
    }
  elsif (instance = klass.find(id)) && instance.respond_to?(:owner) && instance.owner
    {
      id: id,
      base_resource: instance.owner.class.name,
      base_resource_id: instance.owner.id,
      nested_resource: klass.name,
      nested_resource_id: id
    }
  end
end