| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Database.PostgreSQL.Typed.TemplatePG
Description
This module exposes the high-level Template Haskell interface for querying and manipulating the PostgreSQL server.
All SQL string arguments support expression interpolation. Just enclose your
expression in {} in the SQL string.
Note that transactions are messy and untested. Attempt to use them at your own risk.
Synopsis
- queryTuples :: String -> ExpQ
- queryTuple :: String -> ExpQ
- execute :: String -> ExpQ
- insertIgnore :: IO () -> IO ()
- withTransaction :: PGConnection -> IO a -> IO a
- rollback :: PGConnection -> IO ()
- type PGException = PGError
- pgConnect :: String -> PortID -> ByteString -> ByteString -> ByteString -> IO PGConnection
- pgDisconnect :: PGConnection -> IO ()
Documentation
queryTuples :: String -> ExpQ Source #
queryTuples :: String -> (PGConnection -> IO [(column1, column2, ...)])
Query a PostgreSQL server and return the results as a list of tuples.
Example (where h is a handle from pgConnect):
$(queryTuples "SELECT usesysid, usename FROM pg_user") h :: IO [(Maybe String, Maybe Integer)]
queryTuple :: String -> ExpQ Source #
queryTuple :: String -> (PGConnection -> IO (Maybe (column1, column2, ...)))
Convenience function to query a PostgreSQL server and return the first
result as a tuple. If the query produces no results, return Nothing.
Example (where h is a handle from pgConnect):
let sysid = 10::Integer;
$(queryTuple "SELECT usesysid, usename FROM pg_user WHERE usesysid = {sysid}") h :: IO (Maybe (Maybe String, Maybe Integer))execute :: String -> ExpQ Source #
execute :: String -> (PGConnection -> IO ())
Convenience function to execute a statement on the PostgreSQL server.
Example (where h is a handle from pgConnect):
insertIgnore :: IO () -> IO () Source #
Ignore duplicate key errors. This is also limited to the IO Monad.
withTransaction :: PGConnection -> IO a -> IO a Source #
Run a sequence of IO actions (presumably SQL statements) wrapped in a
transaction. Unfortunately you're restricted to using this in the IO
Monad for now due to the use of onException. I'm debating adding a
MonadPeelIO version.
rollback :: PGConnection -> IO () Source #
Roll back a transaction.
type PGException = PGError Source #
Arguments
| :: String | the host to connect to |
| -> PortID | the port to connect on |
| -> ByteString | the database to connect to |
| -> ByteString | the username to connect as |
| -> ByteString | the password to connect with |
| -> IO PGConnection | a handle to communicate with the PostgreSQL server on |
Arguments
| :: PGConnection | a handle from |
| -> IO () |
Disconnect cleanly from the PostgreSQL server.