View Source Electric.Config (electric v1.0.0-beta.15)

Summary

Functions

@spec fetch_env!(Application.key()) :: Application.value()
@spec get_env(Application.key()) :: Application.value()
Link to this function

parse_human_readable_time(str)

View Source
@spec parse_human_readable_time(binary() | nil) ::
  {:ok, pos_integer()} | {:error, binary()}
Link to this function

parse_human_readable_time!(str)

View Source
@spec parse_log_level(binary()) :: {:ok, Logger.level()} | {:error, binary()}
Link to this function

parse_postgresql_uri(uri_str)

View Source
@spec parse_postgresql_uri(binary()) :: {:ok, keyword()} | {:error, binary()}

Parse a PostgreSQL URI into a keyword list.

Examples

iex> parse_postgresql_uri("postgresql://postgres:password@example.com/app-db")
{:ok, [
  hostname: "example.com",
  port: 5432,
  database: "app-db",
  username: "postgres",
  password: "password",
]}

iex> parse_postgresql_uri("postgresql://electric@192.168.111.33:81/__shadow")
{:ok, [
  hostname: "192.168.111.33",
  port: 81,
  database: "__shadow",
  username: "electric"
]}

iex> parse_postgresql_uri("postgresql://pg@[2001:db8::1234]:4321")
{:ok, [
  hostname: "2001:db8::1234",
  port: 4321,
  database: "pg",
  username: "pg"
]}

iex> parse_postgresql_uri("postgresql://user@localhost:5433/")
{:ok, [
  hostname: "localhost",
  port: 5433,
  database: "user",
  username: "user"
]}

iex> parse_postgresql_uri("postgresql://user%2Btesting%40gmail.com:weird%2Fpassword@localhost:5433/my%2Bdb%2Bname")
{:ok, [
  hostname: "localhost",
  port: 5433,
  database: "my+db+name",
  username: "user+testing@gmail.com",
  password: "weird/password"
]}

iex> parse_postgresql_uri("postgres://super_user@localhost:7801/postgres?sslmode=disable")
{:ok, [
  hostname: "localhost",
  port: 7801,
  database: "postgres",
  username: "super_user",
  sslmode: :disable
]}

iex> parse_postgresql_uri("postgres://super_user@localhost:7801/postgres?sslmode=require")
{:ok, [
  hostname: "localhost",
  port: 7801,
  database: "postgres",
  username: "super_user",
  sslmode: :require
]}

iex> parse_postgresql_uri("postgres://super_user@localhost:7801/postgres?sslmode=yesplease")
{:error, "invalid \"sslmode\" value: \"yesplease\""}

iex> parse_postgresql_uri("postgrex://localhost")
{:error, "invalid URL scheme: \"postgrex\""}

iex> parse_postgresql_uri("postgresql://localhost")
{:error, "invalid or missing username"}

iex> parse_postgresql_uri("postgresql://:@localhost")
{:error, "invalid or missing username"}

iex> parse_postgresql_uri("postgresql://:password@localhost")
{:error, "invalid or missing username"}

iex> parse_postgresql_uri("postgresql://user:password")
{:error, "invalid or missing username"}

iex> parse_postgresql_uri("postgresql://user:password@")
{:error, "missing host"}

iex> parse_postgresql_uri("postgresql://user@localhost:5433/mydb?opts=-c%20synchronous_commit%3Doff&foo=bar")
{:error, "unsupported query options: \"foo\", \"opts\""}

iex> parse_postgresql_uri("postgresql://electric@localhost/db?replication=database")
{:error, "unsupported \"replication\" query option. Electric opens both a replication connection and regular connections to Postgres as needed"}

iex> parse_postgresql_uri("postgresql://electric@localhost/db?replication=off")
{:error, "unsupported \"replication\" query option. Electric opens both a replication connection and regular connections to Postgres as needed"}
Link to this function

parse_postgresql_uri!(uri_str)

View Source
Link to this function

parse_telemetry_url(str)

View Source
@spec parse_telemetry_url(binary()) :: {:ok, binary()} | {:error, binary()}
Link to this function

parse_telemetry_url!(str)

View Source
Link to this function

telemetry_export_enabled?()

View Source

True when at least one metric exporter is enabled.

This function is used to skip starting the Electric.Telemetry supervisor when there's no need to capture periodic measurements. Useful in the dev and test environments.