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)
Calls superclass method
Shamu::Entities::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)
Calls superclass method
Shamu::Entities::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)
Calls superclass method
Shamu::Entities::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