# `AttestoPhoenix.Store.ETSOwner`
[🔗](https://github.com/XukuLLC/attesto_phoenix/blob/v2.13.0/lib/attesto_phoenix/store/ets_owner.ex#L1)

Lazily creates and owns the library's named ETS tables.

The owner is intentionally started without a link to its first caller. A
request process must not be able to take down the owner and discard a table
shared by all callers on the node.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `ensure`

```elixir
@spec ensure(atom(), [term()]) :: atom()
```

Ensures that the named `table` exists with the caller-supplied `options`.

Table creation runs in this singleton owner, so concurrent callers are
serialized before `:ets.new/2`. The options remain with each store because
they are part of that store's table contract.

---

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