Database.Persist.Sqlite

persistent-sqlite-2.6.2: Backend for the persistent library using sqlite3.

Safe Haskell | None
Language | Haskell98

Database.Persist.Sqlite

Description

A sqlite backend for persistent.

Note: If you prepend `WAL=off` to your connection string, it will disable the write-ahead log. This functionality is now deprecated in favour of using SqliteConnectionInfo.

Synopsis

- withSqlitePool :: (MonadBaseControl IO m, MonadIO m, MonadLogger m, IsSqlBackend backend) => Text -> Int -> (Pool backend -> m a) -> m a
- withSqlitePoolInfo :: (MonadBaseControl IO m, MonadIO m, MonadLogger m, IsSqlBackend backend) => SqliteConnectionInfo -> Int -> (Pool backend -> m a) -> m a
- withSqliteConn :: (MonadBaseControl IO m, MonadIO m, MonadLogger m, IsSqlBackend backend) => Text -> (backend -> m a) -> m a
- withSqliteConnInfo :: (MonadBaseControl IO m, MonadIO m, MonadLogger m, IsSqlBackend backend) => SqliteConnectionInfo -> (backend -> m a) -> m a
- createSqlitePool :: (MonadIO m, MonadLogger m, MonadBaseControl IO m, IsSqlBackend backend) => Text -> Int -> m (Pool backend)
- createSqlitePoolFromInfo :: (MonadIO m, MonadLogger m, MonadBaseControl IO m, IsSqlBackend backend) => SqliteConnectionInfo -> Int -> m (Pool backend)
- module Database.Persist.Sql
- data SqliteConf
  - = SqliteConf {
    - sqlDatabase :: Text
    - sqlPoolSize :: Int
    }
  - | SqliteConfInfo {
    - sqlConnInfo :: SqliteConnectionInfo
    - sqlPoolSize :: Int
    }
- data SqliteConnectionInfo
- mkSqliteConnectionInfo :: Text -> SqliteConnectionInfo
- sqlConnectionStr :: Lens' SqliteConnectionInfo Text
- walEnabled :: Lens' SqliteConnectionInfo Bool
- fkEnabled :: Lens' SqliteConnectionInfo Bool
- runSqlite :: (MonadBaseControl IO m, MonadIO m, IsSqlBackend backend) => Text -> ReaderT backend (NoLoggingT (ResourceT m)) a -> m a
- runSqliteInfo :: (MonadBaseControl IO m, MonadIO m, IsSqlBackend backend) => SqliteConnectionInfo -> ReaderT backend (NoLoggingT (ResourceT m)) a -> m a
- wrapConnection :: IsSqlBackend backend => Connection -> LogFunc -> IO backend
- wrapConnectionInfo :: IsSqlBackend backend => SqliteConnectionInfo -> Connection -> LogFunc -> IO backend
- mockMigration :: Migration -> IO ()

# Documentation

withSqlitePool #

Arguments

:: (MonadBaseControl IO m, MonadIO m, MonadLogger m, IsSqlBackend backend) |
=> Text |
-> Int | number of connections to open
-> (Pool backend -> m a) |
-> m a |

Run the given action with a connection pool.

Like `createSqlitePool`, this should not be used with `:memory:`.

withSqlitePoolInfo #

Arguments

:: (MonadBaseControl IO m, MonadIO m, MonadLogger m, IsSqlBackend backend) |
=> SqliteConnectionInfo |
-> Int | number of connections to open
-> (Pool backend -> m a) |
-> m a |

Run the given action with a connection pool.

Like `createSqlitePool`, this should not be used with `:memory:`.

Since: 2.6.2

withSqliteConn :: (MonadBaseControl IO m, MonadIO m, MonadLogger m, IsSqlBackend backend) => Text -> (backend -> m a) -> m a #

withSqliteConnInfo :: (MonadBaseControl IO m, MonadIO m, MonadLogger m, IsSqlBackend backend) => SqliteConnectionInfo -> (backend -> m a) -> m a #

Since: 2.6.2

createSqlitePool :: (MonadIO m, MonadLogger m, MonadBaseControl IO m, IsSqlBackend backend) => Text -> Int -> m (Pool backend) #

Create a pool of SQLite connections.

Note that this should not be used with the `:memory:` connection string, as the pool will regularly remove connections, destroying your database. Instead, use `withSqliteConn`.

createSqlitePoolFromInfo :: (MonadIO m, MonadLogger m, MonadBaseControl IO m, IsSqlBackend backend) => SqliteConnectionInfo -> Int -> m (Pool backend) #

Create a pool of SQLite connections.

Note that this should not be used with the `:memory:` connection string, as the pool will regularly remove connections, destroying your database. Instead, use `withSqliteConn`.

Since: 2.6.2

module Database.Persist.Sql

data SqliteConf #

Information required to setup a connection pool.

Constructors

SqliteConf |
Fields sqlDatabase :: Text sqlPoolSize :: Int
SqliteConfInfo |
Fields sqlConnInfo :: SqliteConnectionInfo sqlPoolSize :: Int

Instances

Show SqliteConf # |
Methods showsPrec :: Int -> SqliteConf -> ShowS # show :: SqliteConf -> String # showList :: [SqliteConf] -> ShowS #
FromJSON SqliteConf # |
Methods parseJSON :: Value -> Parser SqliteConf # parseJSONList :: Value -> Parser [SqliteConf] #
PersistConfig SqliteConf # |
Associated Types type PersistConfigBackend SqliteConf :: (* -> *) -> * -> * # type PersistConfigPool SqliteConf :: * # Methods loadConfig :: Value -> Parser SqliteConf # applyEnv :: SqliteConf -> IO SqliteConf # createPoolConfig :: SqliteConf -> IO (PersistConfigPool SqliteConf) # runPool :: (MonadBaseControl IO m, MonadIO m) => SqliteConf -> PersistConfigBackend SqliteConf m a -> PersistConfigPool SqliteConf -> m a #
type PersistConfigPool SqliteConf # |
type PersistConfigPool SqliteConf = ConnectionPool
type PersistConfigBackend SqliteConf # |
type PersistConfigBackend SqliteConf = SqlPersistT

data SqliteConnectionInfo #

Information required to connect to a sqlite database. We export lenses instead of fields to avoid being limited to the current implementation.

Since: 2.6.2

Instances

Show SqliteConnectionInfo # |
Methods showsPrec :: Int -> SqliteConnectionInfo -> ShowS # show :: SqliteConnectionInfo -> String # showList :: [SqliteConnectionInfo] -> ShowS #
FromJSON SqliteConnectionInfo # |
Methods parseJSON :: Value -> Parser SqliteConnectionInfo # parseJSONList :: Value -> Parser [SqliteConnectionInfo] #

mkSqliteConnectionInfo :: Text -> SqliteConnectionInfo #

Creates a SqliteConnectionInfo from a connection string, with the default settings.

Since: 2.6.2

sqlConnectionStr :: Lens' SqliteConnectionInfo Text #

walEnabled :: Lens' SqliteConnectionInfo Bool #

fkEnabled :: Lens' SqliteConnectionInfo Bool #

runSqlite #

Arguments

:: (MonadBaseControl IO m, MonadIO m, IsSqlBackend backend) |
=> Text | connection string
-> ReaderT backend (NoLoggingT (ResourceT m)) a | database action
-> m a |

A convenience helper which creates a new database connection and runs the given block, handling `MonadResource` and `MonadLogger` requirements. Note that all log messages are discarded.

Since 1.1.4

runSqliteInfo #

Arguments

:: (MonadBaseControl IO m, MonadIO m, IsSqlBackend backend) |
=> SqliteConnectionInfo |
-> ReaderT backend (NoLoggingT (ResourceT m)) a | database action
-> m a |

A convenience helper which creates a new database connection and runs the given block, handling `MonadResource` and `MonadLogger` requirements. Note that all log messages are discarded.

Since: 2.6.2

wrapConnection :: IsSqlBackend backend => Connection -> LogFunc -> IO backend #

Wrap up a raw `Connection` as a Persistent SQL `Connection`.

Since 1.1.5

wrapConnectionInfo :: IsSqlBackend backend => SqliteConnectionInfo -> Connection -> LogFunc -> IO backend #

Wrap up a raw `Connection` as a Persistent SQL `Connection`, allowing full control over WAL and FK constraints.

Since: 2.6.2

mockMigration :: Migration -> IO () #

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.