lib/algoliax/exceptions.ex

defmodule Algoliax.InvalidApiKeyParamsError do
  @moduledoc "Raise when trying to generate a secured api key with invalid params"

  defexception [:message]
end

defmodule Algoliax.MissingRepoError do
  @moduledoc "Raise when trying to use ecto specific functions without defining a repo"

  defexception [:message]

  @impl true
  def exception(index_name) do
    %__MODULE__{message: "No repo configured for index #{index_name}"}
  end
end

defmodule Algoliax.MissingIndexNameError do
  @moduledoc "Raise when trying to use algoliax without defining an index name"

  defexception [:message]

  @impl true
  def exception(_) do
    %__MODULE__{message: "No index_name configured"}
  end
end

defmodule Algoliax.AlgoliaApiError do
  @moduledoc "Raise Algolia API error"

  defexception [:message]

  @impl true
  def exception(%{code: code, error: error}) do
    message = """
    Algolia HTTP error:

    #{code} : #{error}
    """

    %__MODULE__{message: message}
  end
end