Safe Haskell | None |
---|---|
Language | Haskell98 |
A postgresql backend for persistent.
- withPostgresqlPool :: (MonadBaseControl IO m, MonadLogger m, MonadIO m, IsSqlBackend backend) => ConnectionString -> Int -> (Pool backend -> m a) -> m a
- withPostgresqlConn :: (MonadIO m, MonadBaseControl IO m, MonadLogger m, IsSqlBackend backend) => ConnectionString -> (backend -> m a) -> m a
- createPostgresqlPool :: (MonadIO m, MonadBaseControl IO m, MonadLogger m, IsSqlBackend backend) => ConnectionString -> Int -> m (Pool backend)
- createPostgresqlPoolModified :: (MonadIO m, MonadBaseControl IO m, MonadLogger m, IsSqlBackend backend) => (Connection -> IO ()) -> ConnectionString -> Int -> m (Pool backend)
- module Database.Persist.Sql
- type ConnectionString = ByteString
- data PostgresConf = PostgresConf {}
- openSimpleConn :: IsSqlBackend backend => LogFunc -> Connection -> IO backend
- tableName :: PersistEntity record => record -> Text
- fieldName :: PersistEntity record => EntityField record typ -> Text
- mockMigration :: Migration -> IO ()
Documentation
:: (MonadBaseControl IO m, MonadLogger m, MonadIO m, IsSqlBackend backend) | |
=> ConnectionString | Connection string to the database. |
-> Int | Number of connections to be kept open in the pool. |
-> (Pool backend -> m a) | Action to be executed that uses the connection pool. |
-> m a |
Create a PostgreSQL connection pool and run the given
action. The pool is properly released after the action
finishes using it. Note that you should not use the given
ConnectionPool
outside the action since it may be already
been released.
withPostgresqlConn :: (MonadIO m, MonadBaseControl IO m, MonadLogger m, IsSqlBackend backend) => ConnectionString -> (backend -> m a) -> m a Source #
Same as withPostgresqlPool
, but instead of opening a pool
of connections, only one connection is opened.
:: (MonadIO m, MonadBaseControl IO m, MonadLogger m, IsSqlBackend backend) | |
=> ConnectionString | Connection string to the database. |
-> Int | Number of connections to be kept open in the pool. |
-> m (Pool backend) |
Create a PostgreSQL connection pool. Note that it's your
responsibility to properly close the connection pool when
unneeded. Use withPostgresqlPool
for an automatic resource
control.
createPostgresqlPoolModified Source #
:: (MonadIO m, MonadBaseControl IO m, MonadLogger m, IsSqlBackend backend) | |
=> (Connection -> IO ()) | action to perform after connection is created |
-> ConnectionString | Connection string to the database. |
-> Int | Number of connections to be kept open in the pool. |
-> m (Pool backend) |
Same as createPostgresqlPool
, but additionally takes a callback function
for some connection-specific tweaking to be performed after connection
creation. This could be used, for example, to change the schema. For more
information, see:
https://groups.google.com/d/msg/yesodweb/qUXrEN_swEo/O0pFwqwQIdcJ
Since 2.1.3
module Database.Persist.Sql
type ConnectionString = ByteString Source #
A libpq
connection string. A simple example of connection
string would be "host=localhost port=5432 user=test
dbname=test password=test"
. Please read libpq's
documentation at
http://www.postgresql.org/docs/9.1/static/libpq-connect.html
for more details on how to create such strings.
data PostgresConf Source #
Information required to connect to a PostgreSQL database
using persistent
's generic facilities. These values are the
same that are given to withPostgresqlPool
.
PostgresConf | |
|
openSimpleConn :: IsSqlBackend backend => LogFunc -> Connection -> IO backend Source #
Generate a Connection
from a Connection
tableName :: PersistEntity record => record -> Text Source #
get the SQL string for the table that a PeristEntity represents Useful for raw SQL queries
fieldName :: PersistEntity record => EntityField record typ -> Text Source #
get the SQL string for the field that an EntityField represents Useful for raw SQL queries
mockMigration :: Migration -> IO () Source #
Mock a migration even when the database is not present.
This function performs the same functionality of printMigration
with the difference that an actualy database isn't needed for it.