class Locomotive::Steam::Adapters::Memory::Query
Attributes
conditions[R]
Public Class Methods
key(name, operator)
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 105 def self.key(name, operator) "#{name}.#{operator}" end
new(dataset, locale = nil, &block)
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 19 def initialize(dataset, locale = nil, &block) @dataset = dataset @conditions = [] @sorting = nil @limit = nil @offset = 0 @locale = locale instance_eval(&block) if block_given? end
Public Instance Methods
+(query)
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 34 def +(query) @conditions += query.conditions self end
==(other)
click to toggle source
Calls superclass method
# File lib/locomotive/steam/adapters/memory/query.rb, line 58 def ==(other) if other.kind_of? Array all == other else super end end
all()
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 66 def all # TODO: instrumentation here # Locomotive::Common::Logger.debug "[dataset][#{@dataset.name}] conditions = #{@conditions.map(&:inspect).join(' AND ')}" limited sorted(filtered) end
filtered()
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 90 def filtered @dataset.all.dup.find_all do |entry| accepted = true @conditions.each do |_condition| unless _condition.matches?(entry) accepted = false break # no to go further end end accepted end end
key(name, operator)
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 109 def key(name, operator) self.class.key(name, operator) end
Also aliased as: k
limit(num)
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 44 def limit(num) @limit = num self end
limited(entries)
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 78 def limited(entries) return [] if @limit == 0 return entries if @offset == 0 && @limit.nil? subentries = entries.drop(@offset || 0) if @limit.kind_of? Integer subentries.take(@limit) else subentries end end
offset(num)
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 49 def offset(num) @offset = num self end
only(*fields)
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 54 def only(*fields) self end
order_by(*args)
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 39 def order_by(*args) @sorting = Order.new(*args) self end
sorted(entries)
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 72 def sorted(entries) return entries if @sorting.blank? entries.sort_by { |entry| @sorting.apply_to(entry, @locale) } end
where(conditions = {})
click to toggle source
# File lib/locomotive/steam/adapters/memory/query.rb, line 29 def where(conditions = {}) @conditions += conditions.map { |name, value| Condition.new(name, value, @locale) } self end