Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
class (Applicative m, Monad m) => MonadDB m where Source #
runQuery, getLastQuery, getConnectionStats, getQueryResult, clearQueryResult, getTransactionSettings, setTransactionSettings, getNotification, withNewConnection
runQuery :: IsSQL sql => sql -> m Int Source #
Run SQL query and return number of affected/returned rows. Note that
for a given connection, only one thread may be executing runQuery
at
a given time. If simultaneous call is made from another thread, it
will block until currently running runQuery
finishes.
getLastQuery :: m SomeSQL Source #
Get last SQL query that was executed.
getConnectionStats :: m ConnectionStats Source #
Get current connection statistics.
getQueryResult :: FromRow row => m (Maybe (QueryResult row)) Source #
Get current query result.
clearQueryResult :: m () Source #
Clear current query result.
getTransactionSettings :: m TransactionSettings Source #
Get current transaction settings.
setTransactionSettings :: TransactionSettings -> m () Source #
Set transaction settings to supplied ones. Note that it won't change any properties of currently running transaction, only the subsequent ones.
getNotification :: Int -> m (Maybe Notification) Source #
Attempt to receive a notification from the server. This function waits until a notification arrives or specified number of microseconds has passed. If a negative number of microseconds is passed as an argument, it will wait indefinitely. In addition, there are a couple of things to be aware of:
- A lock on the underlying database connection is acquired for the duration of the function.
- Notifications can be received only between transactions
(see http://www.postgresql.org/docs/current/static/sql-notify.html
for further info), therefore calling this function within
a transaction block will return
Just
only if notifications were received before the transaction began.
withNewConnection :: m a -> m a Source #
Execute supplied monadic action with new connection using current connection source and transaction settings.
Particularly useful when you want to spawn a new thread, but do not want the connection in child thread to be shared with the parent one.