Sha256: 8a531bb282917a40a36ccca501eb71dd600b0a22c08fab010180614859ffd000

Contents?: true

Size: 1.39 KB

Versions: 100

Compression:

Stored size: 1.39 KB

Contents

# frozen_string_literal: true
module GraphQL
  class Query
    class InputValidationResult
      attr_accessor :problems

      def self.from_problem(explanation, path = nil, extensions: nil, message: nil)
        result = self.new
        result.add_problem(explanation, path, extensions: extensions, message: message)
        result
      end

      def initialize(valid: true, problems: nil)
        @valid = valid
        @problems = problems
      end

      def valid?
        @valid
      end

      def add_problem(explanation, path = nil, extensions: nil, message: nil)
        @problems ||= []
        @valid = false
        problem = { "path" => path || [], "explanation" => explanation }
        if extensions
          problem["extensions"] = extensions
        end
        if message
          problem["message"] = message
        end
        @problems.push(problem)
      end

      def merge_result!(path, inner_result)
        return if inner_result.nil? || inner_result.valid?

        if inner_result.problems
          inner_result.problems.each do |p|
            item_path = [path, *p["path"]]
            add_problem(p["explanation"], item_path, message: p["message"], extensions: p["extensions"])
          end
        end
        # It could have been explicitly set on inner_result (if it had no problems)
        @valid = false
      end

      VALID = self.new
      VALID.freeze
    end
  end
end

Version data entries

100 entries across 100 versions & 1 rubygems

Version Path
graphql-2.3.22 lib/graphql/query/input_validation_result.rb
graphql-2.1.15 lib/graphql/query/input_validation_result.rb
graphql-2.0.32 lib/graphql/query/input_validation_result.rb
graphql-2.1.14 lib/graphql/query/input_validation_result.rb
graphql-2.2.17 lib/graphql/query/input_validation_result.rb
graphql-2.3.21 lib/graphql/query/input_validation_result.rb
graphql-2.4.13 lib/graphql/query/input_validation_result.rb
graphql-2.4.12 lib/graphql/query/input_validation_result.rb
graphql-2.4.11 lib/graphql/query/input_validation_result.rb
graphql-2.4.10 lib/graphql/query/input_validation_result.rb
graphql-2.4.9 lib/graphql/query/input_validation_result.rb
graphql-2.4.8 lib/graphql/query/input_validation_result.rb
graphql-2.4.7 lib/graphql/query/input_validation_result.rb
graphql-2.4.6 lib/graphql/query/input_validation_result.rb
graphql-2.4.5 lib/graphql/query/input_validation_result.rb
graphql-2.4.4 lib/graphql/query/input_validation_result.rb
graphql-2.4.3 lib/graphql/query/input_validation_result.rb
graphql-2.4.2 lib/graphql/query/input_validation_result.rb
graphql-2.4.1 lib/graphql/query/input_validation_result.rb
graphql-2.4.0 lib/graphql/query/input_validation_result.rb