Safe Haskell | None |
---|---|
Language | Haskell98 |
Defines the core functionality of this package. This package is distinguished from Yesod.Persist in that the latter additionally exports the persistent modules themselves.
- class Monad (YesodDB site) => YesodPersist site where
- type YesodPersistBackend site
- runDB :: YesodDB site a -> HandlerT site IO a
- defaultRunDB :: PersistConfig c => (site -> c) -> (site -> PersistConfigPool c) -> PersistConfigBackend c (HandlerT site IO) a -> HandlerT site IO a
- class YesodPersist site => YesodPersistRunner site where
- defaultGetDBRunner :: (YesodPersistBackend site ~ SqlBackend) => (site -> Pool Connection) -> HandlerT site IO (DBRunner site, HandlerT site IO ())
- newtype DBRunner site = DBRunner {
- runDBRunner :: forall a. YesodDB site a -> HandlerT site IO a
- runDBSource :: YesodPersistRunner site => Source (YesodDB site) a -> Source (HandlerT site IO) a
- respondSourceDB :: YesodPersistRunner site => ContentType -> Source (YesodDB site) (Flush Builder) -> HandlerT site IO TypedContent
- type YesodDB site = ReaderT (YesodPersistBackend site) (HandlerT site IO)
- get404 :: (MonadIO m, PersistStore (PersistEntityBackend val), PersistEntity val) => Key val -> ReaderT (PersistEntityBackend val) m val
- getBy404 :: (PersistUnique (PersistEntityBackend val), PersistEntity val, MonadIO m) => Unique val -> ReaderT (PersistEntityBackend val) m (Entity val)
Documentation
class Monad (YesodDB site) => YesodPersist site where Source
type YesodPersistBackend site Source
defaultRunDB :: PersistConfig c => (site -> c) -> (site -> PersistConfigPool c) -> PersistConfigBackend c (HandlerT site IO) a -> HandlerT site IO a Source
Helper for creating runDB
.
Since 1.2.0
class YesodPersist site => YesodPersistRunner site where Source
Since 1.2.0
getDBRunner :: HandlerT site IO (DBRunner site, HandlerT site IO ()) Source
This function differs from runDB
in that it returns a database
runner function, as opposed to simply running a single action. This will
usually mean that a connection is taken from a pool and then reused for
each invocation. This can be useful for creating streaming responses;
see runDBSource
.
It additionally returns a cleanup function to free the connection. If your code finishes successfully, you must call this cleanup to indicate changes should be committed. Otherwise, for SQL backends at least, a rollback will be used instead.
Since 1.2.0
defaultGetDBRunner :: (YesodPersistBackend site ~ SqlBackend) => (site -> Pool Connection) -> HandlerT site IO (DBRunner site, HandlerT site IO ()) Source
Helper for implementing getDBRunner
.
Since 1.2.0
runDBSource :: YesodPersistRunner site => Source (YesodDB site) a -> Source (HandlerT site IO) a Source
Like runDB
, but transforms a Source
. See respondSourceDB
for an
example, practical use case.
Since 1.2.0
respondSourceDB :: YesodPersistRunner site => ContentType -> Source (YesodDB site) (Flush Builder) -> HandlerT site IO TypedContent Source
Extends respondSource
to create a streaming database response body.
get404 :: (MonadIO m, PersistStore (PersistEntityBackend val), PersistEntity val) => Key val -> ReaderT (PersistEntityBackend val) m val Source
Get the given entity by ID, or return a 404 not found if it doesn't exist.
getBy404 :: (PersistUnique (PersistEntityBackend val), PersistEntity val, MonadIO m) => Unique val -> ReaderT (PersistEntityBackend val) m (Entity val) Source
Get the given entity by unique key, or return a 404 not found if it doesn't exist.