Snodo.Extensions.Tasks.Event (snodo_tasks v0.2.0)

Copy Markdown View Source

A validated, versioned state-transition intent for a protocol Task.

Events contain data only. They can cross a process, database, or remote-store boundary without asking the store to execute application closures. Event IDs are stable across compare-and-set retries; idempotency remains the store's responsibility.

Summary

Functions

Decodes and validates a persistence map produced by to_map/1.

Requests the next persisted retry delay or terminal failure on exhaustion.

Encodes an event as a stable JSON-safe persistence map.

Validates an event constructed locally or by an adapter.

Types

kind()

@type kind() ::
  :input_requested
  | :input_responses_accepted
  | :retry_requested
  | :completed
  | :failed
  | :cancelled

t()

@type t() :: %Snodo.Extensions.Tasks.Event{
  data: map(),
  id: String.t(),
  kind: kind(),
  version: pos_integer()
}

Functions

cancelled(opts \\ [])

@spec cancelled(keyword()) :: {:ok, t()} | {:error, term()}

completed(result, opts \\ [])

@spec completed(map(), keyword()) :: {:ok, t()} | {:error, term()}

failed(error, status_message, opts \\ [])

@spec failed(map(), String.t() | nil, keyword()) :: {:ok, t()} | {:error, term()}

from_map(encoded)

@spec from_map(term()) :: {:ok, t()} | {:error, term()}

Decodes and validates a persistence map produced by to_map/1.

generate_id()

@spec generate_id() :: String.t()

input_requested(key, request, opts \\ [])

@spec input_requested(String.t(), map(), keyword()) :: {:ok, t()} | {:error, term()}

input_responses_accepted(responses, opts \\ [])

@spec input_responses_accepted(map(), keyword()) :: {:ok, t()} | {:error, term()}

retry_requested(error, status_message, opts \\ [])

@spec retry_requested(map(), String.t() | nil, keyword()) ::
  {:ok, t()} | {:error, term()}

Requests the next persisted retry delay or terminal failure on exhaustion.

to_map(event)

@spec to_map(t()) :: map()

Encodes an event as a stable JSON-safe persistence map.

validate(event)

@spec validate(t()) :: :ok | {:error, term()}

Validates an event constructed locally or by an adapter.