# `Electric.Replication.PublicationManager.Configurator`
[🔗](https://github.com/electric-sql/electric/tree/%40core/sync-service%401.6.2/packages/sync-service/lib/electric/replication/publication_manager/configurator.ex#L1)

Configures and maintains a PostgreSQL publication on behalf of
Electric.Replication.PublicationManager.RelationTracker.

It receives requests to update the publication such that a given
set of relations are published with REPLICA IDENTITY FULL, and
performs the necessary SQL commands to ensure that the publication
matches the requested set of relations.

Each relation is updated individually to avoid blocking all other
operations on the publication due to locks held on individual tables.

# `state`

```elixir
@type state() :: %Electric.Replication.PublicationManager.Configurator{
  can_alter_publication?: boolean(),
  db_pool: term(),
  manual_table_publishing?: boolean(),
  publication_name: String.t(),
  scheduled_filters:
    Electric.Replication.PublicationManager.RelationTracker.relation_filters()
    | nil,
  scheduled_update_ref: nil | reference(),
  stack_id: Electric.stack_id(),
  update_debounce_timeout: timeout()
}
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `configure_publication`

# `name`

# `start_link`

---

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