Skip to main content

lib/scoria/sre/audit_sink.ex

defmodule Scoria.SRE.AuditSink do
  @moduledoc """
  Behavior for optional audit export sinks.

  Sinks receive redacted envelope maps instead of internal structs so core Scoria
  stays decoupled from downstream relay libraries.
  """

  @type envelope :: map()
  @type result :: {:ok, map()} | {:error, term()}

  @callback publish(envelope()) :: result()

  defmodule Noop do
    @moduledoc false

    @behaviour Scoria.SRE.AuditSink

    @impl true
    def publish(envelope), do: {:ok, %{status: :noop, envelope: envelope}}
  end
end