24 lines
		
	
	
		
			679 B
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			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
 |