class GraphqlRails::Controller::Request::FormatErrors

Converts user provided free-form errors in to meaningfull graphql error classes

Attributes

not_formatted_errors[R]

Public Class Methods

new(not_formatted_errors:) click to toggle source
# File lib/graphql_rails/controller/request/format_errors.rb, line 15
def initialize(not_formatted_errors:)
  @not_formatted_errors = not_formatted_errors
end

Public Instance Methods

call() click to toggle source
# File lib/graphql_rails/controller/request/format_errors.rb, line 19
def call
  if validation_errors?
    formatted_validation_errors
  else
    not_formatted_errors.map { |error| format_error(error) }
  end
end

Private Instance Methods

format_error(error) click to toggle source
# File lib/graphql_rails/controller/request/format_errors.rb, line 43
def format_error(error)
  if error.is_a?(String)
    ExecutionError.new(error)
  elsif error.is_a?(GraphQL::ExecutionError)
    error
  elsif CustomExecutionError.accepts?(error)
    message = error[:message] || error['message']
    CustomExecutionError.new(message, error.except(:message, 'message'))
  elsif error.respond_to?(:message)
    ExecutionError.new(error.message)
  end
end
formatted_validation_errors() click to toggle source
# File lib/graphql_rails/controller/request/format_errors.rb, line 37
def formatted_validation_errors
  not_formatted_errors.map do |field, message|
    ValidationError.new(message, field)
  end
end
validation_errors?() click to toggle source
# File lib/graphql_rails/controller/request/format_errors.rb, line 31
def validation_errors?
  defined?(ActiveModel) &&
    defined?(ActiveModel::Errors) &&
    not_formatted_errors.is_a?(ActiveModel::Errors)
end