packages feed

servant-db-0.2.0.0: README.md

servant-db
==========

The idea of package is to provide [servant](http://haskell-servant.readthedocs.io/en/stable/)-like 
DSL for specifying an API for functions stored in RDBMS. 

``` haskell
data RegisterUser = RegisterUser {
  userName :: Text
, userPassword :: Text
, userPhone :: Phone
, userEmail :: Email
}

type API = 
       ArgNamed "user" RegisterUser
    :> ArgNamed "isAdmin" Bool
    :> Procedure "registerUser" (Maybe (Only UserId))
  :<|> ArgPos UserId
    :> Procedure "getUser" (Maybe User)
  :<|> Procedure "listUsers" [User]
```

The library adds three custom combinators:
* `ArgNamed name a` - named argument of stored function of type `a`.

* `ArgPos a` - unamed argument of stored function of type `a`.

* `Procedure name a` - named stored function with return type `a`. 

Related libraries:

* [servant-db-postgresql](https://github.com/NCrashed/servant-db-postgresql) - 
    derives client for PostgreSQL with [postgresql-query](postgresql-query) library.