Current section

Files

Jump to
ex_teal lib ex_teal resource repo.ex
Raw

lib/ex_teal/resource/repo.ex

defmodule ExTeal.Resource.Repo do
@doc """
Defines the module `use`-ing `Ecto.Repo` to be used by the resource.
Defaults to the value set in config if present:
config :ex_teal,
repo: MyApp.Repo
Default can be overridden per resource:
def repo, do: MyApp.SecondaryRepo
"""
@callback repo() :: module
defmacro __using__(_opts) do
quote do
unless ExTeal.Resource.Repo in @behaviour do
@behaviour ExTeal.Resource.Repo
unquote(default_repo())
end
end
end
@doc false
def default_repo do
quote do
def repo, do: Application.fetch_env!(:ex_teal, :repo)
defoverridable repo: 0
end
end
end