1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
# frozen_string_literal: true
module GraphQL
module StaticValidation
class FieldsWillMergeError < StaticValidation::Error
attr_reader :field_name
attr_reader :kind
def initialize(kind:, field_name:)
super(nil)
@field_name = field_name
@kind = kind
@conflicts = []
end
def message
"Field '#{field_name}' has #{kind == :argument ? 'an' : 'a'} #{kind} conflict: #{conflicts}?"
end
def path
[]
end
def conflicts
@conflicts.join(' or ')
end
def add_conflict(node, conflict_str)
return if nodes.include?(node)
@nodes << node
@conflicts << conflict_str
end
# A hash representation of this Message
def to_h
extensions = {
"code" => code,
"fieldName" => field_name,
"conflicts" => conflicts
}
super.merge({
"extensions" => extensions
})
end
def code
"fieldConflict"
end
end
end
end
|