README.md

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!

See [Changelog].