Class: Shamu::Entities::OpaqueEntityLookupService

Inherits:
EntityLookupService show all
Defined in:
lib/shamu/entities/opaque_entity_lookup_service.rb

Overview

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

Dependencies collapse

Instance Method Summary collapse

Methods inherited from EntityLookupService

#initialize, #service_class_for

Methods inherited from Services::Service

#cache_for, #cached_lookup, #entity_list, #entity_lookup_list, #find_by_lookup, #lazy_association, #lookup_association

Constructor Details

This class inherits a constructor from Shamu::Entities::EntityLookupService

Instance Attribute Details

#lookup_serviceEntityLookupService

Returns the underlying lookup service to use.

Returns:



26
27
28
# File 'lib/shamu/entities/opaque_entity_lookup_service.rb', line 26

attr_dependency :lookup_service, EntityLookupService do |scorpion|
  scorpion.new( EntityLookupService, { entity_map: entity_map }, {} )
end

Instance Method Details

#ids(entities) ⇒ Object



35
36
37
38
39
# 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) ⇒ Object



47
48
49
# File 'lib/shamu/entities/opaque_entity_lookup_service.rb', line 47

def lookup( *ids )
  super( *ids_to_entity_paths( ids ) )
end

#record_ids(ids) ⇒ Object



42
43
44
# File 'lib/shamu/entities/opaque_entity_lookup_service.rb', line 42

def record_ids( ids )
  super( ids_to_entity_paths( ids ) )
end