|
The following code could be written much better by using the cond operator. with {:is_email, true} <- {:is_email, is_email_address?(email)},
{:is_available, true} <- {:is_available, EmailAddresses.is_available(email)} do
...
else
{:is_email, false} ->
{:error, :bad_request}
{:is_available, false} ->
{:error, :conflict}
end
cond do
!email_address?(email) -> {:error, :bad_request}
!EmailAddresses.available?(email) -> {:error, :conflict}
true -> {:ok, email}
end
This gets rid of unnecessary duplication, and I think is easier to understand. |