lib/couchx/finders.ex

defmodule Couchx.Finders do
  defmacro __using__(repo: repo, dynamic: is_dynamic) do
    quote location: :keep do
      @repo unquote(repo)
      @is_dynamic unquote(is_dynamic)

      if @is_dynamic do
        def find(id) do
          @repo.run(fn -> @repo.get(__MODULE__, id) end)
        end
      else
        def find(id) do
          @repo.get(__MODULE__, id)
        end
      end
    end
  end
end