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
30
31
32
33
34
35
36
# 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 = Finder.new(scope)
  finder.paginate(size: page_size, offset: page_offset)
  filters.each do |hash|
    value = permitted[hash[:param]]
    filter = if hash[:filter].present?
      Finder::Filter.new(hash[:name], hash[:filter])
    else
      resources_deprecated_parse_filter(hash)
    end

    finder.filter(filter, value)
  end

  return finder
end