Class: Shamu::Entities::OpaqueEntityLookupService
- Inherits:
-
EntityLookupService
- Object
- Services::Service
- EntityLookupService
- Shamu::Entities::OpaqueEntityLookupService
- 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
-
#lookup_service ⇒ EntityLookupService
The underlying lookup service to use.
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_service ⇒ EntityLookupService
Returns the underlying lookup service to use.
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 |