class HQ::GraphQL::Filters

Constants

BOOLEAN_VALUES

Attributes

filters[R]
model[R]

Public Class Methods

new(filters, model) click to toggle source
# File lib/hq/graphql/filters.rb, line 17
def initialize(filters, model)
  @filters = Array(filters).map { |filter| Filter.for(filter, table: model.arel_table) }
  @model = model
end
supported?(column) click to toggle source
# File lib/hq/graphql/filters.rb, line 11
def self.supported?(column)
  !!Filter.class_from_column(column)
end

Public Instance Methods

to_scope() click to toggle source
# File lib/hq/graphql/filters.rb, line 33
def to_scope
  filters.reduce(model.all) do |s, filter|
    s.where(filter.to_arel)
  end
end
validate!() click to toggle source
# File lib/hq/graphql/filters.rb, line 22
def validate!
  filters.each(&:validate)
  errors = filters.map do |filter|
    filter.display_error_message
  end.flatten.uniq

  if errors.any?
    raise ::GraphQL::ExecutionError, errors.join(", ")
  end
end