hpqtypes-1.5.3.0: Haskell bindings to libpqtypes

Safe HaskellNone
LanguageHaskell2010

Database.PostgreSQL.PQTypes.Class

Documentation

class (Applicative m, Monad m) => MonadDB m where Source #

Methods

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.