Current section

Files

Jump to
opentelemetry_absinthe lib telemetry_metadata.ex
Raw

lib/telemetry_metadata.ex

defmodule OpentelemetryAbsinthe.TelemetryMetadata do
@moduledoc """
A helper module to allow integrators to add custom data to their context
which will then be added to the [:opentelemetry_absinthe, :graphql, :handled]
event
"""
@key __MODULE__
@type absinthe_context :: map()
@type telemetry_metadata :: %{
optional(atom()) => any()
}
@spec update_context(absinthe_context(), telemetry_metadata()) :: absinthe_context()
def update_context(%{} = context, %{} = metadata),
do: Map.update(context, @key, metadata, &Map.merge(&1, metadata))
@spec from_context(absinthe_context()) :: telemetry_metadata()
def from_context(%{} = context), do: Map.get(context, @key, %{})
end