lib/ash/query/function/exists.ex

defmodule Ash.Query.Exists do
  @moduledoc """
  Determines if a given related entity exists.
  """

  defstruct [:path, :expr]

  def new([], expr) do
    raise "Cannot construct an exists query with an empty path, at #{inspect(%__MODULE__{path: [], expr: expr})}"
  end

  def new(path, expr) do
    %__MODULE__{path: path, expr: expr}
  end

  defimpl Inspect do
    import Inspect.Algebra

    def inspect(%{path: path, expr: expr}, opts) do
      concat(["exists(", Enum.join(path, "."), ", ", to_doc(expr, opts), ")"])
    end
  end
end