Class: DocumentMapper::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/document_mapper/query.rb

Instance Method Summary collapse

Constructor Details

#initialize(model) ⇒ Query

Returns a new instance of Query.



3
4
5
6
# File 'lib/document_mapper/query.rb', line 3

def initialize(model)
  @model = model
  @where = {}
end

Instance Method Details

#allObject



42
43
44
45
46
47
48
49
50
51
# File 'lib/document_mapper/query.rb', line 42

def all
  result = @model.select(:where => @where, :order_by => @order_by)
  if @offset.present?
    result = result.last([result.size - @offset, 0].max)
  end
  if @limit.present?
    result = result.first(@limit)
  end
  result
end

#firstObject



34
35
36
# File 'lib/document_mapper/query.rb', line 34

def first
  self.all.first
end

#lastObject



38
39
40
# File 'lib/document_mapper/query.rb', line 38

def last
  self.all.last
end

#limit(number) ⇒ Object



29
30
31
32
# File 'lib/document_mapper/query.rb', line 29

def limit(number)
  @limit = number
  self
end

#offset(number) ⇒ Object



24
25
26
27
# File 'lib/document_mapper/query.rb', line 24

def offset(number)
  @offset = number
  self
end

#order_by(field) ⇒ Object



19
20
21
22
# File 'lib/document_mapper/query.rb', line 19

def order_by(field)
  @order_by = field.is_a?(Symbol) ? {field => :asc} : field
  self
end

#where(constraints_hash) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/document_mapper/query.rb', line 8

def where(constraints_hash)
  selector_hash = constraints_hash.reject { |key, value| !key.is_a? Selector }
  symbol_hash = constraints_hash.reject { |key, value| key.is_a? Selector }
  symbol_hash.each do |attribute, value|
    selector = Selector.new(:attribute => attribute, :operator => 'equal')
    selector_hash.update({ selector => value })
  end
  @where.merge! selector_hash
  self
end