Class: Masheri::QueryBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/masheri/query_builder.rb

Defined Under Namespace

Classes: From, Items, Order, Page, Select, Where

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass, options = {}) ⇒ QueryBuilder

Returns a new instance of QueryBuilder.



5
6
7
8
9
10
# File 'lib/masheri/query_builder.rb', line 5

def initialize(klass, options = {})
  @klass      = klass
  @options    = options
  @conditions = Where.new
  @select     = Select.new
end

Instance Attribute Details

#klassObject

Returns the value of attribute klass.



3
4
5
# File 'lib/masheri/query_builder.rb', line 3

def klass
  @klass
end

Instance Method Details

#allObject



54
55
56
# File 'lib/masheri/query_builder.rb', line 54

def all
  Masheri::RpcResponse.new(self)
end

#find_each(&block) ⇒ Object



58
59
60
# File 'lib/masheri/query_builder.rb', line 58

def find_each(&block)
  Masheri::RpcResponse.new(self).find_each(&block)
end

#firstObject



62
63
64
# File 'lib/masheri/query_builder.rb', line 62

def first
  Masheri::RpcResponse.new(items(1)).to_objects.first
end

#from(argument) ⇒ Object



17
18
19
20
# File 'lib/masheri/query_builder.rb', line 17

def from(argument)
  @from = From.new(argument)
  clone
end

#items(argument) ⇒ Object



32
33
34
35
# File 'lib/masheri/query_builder.rb', line 32

def items(argument)
  @items = Items.new(argument)
  clone
end

#order(column, order) ⇒ Object



27
28
29
30
# File 'lib/masheri/query_builder.rb', line 27

def order(column, order)
  @order = Order.new(column, order)
  clone
end

#page(argument) ⇒ Object



37
38
39
40
# File 'lib/masheri/query_builder.rb', line 37

def page(argument)
  @page = Page.new(argument)
  clone
end

#queryObject Also known as: to_s



42
43
44
45
46
# File 'lib/masheri/query_builder.rb', line 42

def query
  [@select, @from, @order, @conditions, @page, @items].map(&:to_s).reject {|s|
    s.blank?
  }.compact.join(" ").strip
end

#select(argument) ⇒ Object



12
13
14
15
# File 'lib/masheri/query_builder.rb', line 12

def select(argument)
  @select = Select.new(argument)
  clone
end

#to_jsonObject



50
51
52
# File 'lib/masheri/query_builder.rb', line 50

def to_json
  Masheri.rpc.query(query)
end

#where(argument) ⇒ Object



22
23
24
25
# File 'lib/masheri/query_builder.rb', line 22

def where(argument)
  @conditions.add argument
  clone
end