Sha256: 44b792a97e60e741ebd6b00911d368dd5ec403e4a26a8c8e26f639e7618bfc99

Contents?: true

Size: 752 Bytes

Versions: 4

Compression:

Stored size: 752 Bytes

Contents

module Graphiti
  # @api private
  module Scoping::Filterable
    # @api private
    def find_filter(name)
      find_filter!(name)
    rescue Graphiti::Errors::AttributeError
      nil
    end

    # @api private
    def find_filter!(name)
      resource.class.get_attr!(name, :filterable, request: true)
      { name => resource.filters[name] }
    end

    # @api private
    def filter_param
      query_hash[:filter] || {}
    end

    def missing_required_filters
      required_attributes - filter_param.keys
    end

    def required_attributes
      resource.attributes.map do |k, v|
        k if v[:filterable] == :required
      end.compact
    end

    def required_filters_provided?
      missing_required_filters.empty?
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
graphiti-1.0.alpha.5 lib/graphiti/scoping/filterable.rb
graphiti-1.0.alpha.4 lib/graphiti/scoping/filterable.rb
graphiti-1.0.alpha.1 lib/graphiti/scoping/filterable.rb
graphiti-rb-1.0.alpha.1 lib/graphiti/scoping/filterable.rb