Sha256: 4cf88bdaf2ad91d143a7002fac50a417e15efff4ce1edffd0ac915da7778107e

Contents?: true

Size: 1.1 KB

Versions: 61

Compression:

Stored size: 1.1 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 do |k, v|
        k if v[:required]
      end.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

61 entries across 61 versions & 1 rubygems

Version Path
graphiti-1.0.rc.21 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.19 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.18 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.17 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.16 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.15 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.14 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.12 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.11 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.10 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.9 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.8 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.7 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.6 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.5 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.4 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.3 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.2 lib/graphiti/scoping/filterable.rb
graphiti-1.0.rc.1 lib/graphiti/scoping/filterable.rb
graphiti-1.0.beta.23 lib/graphiti/scoping/filterable.rb