class Tablets::Data::Processing::Filter

Incapsulate relation filtering logic

Public Instance Methods

apply(relation) click to toggle source

Applies filter processing on relation

# File lib/tablets/data/processing/filter.rb, line 13
def apply(relation)
  search(relation)
end

Private Instance Methods

build_conditions_for(query) click to toggle source

Builds search conditions

# File lib/tablets/data/processing/filter.rb, line 29
def build_conditions_for(query)
  query.split(' ').map do |value|
    '(' + search_conditions(value) + ')'
  end.join(' AND ')
end
search_conditions(value) click to toggle source

Returs search conditions for each searchable column

# File lib/tablets/data/processing/filter.rb, line 41
def search_conditions(value)
  searchable_columns.map do |column|
    Tablets::Utils::SearchConditionBuilder.new(column, value).build
  end.join(' OR ')
end
searchable_columns() click to toggle source

Returns searchable columns

# File lib/tablets/data/processing/filter.rb, line 36
def searchable_columns
  columns.map { |column| column[:search] }.flatten.compact.map(&:to_s)
end