Class: Backframe::Query
- Inherits:
-
Object
- Object
- Backframe::Query
- Defined in:
- lib/backframe/query.rb,
lib/backframe/query/sort.rb
Defined Under Namespace
Classes: Sort
Constant Summary collapse
- EXCLUDE_IDS_REGEX =
/^[\d,]*$/- SORT_REGEX =
/^[\w\_\-,]*$/
Class Method Summary collapse
Instance Method Summary collapse
- #filter(records, _filters) ⇒ Object
- #perform(records, params = {}) ⇒ Object
- #sort(records, sorts) ⇒ Object
Class Method Details
.perform(*args) ⇒ Object
12 13 14 |
# File 'lib/backframe/query.rb', line 12 def perform(*args) new.perform(*args) end |
Instance Method Details
#filter(records, _filters) ⇒ Object
34 35 36 |
# File 'lib/backframe/query.rb', line 34 def filter(records, _filters) records end |
#perform(records, params = {}) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# 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) ⇒ Object
38 39 40 41 42 43 44 |
# 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 |