# `Jido.Character.Persistence.Adapter`
[🔗](https://github.com/agentjido/jido_character/blob/v1.0.0/lib/jido_character/persistence/adapter.ex#L1)

Behaviour for character persistence adapters.

Adapters provide storage capabilities for characters. The default
Memory adapter uses ETS for simple, in-memory storage.

## Implementing an Adapter

Implement the three callbacks: `save/2`, `get/2`, and `delete/2`.
Each receives a `Definition` struct and the character/id.

# `delete`

```elixir
@callback delete(Jido.Character.Definition.t(), String.t()) :: :ok | {:error, term()}
```

Delete a character by id. Returns :ok or {:error, reason}.

# `get`

```elixir
@callback get(Jido.Character.Definition.t(), String.t()) ::
  {:ok, map()} | {:error, :not_found | term()}
```

Get a character by id. Returns {:ok, character} or {:error, :not_found}.

# `save`

```elixir
@callback save(Jido.Character.Definition.t(), map()) :: {:ok, map()} | {:error, term()}
```

Save a character. Returns {:ok, character} or {:error, reason}.

---

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