class NoBrainer::GeoResultSet
Attributes
klass[RW]
rql[RW]
Public Class Methods
new(klass, rql)
click to toggle source
# File lib/nobrainer_geospatial.rb, line 9 def initialize(klass, rql) self.rql = rql self.klass = klass end
Public Instance Methods
[](index)
click to toggle source
# File lib/nobrainer_geospatial.rb, line 77 def [](index) to_a()[index] end
all()
click to toggle source
# File lib/nobrainer_geospatial.rb, line 18 def all to_a end
count()
click to toggle source
# File lib/nobrainer_geospatial.rb, line 32 def count NoBrainer.run { self.rql.count } end
each(&block)
click to toggle source
# File lib/nobrainer_geospatial.rb, line 26 def each(&block) NoBrainer.run { self.rql }.each do |result| block.call(new_from_db result) end end
first()
click to toggle source
# File lib/nobrainer_geospatial.rb, line 22 def first new_from_db NoBrainer.run { self.rql }.first end
limit(n)
click to toggle source
# File lib/nobrainer_geospatial.rb, line 44 def limit(n) GeoResultSet.new(self.klass, self.rql.limit(n)) end
order_by(args, order = :asc)
click to toggle source
# File lib/nobrainer_geospatial.rb, line 52 def order_by(args, order = :asc) conditions = [] raise "Invalid sort order: #{order}" unless order == :asc || order == :desc if args.class == Array conditions = args.map do |arg| if order == :asc RethinkDB::RQL.new.asc(arg) else RethinkDB::RQL.new.desc(arg) end end else if order == :asc conditions = RethinkDB::RQL.new.asc(args) else conditions = RethinkDB::RQL.new.desc(args) end end GeoResultSet.new(self.klass, self.rql.order_by(*conditions)) end
skip(n)
click to toggle source
# File lib/nobrainer_geospatial.rb, line 48 def skip(n) GeoResultSet.new(self.klass, self.rql.skip(n)) end
to_a()
click to toggle source
# File lib/nobrainer_geospatial.rb, line 14 def to_a NoBrainer.run { self.rql }.to_a.map {|r| new_from_db(r) } end
to_rql()
click to toggle source
# File lib/nobrainer_geospatial.rb, line 81 def to_rql self.rql end
where(args = nil, &block)
click to toggle source
# File lib/nobrainer_geospatial.rb, line 36 def where(args = nil, &block) if block_given? GeoResultSet.new(self.klass, self.rql.filter(block)) else GeoResultSet.new(self.klass, self.rql.filter(args)) end end
Private Instance Methods
new_from_db(result)
click to toggle source
# File lib/nobrainer_geospatial.rb, line 86 def new_from_db(result) obj = klass.new_from_db(result) if result['_distance'] obj.singleton_class.class_eval do attr_accessor :distance end obj.distance = result['_distance'] end return obj end