class Shamu::Entities::OpaqueEntityLookupService

Implements an {EntityLookupService} that works with {OpaqueId} encoded values to obfuscate the contents and type of record identified by the id. Useful for implementing guidelines for globally unique IDs in a GraphQL system.

“` Scorpion.prepare do

capture Shamu::Entities::EntityLookupService do |scorpion|
  scorpion.new( Shamu::Entities::OpaqueEntityLookupService, { "User" => Users::ExternalUsersService }, {} )
end

end “`

Public Instance Methods

ids( entities ) click to toggle source

(see {EntityLookupService#ids)

# File lib/shamu/entities/opaque_entity_lookup_service.rb, line 35
def ids( entities )
  super.map do |id|
    OpaqueId.opaque_id( id )
  end
end
lookup( *ids ) click to toggle source

(see {EntityLookupService#lookup)

# File lib/shamu/entities/opaque_entity_lookup_service.rb, line 47
def lookup( *ids )
  super( *ids_to_entity_paths( ids ) )
end
record_ids( ids ) click to toggle source

(see {EntityLookupService#record_ids)

# File lib/shamu/entities/opaque_entity_lookup_service.rb, line 42
def record_ids( ids )
  super( ids_to_entity_paths( ids ) )
end

Private Instance Methods

ids_to_entity_paths( ids ) click to toggle source
# File lib/shamu/entities/opaque_entity_lookup_service.rb, line 53
def ids_to_entity_paths( ids )
  Array.wrap( ids ).map { |id| OpaqueId.to_entity_path( id ) }
end