defmodule Doorman.ExternalRepo do defmacro __using__(_opts) do repo = Application.get_env(:doorman, Doorman.ExternalRepo)[:repo] if repo do quote do :ets.new(Doorman.Repo, [:set, :public, read_concurrency: true]) defdelegate __adapter__, to: unquote(repo) defdelegate aggregate(a,b,c), to: unquote(repo) defdelegate aggregate(a,b,c,d), to: unquote(repo) defdelegate all(a), to: unquote(repo) defdelegate all(a,b), to: unquote(repo) defdelegate child_spec(a), to: unquote(repo) defdelegate config, to: unquote(repo) defdelegate delete!(a), to: unquote(repo) defdelegate delete!(a,b), to: unquote(repo) defdelegate delete(a), to: unquote(repo) defdelegate delete(a,b), to: unquote(repo) defdelegate delete_all(a), to: unquote(repo) defdelegate delete_all(a,b), to: unquote(repo) defdelegate get!(a,b), to: unquote(repo) defdelegate get!(a,b,c), to: unquote(repo) defdelegate get(a,b), to: unquote(repo) defdelegate get(a,b,c), to: unquote(repo) defdelegate get_by!(a,b), to: unquote(repo) defdelegate get_by!(a,b,c), to: unquote(repo) defdelegate get_by(a,b), to: unquote(repo) defdelegate get_by(a,b,c), to: unquote(repo) defdelegate in_transaction?, to: unquote(repo) defdelegate init(a,b), to: unquote(repo) defdelegate insert!(a), to: unquote(repo) defdelegate insert!(a,b), to: unquote(repo) defdelegate insert(a), to: unquote(repo) defdelegate insert(a,b), to: unquote(repo) defdelegate insert_all(a,b), to: unquote(repo) defdelegate insert_all(a,b,c), to: unquote(repo) defdelegate insert_or_update!(a), to: unquote(repo) defdelegate insert_or_update!(a,b), to: unquote(repo) defdelegate insert_or_update(a), to: unquote(repo) defdelegate insert_or_update(a,b), to: unquote(repo) defdelegate load(a,b), to: unquote(repo) defdelegate one!(a), to: unquote(repo) defdelegate one!(a,b), to: unquote(repo) defdelegate one(a), to: unquote(repo) defdelegate one(a,b), to: unquote(repo) defdelegate paginate(a), to: unquote(repo) defdelegate paginate(a,b), to: unquote(repo) defdelegate paginate(a,b,c), to: unquote(repo) defdelegate preload(a,b), to: unquote(repo) defdelegate preload(a,b,c), to: unquote(repo) defdelegate query!(a), to: unquote(repo) defdelegate query!(a,b), to: unquote(repo) defdelegate query!(a,b,c), to: unquote(repo) defdelegate query(a), to: unquote(repo) defdelegate query(a,b), to: unquote(repo) defdelegate query(a,b,c), to: unquote(repo) defdelegate rollback(a), to: unquote(repo) defdelegate start_link, to: unquote(repo) defdelegate start_link(a), to: unquote(repo) defdelegate stop(a), to: unquote(repo) defdelegate stop(a,b), to: unquote(repo) defdelegate stream(a), to: unquote(repo) defdelegate stream(a,b), to: unquote(repo) defdelegate to_sql(a,b), to: unquote(repo) defdelegate transaction(a), to: unquote(repo) defdelegate transaction(a,b), to: unquote(repo) defdelegate update!(a), to: unquote(repo) defdelegate update!(a,b), to: unquote(repo) defdelegate update(a), to: unquote(repo) defdelegate update(a,b), to: unquote(repo) defdelegate update_all(a,b), to: unquote(repo) defdelegate update_all(a,b,c), to: unquote(repo) end end end end