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