# `SquidMesh.RunStore.Serialization`
[🔗](https://github.com/ccarvalho-eng/squid_mesh/blob/main/lib/squid_mesh/run_store/serialization.ex#L1)

Read-side serialization and hydration helpers for workflow runs.

`SquidMesh.RunStore` remains the public boundary. This module keeps the
translation between persistence records and public structs in one place so
command code can stay focused on lifecycle transitions.

# `list_filter`

```elixir
@type list_filter() ::
  {:workflow, module()}
  | {:status, SquidMesh.Run.status()}
  | {:limit, pos_integer()}
```

# `list_filters`

```elixir
@type list_filters() :: [list_filter()]
```

# `deserialize_map`

```elixir
@spec deserialize_map(map() | nil) :: map() | nil
```

# `deserialize_run_error`

```elixir
@spec deserialize_run_error(SquidMesh.Workflow.Definition.t() | nil, map() | nil) ::
  map() | nil
```

# `deserialize_status`

```elixir
@spec deserialize_status(String.t()) :: SquidMesh.Run.status()
```

# `deserialize_step`

```elixir
@spec deserialize_step(SquidMesh.Workflow.Definition.t() | nil, String.t() | nil) ::
  atom() | String.t() | nil
```

# `deserialize_workflow`

```elixir
@spec deserialize_workflow(String.t()) ::
  {module() | String.t(), SquidMesh.Workflow.Definition.t() | nil}
```

# `maybe_preload_history`

```elixir
@spec maybe_preload_history(Ecto.Queryable.t(), boolean()) :: Ecto.Query.t()
```

# `serialize_filters`

```elixir
@spec serialize_filters(list_filters()) :: keyword()
```

# `serialize_status`

```elixir
@spec serialize_status(SquidMesh.Run.status()) :: String.t()
```

# `to_public_run`

```elixir
@spec to_public_run(SquidMesh.Persistence.Run.t()) :: SquidMesh.Run.t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
