class Graphql::PersistedDocuments::Persister

Constants

InvalidDocumentError
MissingPersistValidatedDocumentError
ParseError

Attributes

errors[R]
query_string[R]

Public Class Methods

new(query_string) click to toggle source
# File lib/graphql/persisted_documents/persister.rb, line 10
def initialize(query_string)
  @query_string = query_string
  @errors = []
end

Public Instance Methods

persist() click to toggle source
# File lib/graphql/persisted_documents/persister.rb, line 15
def persist
  document = GraphQL.parse(query_string)
  query = GraphQL::Query.new(config.schema, document: document)
  perform_validation(query)

  raise InvalidDocumentError unless errors.empty?

  user_persister = config.persist_validated_document
  return user_persister.call(document) if user_persister

  raise MissingPersistValidatedDocumentError
rescue GraphQL::ParseError
  raise ParseError
end

Private Instance Methods

config() click to toggle source
# File lib/graphql/persisted_documents/persister.rb, line 38
def config
  PersistedDocuments.configuration
end
perform_validation(query) click to toggle source
# File lib/graphql/persisted_documents/persister.rb, line 32
def perform_validation(query)
  validation_result = validator.validate(query)
  validation_errors = validation_result[:errors] || []
  @errors = validation_errors.map { |error| error["message"] }
end
validator() click to toggle source
# File lib/graphql/persisted_documents/persister.rb, line 42
def validator
  GraphQL::StaticValidation::Validator.new(schema: config.schema)
end