polysemy-hasql-0.0.1.0: Polysemy effects for databases
Safe HaskellSafe-Inferred
LanguageHaskell2010

Polysemy.Hasql.Effect.Database

Synopsis

Documentation

data Database :: Effect where Source #

This effect provides the capability to execute Statements. Additionally, it exposes managed access to the raw Connection resource and automatic table initialization as higher-order actions.

With the minimal stack, an SQL query can be executed in two fashions. One is to use automatically derived codecs:

prog :: Member Database r => Sem r ()
prog = do
  user :: Maybe User <- Database.sql () "select * from users where id = 1"
  user :: [User] <- Database.sql ("guest", True) "select * from users where name = $1 and locked = $2"

The other works by providing an explicit Statement:

statement :: Statement Text User
statement = ...

prog :: Member Database r => Sem r ()
prog = do
  user <- Database.runStatement "guest" statement

For documentation on the individual constructors, see the module page.

Constructors

Tag :: Database m ConnectionTag 
Release :: Database m () 
Retry :: TimeUnit t => t -> Maybe Int -> m a -> Database m a 
WithInit :: InitDb m -> m a -> Database m a 
Use :: (Connection -> m a) -> Database m a 
Session :: Session a -> Database m a 
ResetInit :: Database m () 

resetInit :: forall r. Member Database r => Sem r () Source #

session :: forall r a. Member Database r => Session a -> Sem r a Source #

use :: forall r a. Member Database r => (Connection -> Sem r a) -> Sem r a Source #

withInit :: forall r a. Member Database r => InitDb (Sem r) -> Sem r a -> Sem r a Source #

retry :: forall r t a. (Member Database r, TimeUnit t) => t -> Maybe Int -> Sem r a -> Sem r a Source #

release :: forall r. Member Database r => Sem r () Source #

statement :: Member Database r => p -> Statement p o -> Sem r o Source #