class Backframe::Query

Constants

EXCLUDE_IDS_REGEX
SORT_REGEX

Public Class Methods

perform(*args) click to toggle source
# File lib/backframe/query.rb, line 12
def perform(*args)
  new.perform(*args)
end

Public Instance Methods

filter(records, _filters) click to toggle source
# File lib/backframe/query.rb, line 34
def filter(records, _filters)
  records
end
perform(records, params = {}) click to toggle source
# File lib/backframe/query.rb, line 18
def perform(records, params = {})
  filters = params.except([:exclude_ids,:fields,:page,:per_page,:sort])
  if filters.any?
    records = filter(records, filters)
  end
  if params.key?(:exclude_ids) && params[:exclude_ids] =~ EXCLUDE_IDS_REGEX
    table = records.arel_table.name
    records = records.where('"'+table+'"."id" NOT IN (?)', params[:exclude_ids].split(","))
  end
  if params.key?(:sort) && params[:sort] =~ SORT_REGEX
    sorts = Backframe::Query::Sort.parse(params[:sort])
    records = sort(records, sorts)
  end
  records
end
sort(records, sorts) click to toggle source
# File lib/backframe/query.rb, line 38
def sort(records, sorts)
  order = []
  sorts.each do |sort|
    order << sort[:key] + " " + sort[:order]
  end
  records.order(order.join(", "))
end