class Pakyow::Data::Lookup
Attributes
containers[R]
@api private
sources[R]
@api private
subscribers[R]
@api private
Public Class Methods
new(containers:, subscribers:, app:)
click to toggle source
# File lib/pakyow/data/lookup.rb, line 13 def initialize(containers:, subscribers:, app:) @subscribers = subscribers @subscribers.lookup = self @app = app @sources = {} @containers = containers @containers.each do |container| container.sources.each do |source| @sources[source.__object_name.name] = source define_singleton_method source.__object_name.name do Proxy.new( container.source( source.__object_name.name ), @subscribers, @app ) end end end validate! end
Public Instance Methods
ephemeral(type, **qualifications)
click to toggle source
# File lib/pakyow/data/lookup.rb, line 38 def ephemeral(type, **qualifications) Proxy.new( Sources::Ephemeral.new(type, **qualifications), @subscribers, @app ) end
expire(subscriber, seconds)
click to toggle source
# File lib/pakyow/data/lookup.rb, line 49 def expire(subscriber, seconds) @subscribers.expire(subscriber, seconds) end
persist(subscriber)
click to toggle source
# File lib/pakyow/data/lookup.rb, line 53 def persist(subscriber) @subscribers.persist(subscriber) end
unsubscribe(subscriber)
click to toggle source
# File lib/pakyow/data/lookup.rb, line 45 def unsubscribe(subscriber) @subscribers.unsubscribe(subscriber) end
Private Instance Methods
validate!()
click to toggle source
# File lib/pakyow/data/lookup.rb, line 59 def validate! validate_associated_sources! end
validate_associated_sources!()
click to toggle source
# File lib/pakyow/data/lookup.rb, line 63 def validate_associated_sources! @sources.values.each do |source| source.associations.values.flatten.each do |association| association.dependent_source_names.compact.each do |source_name| unless @sources.key?(source_name) raise( UnknownSource.new_with_message( source: source.__object_name.name, association_source: source_name, association_type: association.specific_type, association_name: association.name ).tap do |error| error.context = self end ) end end end end end