class Dynaccount::QueryBuilder

Attributes

klass[RW]
limits[RW]
offsets[RW]
orders[RW]
selects[RW]
wheres[RW]

Public Class Methods

new(klass) click to toggle source
# File lib/dynaccount/query_builder.rb, line 5
def initialize(klass)
  self.klass = klass
end

Public Instance Methods

execute() click to toggle source
# 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) click to toggle source
# File lib/dynaccount/query_builder.rb, line 35
def limit(l)
  self.limits = l
end
offset(o) click to toggle source
# File lib/dynaccount/query_builder.rb, line 39
def offset(o)
  self.offsets = o
end
order(o) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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