Class: Workarea::AdminSearchQueryWrapper
- Inherits:
-
Object
- Object
- Workarea::AdminSearchQueryWrapper
show all
- Includes:
- GlobalID::Identification, Search::Pagination
- Defined in:
- app/queries/workarea/admin_search_query_wrapper.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#each_by, #from, #page, #per_page, #size
Constructor Details
Returns a new instance of AdminSearchQueryWrapper.
15
16
17
18
|
# File 'app/queries/workarea/admin_search_query_wrapper.rb', line 15
def initialize(params = {})
@params = params.with_indifferent_access
@params[:model_type] = @params[:model_type].to_s end
|
Instance Attribute Details
#params ⇒ Object
Returns the value of attribute params.
9
10
11
|
# File 'app/queries/workarea/admin_search_query_wrapper.rb', line 9
def params
@params
end
|
Class Method Details
.find(id) ⇒ Object
11
12
13
|
# File 'app/queries/workarea/admin_search_query_wrapper.rb', line 11
def self.find(id)
new(JSON.parse(id))
end
|
Instance Method Details
#filters ⇒ Object
46
47
48
|
# File 'app/queries/workarea/admin_search_query_wrapper.rb', line 46
def filters
params[:query_params]
end
|
#id ⇒ Object
20
21
22
|
# File 'app/queries/workarea/admin_search_query_wrapper.rb', line 20
def id
params.to_json
end
|
#klass ⇒ Object
24
25
26
|
# File 'app/queries/workarea/admin_search_query_wrapper.rb', line 24
def klass
params[:model_type].constantize
end
|
#klass_criteria ⇒ Object
41
42
43
44
|
# File 'app/queries/workarea/admin_search_query_wrapper.rb', line 41
def klass_criteria
return klass.all unless params[:q].present? && klass.respond_to?(:search)
klass.search(params[:q])
end
|
#results ⇒ Object
28
29
30
31
32
|
# File 'app/queries/workarea/admin_search_query_wrapper.rb', line 28
def results
criteria = klass_criteria
criteria = criteria.where(filters) if filters.present?
criteria.order_by(sort).page(page).per(per_page)
end
|
to match Search::Query method arguments
34
35
36
37
38
39
|
# File 'app/queries/workarea/admin_search_query_wrapper.rb', line 34
def scroll(options = {}, &block) criteria = results
criteria.total_pages.times do |page|
yield criteria.page(page + 1).per(per_page).to_a
end
end
|
#sort ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'app/queries/workarea/admin_search_query_wrapper.rb', line 54
def sort
if klass.respond_to?(:sorts)
result = params[:sort].presence || klass.sorts.first.to_s
klass.sorts.map do |sortable|
if sortable.to_s == result.to_s
return [sortable.field, sortable.direction]
end
end
end
[:created_at, :desc]
end
|
#total ⇒ Object
50
51
52
|
# File 'app/queries/workarea/admin_search_query_wrapper.rb', line 50
def total
results.count
end
|