class GraphQL::SchemaComparator::Diff::Interface

Attributes

new_fields[R]
new_iface[R]
old_fields[R]
old_iface[R]

Public Class Methods

new(old_iface, new_iface) click to toggle source
# File lib/graphql/schema_comparator/diff/interface.rb, line 5
def initialize(old_iface, new_iface)
  @old_iface = old_iface
  @new_iface = new_iface

  @old_fields = old_iface.fields
  @new_fields = new_iface.fields
end

Public Instance Methods

diff() click to toggle source
# File lib/graphql/schema_comparator/diff/interface.rb, line 13
def diff
  changes = []
  changes += field_removals
  changes += field_additions

  each_common_field do |old_field, new_field|
    changes += Diff::Field.new(old_iface, new_iface, old_field, new_field).diff
  end

  changes
end

Private Instance Methods

each_common_field(&block) click to toggle source
# File lib/graphql/schema_comparator/diff/interface.rb, line 39
def each_common_field(&block)
  intersection = old_fields.keys & new_fields.keys
  intersection.each do |common_field|
    old_field = old_iface.fields[common_field]
    new_field = new_iface.fields[common_field]

    block.call(old_field, new_field)
  end
end
field_additions() click to toggle source
# File lib/graphql/schema_comparator/diff/interface.rb, line 34
def field_additions
  added = new_fields.values.select { |field| !old_fields[field.name] }
  added.map { |field| Changes::FieldAdded.new(new_iface, field) }
end
field_removals() click to toggle source
# File lib/graphql/schema_comparator/diff/interface.rb, line 29
def field_removals
  removed = old_fields.values.select { |field| !new_fields[field.name] }
  removed.map { |field| Changes::FieldRemoved.new(old_iface, field) }
end