lib/ash/query/ref.ex

defmodule Ash.Query.Ref do
  @moduledoc "Represents a relation/attribute reference"
  defstruct [:attribute, :relationship_path, :resource, :simple_equality?]

  defimpl Inspect do
    def inspect(ref, _opts) do
      case ref.attribute do
        %Ash.Query.Calculation{} ->
          inspect(%Ash.Query.Call{
            name: ref.attribute.name,
            relationship_path: ref.relationship_path,
            args: [Map.delete(ref.attribute.context, :context)]
          })

        _ ->
          name =
            case ref.attribute do
              %{name: name} -> name
              name -> name
            end

          case ref.relationship_path do
            [] -> "#{name}"
            path -> Enum.join(path, ".") <> "." <> "#{name}"
          end
      end
    end
  end
end