class Graphiti::Scoping::FilterGroupValidator

Constants

VALID_REQUIRED_VALUES

Attributes

query_hash[R]
resource[R]

Public Class Methods

new(resource, query_hash) click to toggle source
# File lib/graphiti/scoping/filter_group_validator.rb, line 16
def initialize(resource, query_hash)
  @resource = resource
  @query_hash = query_hash
end
raise_unless_filter_group_requirement_valid!(resource, requirement) click to toggle source
# File lib/graphiti/scoping/filter_group_validator.rb, line 5
def self.raise_unless_filter_group_requirement_valid!(resource, requirement)
  unless VALID_REQUIRED_VALUES.include?(requirement)
    raise Errors::FilterGroupInvalidRequirement.new(
      resource,
      VALID_REQUIRED_VALUES
    )
  end

  true
end

Public Instance Methods

raise_unless_filter_group_requirements_met!() click to toggle source
# File lib/graphiti/scoping/filter_group_validator.rb, line 21
def raise_unless_filter_group_requirements_met!
  return if grouped_filters.empty?

  case filter_group_requirement
  when :all
    raise_unless_all_requirements_met!
  when :any
    raise_unless_any_requirements_met!
  end

  true
end

Private Instance Methods

filter_group_filter_param() click to toggle source
# File lib/graphiti/scoping/filter_group_validator.rb, line 74
def filter_group_filter_param
  query_hash.fetch(:filter, {})
end
filter_group_names() click to toggle source
# File lib/graphiti/scoping/filter_group_validator.rb, line 62
def filter_group_names
  grouped_filters.fetch(:names, [])
end
filter_group_requirement() click to toggle source
# File lib/graphiti/scoping/filter_group_validator.rb, line 66
def filter_group_requirement
  grouped_filters.fetch(:required, :invalid)
end
grouped_filters() click to toggle source
# File lib/graphiti/scoping/filter_group_validator.rb, line 70
def grouped_filters
  resource.grouped_filters
end
raise_unless_all_requirements_met!() click to toggle source
# File lib/graphiti/scoping/filter_group_validator.rb, line 38
def raise_unless_all_requirements_met!
  met = filter_group_names.all? { |filter_name| filter_group_filter_param.key?(filter_name) }

  unless met
    raise Errors::FilterGroupMissingRequiredFilters.new(
      resource,
      filter_group_names,
      filter_group_requirement
    )
  end
end
raise_unless_any_requirements_met!() click to toggle source
# File lib/graphiti/scoping/filter_group_validator.rb, line 50
def raise_unless_any_requirements_met!
  met = filter_group_names.any? { |filter_name| filter_group_filter_param.key?(filter_name) }

  unless met
    raise Errors::FilterGroupMissingRequiredFilters.new(
      resource,
      filter_group_names,
      filter_group_requirement
    )
  end
end