# `DripDrop.AdapterPools`
[🔗](https://github.com/agoodway/dripdrop/blob/v0.1.0/lib/dripdrop/adapter_pools.ex#L1)

Context for authoring outbound adapter pools and memberships.

# `tenant_filters`

```elixir
@type tenant_filters() :: %{tenant_key: binary() | nil}
```

# `add_pool_member`

```elixir
@spec add_pool_member(Ecto.Schema.t() | Ecto.UUID.t(), map()) ::
  {:ok, Ecto.Schema.t()} | {:error, Ecto.Changeset.t()}
```

Adds a channel adapter to a pool.

# `create_adapter_pool`

```elixir
@spec create_adapter_pool(map()) ::
  {:ok, Ecto.Schema.t()} | {:error, Ecto.Changeset.t()}
```

Creates an adapter pool in an explicit tenant scope.

# `delete_adapter_pool`

```elixir
@spec delete_adapter_pool(Ecto.Schema.t() | Ecto.UUID.t(), map() | keyword()) ::
  {:ok, Ecto.Schema.t()} | {:error, map()}
```

Deletes an adapter pool unless active outbound enrollments still use it.

# `list_adapter_pools`

```elixir
@spec list_adapter_pools(tenant_filters()) :: [Ecto.Schema.t()]
```

Lists adapter pools in an explicit tenant scope.

# `list_pool_members`

```elixir
@spec list_pool_members(Ecto.Schema.t() | Ecto.UUID.t() | map()) :: [Ecto.Schema.t()]
```

Lists members for a pool in an explicit tenant scope.

# `remove_pool_member`

```elixir
@spec remove_pool_member(Ecto.Schema.t() | Ecto.UUID.t(), Ecto.UUID.t() | map()) ::
  {:ok, Ecto.Schema.t()} | {:error, :not_found}
```

Removes one adapter from a pool without mutating existing enrollment pins.

# `update_adapter_pool`

```elixir
@spec update_adapter_pool(Ecto.Schema.t() | Ecto.UUID.t(), map()) ::
  {:ok, Ecto.Schema.t()} | {:error, Ecto.Changeset.t()}
```

Updates an adapter pool after verifying the caller's tenant scope.

---

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