1.8 KiB
Serve a RESTful API from any Postgres database
Installation
brew install postgres
cabal install -j --enable-tests
Example usage:
cabal run -d [database] -U [auth-role] -a [anonymous-role]
This will connect to a postgres DB at the url
postgres://[auth-role]:@localhost:5432/[database].
You will need to provide two database roles (which are allowed to
be the same). One is called the authenticator role (auth-role
above) which should have enough privileges to read the auth table
in the postgrest schema if you intend to support multi-user
applications.
The other role is for anonymous access (anonymous-role above).
Immediately upon acceping any unauthenticated HTTP connection postgrest
assumes this role in its queries to postgres. Give this role as
much or little permissions as you would like.
Running tests
createuser --superuser --no-password postgrest_test
createdb -O postgrest_test -U postgres postgrest_test
cabal test --show-details=always --test-options="--color"
Distributing Heroku build
heroku create --stack=cedar --buildpack https://github.com/begriffs/heroku-buildpack-ghc.git
git push heroku master
heroku config:set S3_ACCESS_KEY=abc
heroku config:set S3_SECRET_KEY=123
heroku config:set S3_BUCKET=s3://foo/bar
heroku run scripts/release_s3.sh
Acknowledgements
Thanks to Adam Baker for code contributions and many fundamental design discussions. Also thanks to Loop/Recur for open-source Fridays to advance the code, and for their courage to use this thing in real projects.
