# `Ash.Resource.ManualRead`
[🔗](https://github.com/ash-project/ash/blob/v3.23.1/lib/ash/resource/manual_actions/manual_read.ex#L5)

A module to implement manual read actions.

# `context`

```elixir
@type context() :: %{
  optional(:actor) =&gt; term(),
  optional(:tenant) =&gt; term(),
  optional(:authorize?) =&gt; boolean(),
  optional(:domain) =&gt; module(),
  optional(any()) =&gt; any()
}
```

# `extra_info`

```elixir
@type extra_info() :: %{optional(:full_count) =&gt; non_neg_integer()}
```

# `load_relationships`
*optional* 

```elixir
@callback load_relationships(
  query :: Ash.Query.t(),
  results :: [Ash.Resource.record()],
  opts :: Keyword.t(),
  context :: context(),
  lazy? :: boolean()
) ::
  {:ok, [Ash.Resource.record()]}
  | {:ok, [Ash.Resource.record()], extra_info()}
  | {:error, term()}
```

# `read`

```elixir
@callback read(
  query :: Ash.Query.t(),
  data_layer_query :: term(),
  opts :: Keyword.t(),
  context :: context()
) ::
  {:ok, [Ash.Resource.record()]}
  | {:ok, [Ash.Resource.record()], extra_info()}
  | {:error, term()}
```

---

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