lib/exshome/repo.ex

defmodule Exshome.Repo do
  use Ecto.Repo,
    otp_app: :exshome,
    adapter: Ecto.Adapters.SQLite3

  @hook_module Application.compile_env(:exshome, :repo_hook_module)
  if @hook_module do
    defoverridable(get_dynamic_repo: 0, put_dynamic_repo: 1)

    def get_dynamic_repo do
      if @hook_module.tests_started?(), do: @hook_module.get_dynamic_repo(), else: super()
    end

    def put_dynamic_repo(repo) do
      if @hook_module.tests_started?(), do: @hook_module.put_dynamic_repo(repo), else: super(repo)
    end
  end
end