2025-04-16 10:03:13 -03:00

24 lines
679 B
Elixir

defmodule Ecto.Integration.Repo do
defmacro __using__(opts) do
quote do
use Ecto.Repo, unquote(opts)
@query_event __MODULE__
|> Module.split()
|> Enum.map(& &1 |> Macro.underscore() |> String.to_atom())
|> Kernel.++([:query])
def init(_, opts) do
fun = &Ecto.Integration.Repo.handle_event/4
:telemetry.attach_many(__MODULE__, [[:custom], @query_event], fun, :ok)
{:ok, opts}
end
end
end
def handle_event(event, latency, metadata, _config) do
handler = Process.delete(:telemetry) || fn _, _, _ -> :ok end
handler.(event, latency, metadata)
end
end