Class: Dynaccount::QueryBuilder

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass) ⇒ QueryBuilder

Returns a new instance of QueryBuilder.



5
6
7
# File 'lib/dynaccount/query_builder.rb', line 5

def initialize(klass)
  self.klass = klass
end

Instance Attribute Details

#klassObject

Returns the value of attribute klass.



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

def klass
  @klass
end

#limitsObject

Returns the value of attribute limits.



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

def limits
  @limits
end

#offsetsObject

Returns the value of attribute offsets.



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

def offsets
  @offsets
end

#ordersObject

Returns the value of attribute orders.



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

def orders
  @orders
end

#selectsObject

Returns the value of attribute selects.



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

def selects
  @selects
end

#wheresObject

Returns the value of attribute wheres.



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

def wheres
  @wheres
end

Instance Method Details

#executeObject



44
45
46
47
48
49
50
51
52
# File 'lib/dynaccount/query_builder.rb', line 44

def execute
  klass.run_query(
    select: self.selects,
    where: self.wheres,
    limit: self.limits,
    offset: self.offsets,
    order: self.orders
  )
end

#limit(l) ⇒ Object



35
36
37
# File 'lib/dynaccount/query_builder.rb', line 35

def limit(l)
  self.limits = l
end

#offset(o) ⇒ Object



39
40
41
# File 'lib/dynaccount/query_builder.rb', line 39

def offset(o)
  self.offsets = o
end

#order(o) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/dynaccount/query_builder.rb', line 9

def order(o)
  if o.is_a?(Hash)
    unless [:DESC, :ASC].include?(o[o.keys.first].to_sym)
      raise ArgumentError.new("Wrong argument #{o[o.keys.first]}. Should be :ASC or :DESC")
    end

    self.orders = [o.keys.first, o[o.keys.first].to_sym]
  elsif [String, Symbol].include?(o.class)
    self.orders = [o.to_s, :asc]
  else
    self.orders = nil
  end
end

#select(*args) ⇒ Object



23
24
25
26
27
# File 'lib/dynaccount/query_builder.rb', line 23

def select(*args)
  self.selects = args.map(&:to_s)
rescue NoMethodError
  raise ArgumentError.new("Wrong argument #{args}. All should be castable to string")
end

#where(**args) ⇒ Object



29
30
31
32
33
# File 'lib/dynaccount/query_builder.rb', line 29

def where(**args)
  self.wheres = args
rescue NoMethodError
  raise ArgumentError.new("Wrong argument #{args}. All should be castable to string")
end