{-| Module : Servant.API.DB Description : Type level DSL for describing API to DB Portability : Portable The idea of package is to provide -like DSL for specifying an API for functions stored in RDBMS. @ 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: * - derives client for PostgreSQL with library. -} module Servant.API.DB( module Reexport ) where import Servant.API as Reexport ((:<|>) (..), (:>)) import Servant.API.DB.Argument as Reexport import Servant.API.DB.Procedure as Reexport