class FastAPI::Comparison

Attributes

sql[R]
to_s[R]

Public Class Methods

invalid_comparator?(comparator) click to toggle source
# File lib/fastapi/comparison.rb, line 51
def self.invalid_comparator?(comparator)
  !valid_comparator?(comparator)
end
new(comparator, value, field, type) click to toggle source
# File lib/fastapi/comparison.rb, line 55
def initialize(comparator, value, field, type)
  key = prepare_comparator(comparator, value)
  val = prepare_value(value, type)
  if clause = @@scalar_input[key]
    @sql = scalar_sql(clause, field, val)
  elsif clause = @@multi_input[key]
    @sql = multi_sql(clause, val, field, type)
  else
    raise ArgumentError.new("Invalid comparator: #{key}")
  end
end
valid_comparator?(comparator) click to toggle source
# File lib/fastapi/comparison.rb, line 47
def self.valid_comparator?(comparator)
  @@scalar_input.key?(comparator) || @@multi_input.key?(comparator)
end

Private Instance Methods

multi_sql(clause, value, field, type) click to toggle source
# File lib/fastapi/comparison.rb, line 86
def multi_sql(clause, value, field, type)
  values = [*value].map { |v| ActiveRecord::Base.connection.quote(v) }.join(',')
  [clause.sub('__FIELD__', field).sub('__VALUES__', values).sub('__TYPE__', @@types[type])].compact.join
end
prepare_comparator(comparator, value) click to toggle source
# File lib/fastapi/comparison.rb, line 68
def prepare_comparator(comparator, value)

  if value.nil? and comparator == 'is'
    comparator = :null
  end

  return comparator

end
prepare_value(value, type) click to toggle source
# File lib/fastapi/comparison.rb, line 78
def prepare_value(value, type)
  type == :boolean && !!value != value ? @@booleans[value] : value
end
scalar_sql(clause, field, value) click to toggle source
# File lib/fastapi/comparison.rb, line 82
def scalar_sql(clause, field, value)
  clause.sub('__FIELD__', field).sub('__VALUE__', ActiveRecord::Base.connection.quote(value))
end