Sha256: 2a7fecfd3a4687d2c8bedc22f8e1fe8d81409485541aa00137b38ad036d1f590
Contents?: true
Size: 1.09 KB
Versions: 1
Compression:
Stored size: 1.09 KB
Contents
# frozen_string_literal: true module Kadmin module Concerns module Resources extend ActiveSupport::Concern # Default finder page size DEFAULT_FINDER_PAGE_SIZE = 100 # Does not return anything, but will modify your finder instance. # @param [Kadmin::Finder] finder the finder to respond with # @param [Array<String>] filters an array of filters, of format: { name:, column:, param: } 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.present end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kadmin-0.7.0 | app/controllers/kadmin/concerns/resources.rb |