if Code.ensure_loaded?(Ecto) do
defmodule Doumi.Test.Ecto do
def reload(record, opts \\ []) do
{repo, opts} = opts |> Keyword.pop(:repo, Application.get_env(:doumi_test, :default_repo))
if repo == nil do
raise ArgumentError, "No repo found in opts or application env"
end
clauses =
record.__struct__.__schema__(:primary_key)
|> Enum.map(fn primary_key ->
{primary_key, Map.get(record, primary_key)}
end)
repo.get_by(record.__struct__, clauses, opts)
end
def reload!(record, opts \\ []) do
case reload(record, opts) do
nil -> raise ArgumentError, "Could not find #{inspect(record)} in the database"
value -> value
end
end
end
end