PostgresqlUri
Simple Elixir module to parse PostgreSQL connection URIs of the form:
postgresql://[user[:password]@][netloc][:port][,...][/dbname][?param1=value1&...]
returning a keyword list ready for use with Postgrex.start_link/1
, making connecting to
a database as simple as:
Postgrex.start_link(
PostgresqlUri.parse(
"postgresql://user:pass@host/somedatabase"
)
)
For more information and examples, refer to the module documentation on hexdocs.pm.
The URI format largely follows the PostgreSQL URI description, with parameter keyword interpretation mostly following the PostgreSQL libpq parameter keywords listing.
Using this module to handle a single connection URI variable instead of separate host, port, username, databasename, password, ... variables makes runtime configuration a quite a bit tidier, especially if one needs to read these in (with runtime.exs
) from separately set environment variables, in turn separately set in a systemd environment file, in turn templated out through some configuration management system.
As a bonus, for quotidian configurations, these URIs can be used verbatim with psql
to quickly test a DB connection.
Versioning
While it is unlikely that for mundane parameters interpretation will radically change from version to version, be aware that non-point releases might change parsing outcomes from version to version. Hard-pin this package if it currently parses your URIs to satisfaction, and sleep better for it.
Installation
The package can be installed by adding postgresql_uri
to your list of dependencies in mix.exs
:
def deps do
[
{:postgresql_uri, "~> 0.1.0"}
]
end