defmodule Absinthe.Relay.Node.ParseIDs.Rule do alias Absinthe.Relay.Node.ParseIDs @enforce_keys [:key] defstruct [ :key, expected_types: [], output_mode: :full, schema: nil ] @type t :: %__MODULE__{ key: atom, expected_types: [atom], output_mode: :full | :simple } @spec output(t, nil) :: nil @spec output(t, ParseIDs.result()) :: ParseIDs.full_result() | ParseIDs.simple_result() def output(_rule, nil), do: nil def output(%{output_mode: :full}, result), do: result def output(%{output_mode: :simple}, %{id: id}), do: id end