Current section
Files
Jump to
Current section
Files
lib/absinthe/federation/schema/phase/remove_resolve_reference_fields.ex
defmodule Absinthe.Federation.Schema.Phase.RemoveResolveReferenceFields do
@moduledoc false
use Absinthe.Phase
alias Absinthe.Blueprint
def run(%Blueprint{} = blueprint, _) do
blueprint = Blueprint.postwalk(blueprint, &remove_resolve_reference_fields/1)
{:ok, blueprint}
end
@spec remove_resolve_reference_fields(Blueprint.node_t()) :: Blueprint.node_t()
defp remove_resolve_reference_fields(%{fields: fields} = node) when is_list(fields) do
remove_field(node, :_resolve_reference)
end
defp remove_resolve_reference_fields(node), do: node
defp remove_field(%{fields: fields} = node, field) when is_list(fields) and is_atom(field) do
filtered_fields = Enum.reject(fields, &(&1.identifier == field))
%{node | fields: filtered_fields}
end
end