class Tablets::Data::Query
Incapsulates database query
Attributes
columns[R]
params[R]
relation[R]
Public Class Methods
new(relation, params, columns)
click to toggle source
Initializes query with relation, params and columns
# File lib/tablets/data/query.rb, line 12 def initialize(relation, params, columns) @relation = relation @params = params @columns = columns end
Public Instance Methods
fetch()
click to toggle source
Applies all processings on relation and returns it
# File lib/tablets/data/query.rb, line 19 def fetch paginate filter order relation end
filtered()
click to toggle source
Returns records count after filter is applied but before pagination
# File lib/tablets/data/query.rb, line 29 def filtered filter(relation).count(:all) end
total()
click to toggle source
Returns total records count before filter and pagination is applied
# File lib/tablets/data/query.rb, line 24 def total relation.count(:all) end
Private Instance Methods
filter(records)
click to toggle source
Applies filter processing
# File lib/tablets/data/query.rb, line 45 def filter(records) return records unless params[:search].present? Tablets::Data::Processing::Filter.apply(params, columns, records) end
order(records)
click to toggle source
Applies order processing
# File lib/tablets/data/query.rb, line 38 def order(records) return records unless params[:order].present? Tablets::Data::Processing::Order.apply(params, columns, records) end
paginate(records)
click to toggle source
Applies paginate processing
# File lib/tablets/data/query.rb, line 52 def paginate(records) return records if params[:length] == '-1' Tablets::Data::Processing::Paginate.apply(params, columns, records) end