class ActiveForce::Query
Attributes
query_fields[R]
table[R]
Public Class Methods
new(table)
click to toggle source
# File lib/active_force/query.rb, line 5 def initialize table @table = table @conditions = [] @table_id = 'Id' @query_fields = [@table_id] end
Public Instance Methods
all()
click to toggle source
# File lib/active_force/query.rb, line 16 def all self end
count()
click to toggle source
# File lib/active_force/query.rb, line 102 def count clone_and_set_instance_variables(query_fields: ["count(Id)"]) end
fields(fields_collection = [])
click to toggle source
# File lib/active_force/query.rb, line 12 def fields fields_collection = [] @query_fields += fields_collection.to_a end
find(id)
click to toggle source
# File lib/active_force/query.rb, line 76 def find id where("#{ @table_id } = '#{ id }'").limit 1 end
first()
click to toggle source
# File lib/active_force/query.rb, line 80 def first if @records clone_and_set_instance_variables( size: 1, records: [@records.first], decorated_records: [@decorated_records&.first] ) else clone_and_set_instance_variables(size: 1) end end
ids()
click to toggle source
# File lib/active_force/query.rb, line 110 def ids clone_and_set_instance_variables(query_fields: ["Id"]) end
join(object_query)
click to toggle source
# File lib/active_force/query.rb, line 96 def join object_query chained_query = self.clone chained_query.fields ["(#{ object_query.to_s })"] chained_query end
last(limit = 1)
click to toggle source
# File lib/active_force/query.rb, line 92 def last(limit = 1) order("Id DESC").limit(limit) end
limit(size)
click to toggle source
# File lib/active_force/query.rb, line 60 def limit size size ? clone_and_set_instance_variables(size: size) : self end
limit_value()
click to toggle source
# File lib/active_force/query.rb, line 64 def limit_value @size end
not(condition)
click to toggle source
# File lib/active_force/query.rb, line 46 def not condition condition ? where("NOT ((#{condition.join(') AND (')}))") : self end
offset(offset)
click to toggle source
# File lib/active_force/query.rb, line 68 def offset offset clone_and_set_instance_variables(offset: offset) end
offset_value()
click to toggle source
# File lib/active_force/query.rb, line 72 def offset_value @offset end
or(query)
click to toggle source
# File lib/active_force/query.rb, line 50 def or query return self unless query clone_and_set_instance_variables(conditions: ["(#{and_conditions}) OR (#{query.and_conditions})"]) end
order(order)
click to toggle source
# File lib/active_force/query.rb, line 56 def order order order ? clone_and_set_instance_variables(order: order) : self end
select(*columns)
click to toggle source
# File lib/active_force/query.rb, line 33 def select *columns clone_and_set_instance_variables(query_fields: columns) end
sum(field)
click to toggle source
# File lib/active_force/query.rb, line 106 def sum field clone_and_set_instance_variables(query_fields: ["sum(#{field})"]) end
to_s()
click to toggle source
# File lib/active_force/query.rb, line 20 def to_s <<-SOQL.gsub(/\s+/, " ").strip SELECT #{ build_select } FROM #{ @table } #{ build_where } #{ build_order } #{ build_limit } #{ build_offset } SOQL end
where(condition = nil)
click to toggle source
# File lib/active_force/query.rb, line 37 def where condition = nil new_conditions = @conditions | [condition] if new_conditions != @conditions clone_and_set_instance_variables({conditions: new_conditions}) else self end end
Protected Instance Methods
and_conditions()
click to toggle source
# File lib/active_force/query.rb, line 115 def and_conditions "(#{@conditions.join(') AND (')})" unless @conditions.empty? end
build_limit()
click to toggle source
# File lib/active_force/query.rb, line 127 def build_limit "LIMIT #{ @size }" if @size end
build_offset()
click to toggle source
# File lib/active_force/query.rb, line 135 def build_offset "OFFSET #{ @offset }" if @offset end
build_order()
click to toggle source
# File lib/active_force/query.rb, line 131 def build_order "ORDER BY #{ @order }" if @order end
build_select()
click to toggle source
# File lib/active_force/query.rb, line 119 def build_select @query_fields.compact.uniq.join(', ') end
build_where()
click to toggle source
# File lib/active_force/query.rb, line 123 def build_where "WHERE #{and_conditions}" unless @conditions.empty? end
clone_and_set_instance_variables(instance_variable_hash={})
click to toggle source
# File lib/active_force/query.rb, line 139 def clone_and_set_instance_variables instance_variable_hash={} clone = self.clone { decorated_records: nil, records: nil } .merge(instance_variable_hash) .each { |k,v| clone.instance_variable_set("@#{k.to_s}", v) } clone end