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

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, "has invalid \"sslmode\" value: \"yesplease\""}

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

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

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

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

iex> parse_postgresql_uri("postgresql://user:password")
{:error, "has 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, "has unsupported query options: \"foo\", \"opts\""}

iex> parse_postgresql_uri("postgresql://electric@localhost/db?replication=database")
{:error, "has 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, "has 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.