Current section

Files

Jump to
new_relic_agent lib new_relic telemetry ecto supervisor.ex
Raw

lib/new_relic/telemetry/ecto/supervisor.ex

defmodule NewRelic.Telemetry.Ecto.Supervisor do
@moduledoc false
use DynamicSupervisor
@ecto_repo_init [:ecto, :repo, :init]
def start_link(_) do
DynamicSupervisor.start_link(__MODULE__, :ok, name: __MODULE__)
end
def init(:ok) do
:telemetry.attach(
{:new_relic_ecto, :supervisor},
@ecto_repo_init,
&__MODULE__.handle_event/4,
%{}
)
DynamicSupervisor.init(strategy: :one_for_one)
end
def handle_event(@ecto_repo_init, _, %{repo: repo, opts: opts}, _) do
NewRelic.log(:info, "Detected Ecto Repo `#{inspect(repo)}`")
DynamicSupervisor.start_child(
__MODULE__,
{NewRelic.Telemetry.Ecto, [repo: repo, opts: opts]}
)
end
end