class SequelMapper::QueryableLazyDatasetLoader
Attributes
database_enum[R]
loader[R]
queries[R]
Public Class Methods
new(database_enum, loader, queries)
click to toggle source
# File lib/sequel_mapper/queryable_lazy_dataset_loader.rb, line 8 def initialize(database_enum, loader, queries) @database_enum = database_enum @loader = loader @queries = queries @loaded = false end
Public Instance Methods
each(&block)
click to toggle source
# File lib/sequel_mapper/queryable_lazy_dataset_loader.rb, line 30 def each(&block) enum.each(&block) end
each_loaded(&block)
click to toggle source
# File lib/sequel_mapper/queryable_lazy_dataset_loader.rb, line 34 def each_loaded(&block) loaded_objects.each(&block) end
subset(name, *params)
click to toggle source
# File lib/sequel_mapper/queryable_lazy_dataset_loader.rb, line 22 def subset(name, *params) self.class.new( queries.execute(database_enum, name, *params), loader, queries, ) end
where(criteria)
click to toggle source
# File lib/sequel_mapper/queryable_lazy_dataset_loader.rb, line 18 def where(criteria) self.class.new(database_enum.where(criteria), loader, queries) end
Private Instance Methods
enum()
click to toggle source
# File lib/sequel_mapper/queryable_lazy_dataset_loader.rb, line 40 def enum @enum ||= Enumerator.new { |yielder| loaded_objects.each do |obj| yielder.yield(obj) end loop do object_enum.next.tap { |obj| loaded_objects.push(obj) yielder.yield(obj) } end } end
inspectable_properties()
click to toggle source
# File lib/sequel_mapper/queryable_lazy_dataset_loader.rb, line 63 def inspectable_properties [ :database_enum, :loaded, ] end
loaded_objects()
click to toggle source
# File lib/sequel_mapper/queryable_lazy_dataset_loader.rb, line 59 def loaded_objects @loaded_objects ||= [] end
object_enum()
click to toggle source
# File lib/sequel_mapper/queryable_lazy_dataset_loader.rb, line 55 def object_enum @object_enum ||= database_enum.lazy.map(&loader) end