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