View Source Electric.ConfigParser (electric v0.9.5)

Summary

Functions

@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