lib/changeset.ex

defmodule Solicit.Changeset do
  @moduledoc """
  Generic functions for working with changesets that are not packaged with Ecto.
  """

  @doc """
  A module encapsulating the translation layer between a changeset error and the JSON error shape returned in an API response.
  """
  @spec code_and_description(tuple()) :: tuple()
  def code_and_description({description, [error_code: error_code]}),
    do: {error_code, description}

  def code_and_description({description, [validation: error_code]}),
    do: {error_code, description}

  def code_and_description({changeset_error, _}), do: {:unknown_error, changeset_error}
end