Hephaestus.Runtime.Storage behaviour (hephaestus v0.3.1)

Copy Markdown View Source

Persistence adapter contract for workflow instances.

Summary

Callbacks

Deletes a workflow instance by its unique identifier.

Retrieves a workflow instance by its unique identifier.

Persists a workflow instance.

Returns all workflow instances that match the given filters.

Callbacks

delete(instance_id)

@callback delete(instance_id :: String.t()) :: :ok

Deletes a workflow instance by its unique identifier.

The operation is idempotent — deleting a non-existent instance is not an error.

get(instance_id)

@callback get(instance_id :: String.t()) ::
  {:ok, Hephaestus.Core.Instance.t()} | {:error, :not_found}

Retrieves a workflow instance by its unique identifier.

Returns {:ok, instance} if found, or {:error, :not_found} if no instance matches the given instance_id.

put(instance)

@callback put(instance :: Hephaestus.Core.Instance.t()) :: :ok

Persists a workflow instance.

Inserts the instance if it does not exist, or overwrites it if an instance with the same ID is already stored.

query(filters)

@callback query(filters :: keyword()) :: [Hephaestus.Core.Instance.t()]

Returns all workflow instances that match the given filters.

filters is a keyword list where each key corresponds to an instance field (e.g., :status, :workflow). Only instances matching all provided filters are returned. An empty filter list returns all stored instances.