Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data ConnectionSource
- data Database :: Effect where
- resetInit :: forall r. Member Database r => Sem r ()
- session :: forall r a. Member Database r => Session a -> Sem r a
- use :: forall r a. Member Database r => (Connection -> Sem r a) -> Sem r a
- withInit :: forall r a. Member Database r => InitDb (Sem r) -> Sem r a -> Sem r a
- retry :: forall r t a. (Member Database r, TimeUnit t) => t -> Maybe Int -> Sem r a -> Sem r a
- release :: forall r. Member Database r => Sem r ()
- tag :: forall r. Member Database r => Sem r ConnectionTag
- type Databases = Scoped ConnectionSource (Database !! DbError)
- withDatabaseUnique :: Member Databases r => Maybe ConnectionTag -> InterpreterFor (Database !! DbError) r
- withDatabaseGlobal :: Member Databases r => InterpreterFor (Database !! DbError) r
- statement :: Member Database r => p -> Statement p o -> Sem r o
Documentation
data Database :: Effect where Source #
This effect provides the capability to execute Statement
s.
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.
retry :: forall r t a. (Member Database r, TimeUnit t) => t -> Maybe Int -> Sem r a -> Sem r a Source #
withDatabaseUnique :: Member Databases r => Maybe ConnectionTag -> InterpreterFor (Database !! DbError) r Source #
withDatabaseGlobal :: Member Databases r => InterpreterFor (Database !! DbError) r Source #