Sha256: 3605a764479a5a10b0580facb904098de422aca0ae850fb489c079536c41c673

Contents?: true

Size: 1.37 KB

Versions: 8

Compression:

Stored size: 1.37 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.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

8 entries across 8 versions & 1 rubygems

Version Path
graphql-1.13.23 lib/graphql/query/input_validation_result.rb
graphql-1.13.22 lib/graphql/query/input_validation_result.rb
graphql-1.13.21 lib/graphql/query/input_validation_result.rb
graphql-1.13.20 lib/graphql/query/input_validation_result.rb
graphql-1.13.19 lib/graphql/query/input_validation_result.rb
graphql-1.13.18 lib/graphql/query/input_validation_result.rb
graphql-1.13.17 lib/graphql/query/input_validation_result.rb
graphql-1.13.16 lib/graphql/query/input_validation_result.rb