# `AshCache.CachedRead`
[🔗](https://github.com/Undeadlol1/ash_cache/blob/v0.1.0/lib/ash_cache/cached_read.ex#L1)

One cached read action and its own settings: how long its entries live,
whether empty results are kept, and what is passed to the store adapter.

# `t`

```elixir
@type t() :: %AshCache.CachedRead{
  __spark_metadata__: Spark.Dsl.Entity.spark_meta(),
  cache_empty?: boolean(),
  name: atom(),
  store_options: keyword(),
  ttl: pos_integer() | :infinity | nil
}
```

# `ttl`

```elixir
@spec ttl(
  t() | AshCache.CachedAction.t() | AshCache.CachedCalculation.t(),
  pos_integer() | :infinity
) ::
  pos_integer() | :infinity
```

The ttl a cached read, generic action or calculation actually uses: its own, else the
block's.

---

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