Sha256: 1784c4aae8efe55ea8ba564e2f9001fc51b88560dd9e87e2ddbcf8c33cfcaf99

Contents?: true

Size: 1.09 KB

Versions: 87

Compression:

Stored size: 1.09 KB

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_filters - filter_param.keys
    end

    def required_filters
      resource.filters.map { |k, v|
        k if v[:required]
      }.compact
    end

    def missing_dependent_filters
      [].tap do |arr|
        filter_param.each_pair do |key, value|
          if (df = dependent_filters[key])
            missing = df[:dependencies] - filter_param.keys
            unless missing.length.zero?
              arr << {filter: df, missing: missing}
            end
          end
        end
      end
    end

    def dependent_filters
      resource.filters.select do |k, v|
        v[:dependencies].present?
      end
    end
  end
end

Version data entries

87 entries across 87 versions & 1 rubygems

Version Path
graphiti-1.8.1 lib/graphiti/scoping/filterable.rb
graphiti-1.8.0 lib/graphiti/scoping/filterable.rb
graphiti-1.7.9 lib/graphiti/scoping/filterable.rb
graphiti-1.7.8 lib/graphiti/scoping/filterable.rb
graphiti-1.7.7 lib/graphiti/scoping/filterable.rb
graphiti-1.7.6 lib/graphiti/scoping/filterable.rb
graphiti-1.7.5 lib/graphiti/scoping/filterable.rb
graphiti-1.7.4 lib/graphiti/scoping/filterable.rb
graphiti-1.7.3 lib/graphiti/scoping/filterable.rb
graphiti-1.7.2 lib/graphiti/scoping/filterable.rb
graphiti-1.7.1 lib/graphiti/scoping/filterable.rb
graphiti-1.7.0 lib/graphiti/scoping/filterable.rb
graphiti-1.6.4 lib/graphiti/scoping/filterable.rb
graphiti-1.6.3 lib/graphiti/scoping/filterable.rb
graphiti-1.6.2 lib/graphiti/scoping/filterable.rb
graphiti-1.6.1 lib/graphiti/scoping/filterable.rb
graphiti-1.6.0 lib/graphiti/scoping/filterable.rb
graphiti-1.5.3 lib/graphiti/scoping/filterable.rb
graphiti-1.5.2 lib/graphiti/scoping/filterable.rb
graphiti-1.5.1 lib/graphiti/scoping/filterable.rb