internal IEnumerable <Change> Diff()
        {
            List <Change> changes = new List <Change>();

            //TODO:

            /*
             * if old_field.description != new_field.description
             * changes << Changes::FieldDescriptionChanged.new(new_type, old_field, new_field)
             * end*/

            if (oldField.DeprecationReason != newField.DeprecationReason)
            {
                changes.Add(new FieldDeprecationChanged(newType, oldField, newField));
            }

            if (oldField.ResolvedType.Name != newField.ResolvedType.Name)
            {
                changes.Add(new FieldTypeChanged(oldType, oldField, newField));
            }

            changes.AddRange(DiffTools.RemovedElements(oldArguments, newArguments, a => new FieldArgumentRemoved(newType, oldField, a)));
            changes.AddRange(DiffTools.AddedElements(oldArguments, newArguments, a => new FieldArgumentAdded(newType, newField, a)));

            foreach (var newArg in this.newArguments)
            {
                QueryArgument oldArg = oldArguments.SingleOrDefault(t => t.Name.Equals(newArg.Name));
                if (oldArg != null)
                {
                    changes.AddRange(new Diff.Argument(newType, newField, oldArg, newArg).Diff());
                }
            }

            return(changes);
        }
Example #2
0
        internal IEnumerable <Change> Diff()
        {
            List <Change> changes = new List <Change>();

            changes.AddRange(DiffTools.RemovedElements(oldFields, newFields, delegate(IFieldType t) { return(new InputFieldRemoved(this.oldType, t)); }));
            changes.AddRange(DiffTools.AddedElements(oldFields, newFields, delegate(IFieldType t) { return(new InputFieldAdded(this.newType, t)); }));


            foreach (var newField in this.newFields)
            {
                var oldField = this.oldFields.Where(t => t.Name.Equals(newField.Name)).SingleOrDefault();
                if (oldField != null)
                {
                    changes.AddRange(new Diff.InputField(oldType, newType, oldField, newField).Diff());
                }
            }


            return(changes);
        }
        internal List <Change> Diff()
        {
            List <Change> changes = new List <Change>();

            //TODO struggling with the types here
            //changes.AddRange(InterfaceAdditions());
            //changes.AddRange(InterfaceRemovals());

            changes.AddRange(DiffTools.RemovedElements(oldfields, newfields, delegate(IFieldType t) { return(new FieldRemoved(oldType, t)); }));
            changes.AddRange(DiffTools.AddedElements(oldfields, newfields, delegate(IFieldType t) { return(new FieldAdded(newType, t)); }));

            foreach (var newField in this.newfields)
            {
                var oldField = this.oldfields.Where(t => t.Name.Equals(newField.Name)).SingleOrDefault();
                if (oldField != null)
                {
                    changes.AddRange(new Diff.Field(oldType, newType, oldField, newField).Diff());
                }
            }

            return(changes);
        }