module JsonapiCompliable::Scoping::Filterable

@api private

Public Instance Methods

filter_param() click to toggle source

@api private

# File lib/jsonapi_compliable/scoping/filterable.rb, line 23
def filter_param
  query_hash[:filter]
end
find_filter(name) click to toggle source

@api private

# File lib/jsonapi_compliable/scoping/filterable.rb, line 5
def find_filter(name)
  find_filter!(name)
rescue JsonapiCompliable::Errors::BadFilter
  nil
end
find_filter!(name) click to toggle source

@api private

# File lib/jsonapi_compliable/scoping/filterable.rb, line 12
def find_filter!(name)
  filter_name, filter_value = \
    resource.filters.find { |_name, opts| opts[:aliases].include?(name.to_sym) }
  raise JsonapiCompliable::Errors::BadFilter unless filter_name
  if guard = filter_value[:if]
    raise JsonapiCompliable::Errors::BadFilter if resource.context.send(guard) == false
  end
  { filter_name => filter_value }
end
missing_required_filters() click to toggle source
# File lib/jsonapi_compliable/scoping/filterable.rb, line 27
def missing_required_filters
  required_filters.keys - filter_param.keys
end
required_filters() click to toggle source
# File lib/jsonapi_compliable/scoping/filterable.rb, line 31
def required_filters
  resource.filters.select do |_name, opts|
    opts[:required].respond_to?(:call) ? opts[:required].call(resource.context) : opts[:required]
  end
end
required_filters_provided?() click to toggle source
# File lib/jsonapi_compliable/scoping/filterable.rb, line 37
def required_filters_provided?
  missing_required_filters.empty?
end