Electric.Postgres.Configuration (electric v1.2.4)

View Source

Module for functions that configure Postgres in some way using a provided connection.

Summary

Types

publication_status()

@type publication_status() :: %{
  can_alter_publication?: boolean(),
  publishes_all_operations?: boolean(),
  publishes_generated_columns?: boolean()
}

relation_actions()

@type relation_actions() :: %{
  to_preserve: relation_filters(),
  to_add: relation_filters(),
  to_drop: relation_filters(),
  to_configure_replica_identity: relation_filters(),
  to_invalidate: relation_filters()
}

relation_filters()

Functions

add_table_to_publication(conn, publication_name, oid_relation, timeout \\ 5000)

@spec add_table_to_publication(
  Postgrex.conn(),
  String.t(),
  Electric.oid_relation(),
  timeout()
) ::
  :ok | {:error, term()}

check_publication_status!(conn, publication_name)

@spec check_publication_status!(Postgrex.conn(), String.t()) ::
  publication_status() | :not_found

Check whether the publication with the given name exists, and return its status.

The status includes whether the publication is owned, whether it publishes all operations, and whether it publishes generated columns (if supported by the Postgres version).

configure_table_for_replication(conn, publication_name, oid_relation, timeout \\ 5000)

@spec configure_table_for_replication(
  Postgrex.conn(),
  String.t(),
  Electric.oid_relation(),
  timeout()
) :: :ok | {:error, term()}

determine_publication_relation_actions!(conn, publication_name, expected_rels)

@spec determine_publication_relation_actions!(
  Postgrex.conn(),
  String.t(),
  relation_filters()
) ::
  relation_actions()

drop_table_from_publication(conn, publication_name, oid_relation, timeout \\ 5000)

@spec drop_table_from_publication(
  Postgrex.conn(),
  String.t(),
  Electric.oid_relation(),
  timeout()
) :: :ok | {:error, term()}

get_publication_tables!(conn, publication)

@spec get_publication_tables!(Postgrex.conn(), String.t()) :: [
  relation_with_replica()
]

run_handling_db_connection_errors(fun)

set_table_replica_identity_full(conn, oid_relation, timeout \\ 5000)

@spec set_table_replica_identity_full(
  Postgrex.conn(),
  Electric.oid_relation(),
  timeout()
) ::
  :ok | {:error, term()}