class Cuprum::Rails::QueryBuilder
Applies filter operations for a Rails
collection query.
Attributes
native_query[R]
Public Class Methods
new(base_query)
click to toggle source
@param base_query [Cuprum::Rails::Query] The query to build.
Calls superclass method
# File lib/cuprum/rails/query_builder.rb, line 11 def initialize(base_query) super @native_query = base_query.send(:native_query) end
Private Instance Methods
build_native_query(criteria)
click to toggle source
# File lib/cuprum/rails/query_builder.rb, line 21 def build_native_query(criteria) native_query.where( criteria .map do |(attribute, operator, value)| send(operator, attribute, value) end .join(' AND ') ) end
build_query(criteria)
click to toggle source
Calls superclass method
# File lib/cuprum/rails/query_builder.rb, line 31 def build_query(criteria) super.send(:with_native_query, build_native_query(criteria)) end
equal(attribute, value)
click to toggle source
# File lib/cuprum/rails/query_builder.rb, line 35 def equal(attribute, value) return sanitize("#{attribute} IS NULL") if value.nil? sanitize("#{attribute} = :value", value: value) end
greater_than(attribute, value)
click to toggle source
# File lib/cuprum/rails/query_builder.rb, line 41 def greater_than(attribute, value) sanitize("#{attribute} > :value", value: value) end
greater_than_or_equal_to(attribute, value)
click to toggle source
# File lib/cuprum/rails/query_builder.rb, line 45 def greater_than_or_equal_to(attribute, value) sanitize("#{attribute} >= :value", value: value) end
less_than(attribute, value)
click to toggle source
# File lib/cuprum/rails/query_builder.rb, line 49 def less_than(attribute, value) sanitize("#{attribute} < :value", value: value) end
less_than_or_equal_to(attribute, value)
click to toggle source
# File lib/cuprum/rails/query_builder.rb, line 53 def less_than_or_equal_to(attribute, value) sanitize("#{attribute} <= :value", value: value) end
not_equal(attribute, value)
click to toggle source
# File lib/cuprum/rails/query_builder.rb, line 57 def not_equal(attribute, value) return sanitize("#{attribute} IS NOT NULL") if value.nil? sanitize("(#{attribute} != :value OR #{attribute} IS NULL)", value: value) end
not_one_of(attribute, value)
click to toggle source
# File lib/cuprum/rails/query_builder.rb, line 63 def not_one_of(attribute, value) sanitize( "(#{attribute} NOT IN (:value) OR #{attribute} IS NULL)", value: value ) end
one_of(attribute, value)
click to toggle source
# File lib/cuprum/rails/query_builder.rb, line 70 def one_of(attribute, value) sanitize("#{attribute} IN (:value)", value: value) end
sanitize(*conditions)
click to toggle source
# File lib/cuprum/rails/query_builder.rb, line 74 def sanitize(*conditions) ActiveRecord::Base.sanitize_sql_for_conditions(conditions) end