Skip to content
/ pgapp Public
forked from epgsql/pgapp

Erlang Postgres application that uses Poolboy and deals with the database being unavailable

License

Notifications You must be signed in to change notification settings

Nenzyz/pgapp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pgapp

This code is a front end for epgsql that adds a pool (poolboy, for the moment), and code to isolate crashes in the epgsql library: if your database goes down, you probably don't want the rest of the application to fail as well.

Build and start the application with Make:

- Copy and/or rename the file `pgapp.config.sample` into `pgapp.config`
- Enter your configuration data in `pgapp.config`
- Run:

    ~:$ make
    ~:$ make run

- To test it, just run:

    > pgapp:equery(a_pool_name, "select current_date", []).

  where `a_pool_name` is the name of one of the pools in your `pgapp.config` file.

API use: - Simple pool:

    application:ensure_all_started(pgapp).
    pgapp:connect([{size, 10}, {database, "mydb"}, {username, "foo"}, {password, "bar"}]).
    pgapp:equery("select current_date", []),
    pgapp:with_transaction(fun() ->
                                 pgapp:squery("update ..."),
                                 pgapp:squery("delete from ..."),
                                 pgapp:equery("select ? from ?", ["*", Table])
                           end).

- Multi pool:

    application:ensure_all_started(pgapp).
    pgapp:connect(a_pool_name, [{size, 10}, {database, "mydb"}, {username, "foo"}, {password, "bar"}]).
    pgapp:equery(a_pool_name, "select current_date", []).

The equery and squery API's are the same as those of epgsql: https://github.com/epgsql/epgsql

Note: It is still experimental, and is likely to break. The API is not stable!

About

Erlang Postgres application that uses Poolboy and deals with the database being unavailable

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Erlang 96.3%
  • Makefile 3.7%