TemporalEx.DataConverter behaviour (temporal_ex v0.2.1)

Copy Markdown

Behaviour for encoding/decoding Elixir terms to/from Temporal payloads.

The data converter is responsible for serializing workflow arguments, results, and other data that flows through Temporal. Implementations must handle arbitrary Elixir terms and produce binary data with encoding metadata.

The default implementation is TemporalEx.DataConverter.Json.

Summary

Callbacks

Decodes binary data back into an Elixir term.

Encodes an Elixir term into a binary with metadata.

Returns the encoding identifier (e.g., "json/plain").

Types

encoding()

@type encoding() :: String.t()

metadata()

@type metadata() :: %{required(String.t()) => String.t()}

Callbacks

decode(binary, metadata)

@callback decode(binary(), metadata()) :: {:ok, term()} | {:error, term()}

Decodes binary data back into an Elixir term.

The metadata map provides encoding hints (e.g., %{"encoding" => "json/plain"}).

encode(term)

@callback encode(term()) :: {:ok, {binary(), metadata()}} | {:error, term()}

Encodes an Elixir term into a binary with metadata.

Returns {:ok, {binary_data, metadata_map}} or {:error, reason}.

encoding()

@callback encoding() :: encoding()

Returns the encoding identifier (e.g., "json/plain").