lib/api/info.ex

defmodule AshGraphql.Api.Info do
  @moduledoc "Introspection helpers for AshGraphql.Api"

  alias Spark.Dsl.Extension

  @doc "Wether or not to run authorization on this api"
  def authorize?(api) do
    Extension.get_opt(api, [:graphql], :authorize?, true)
  end

  @doc "The tracer to use for the given schema"
  def tracer(api) do
    Extension.get_opt(api, [:graphql], :tracer, Application.get_env(:ash, :tracer), true)
  end

  @doc "Wether or not to surface errors to the root of the response"
  def root_level_errors?(api) do
    Extension.get_opt(api, [:graphql], :root_level_errors?, false, true)
  end

  @doc "An error handler for errors produced by api"
  def error_handler(api) do
    Extension.get_opt(
      api,
      [:graphql],
      :error_handler,
      {AshGraphql.DefaultErrorHandler, :handle_error, []},
      true
    )
  end

  @doc "Wether or not to render raised errors in the graphql response"
  def show_raised_errors?(api) do
    Extension.get_opt(api, [:graphql], :show_raised_errors?, false, true)
  end

  @doc "Wether or not to pass debug? down to internal execution"
  def debug?(api) do
    Extension.get_opt(api, [:graphql], :debug?, false)
  end
end