Module: Kadmin::Concerns::Resources

Extended by:
ActiveSupport::Concern
Defined in:
app/controllers/kadmin/concerns/resources.rb

Constant Summary collapse

DEFAULT_FINDER_PAGE_SIZE =

Default finder page size

100

Instance Method Summary collapse

Instance Method Details

#resources_finder(scope, filters = []) ⇒ Object

Does not return anything, but will modify your finder instance.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'app/controllers/kadmin/concerns/resources.rb', line 14

def resources_finder(scope, filters = [])
  filters = Array.wrap(filters)
  filter_params = filters.map { |hash| hash[:param] }
  permitted = params.permit(:page_size, :page_offset, :format, *filter_params)

  page_size = permitted.fetch(:page_size, DEFAULT_FINDER_PAGE_SIZE).to_i
  page_offset = permitted.fetch(:page_offset, 0).to_i

  finder = Kadmin::Finder.new(scope)
  finder.paginate(size: page_size, offset: page_offset)
  filters.each do |filter|
    finder.filter(name: filter[:name], column: filter[:column], value: permitted[filter[:param]])
  end

  return finder
end