Safe Haskell | None |
---|---|
Language | Haskell2010 |
Defines the core functionality of this package. This package is distinguished from Yesod.Persist in that the latter additionally exports the persistent modules themselves.
Synopsis
- class Monad (YesodDB site) => YesodPersist site where
- type YesodPersistBackend site
- runDB :: YesodDB site a -> HandlerFor site a
- defaultRunDB :: PersistConfig c => (site -> c) -> (site -> PersistConfigPool c) -> PersistConfigBackend c (HandlerFor site) a -> HandlerFor site a
- class YesodPersist site => YesodPersistRunner site where
- getDBRunner :: HandlerFor site (DBRunner site, HandlerFor site ())
- defaultGetDBRunner :: (IsSqlBackend backend, YesodPersistBackend site ~ backend) => (site -> Pool backend) -> HandlerFor site (DBRunner site, HandlerFor site ())
- newtype DBRunner site = DBRunner {
- runDBRunner :: forall a. YesodDB site a -> HandlerFor site a
- runDBSource :: YesodPersistRunner site => ConduitT () a (YesodDB site) () -> ConduitT () a (HandlerFor site) ()
- respondSourceDB :: YesodPersistRunner site => ContentType -> ConduitT () (Flush Builder) (YesodDB site) () -> HandlerFor site TypedContent
- type YesodDB site = ReaderT (YesodPersistBackend site) (HandlerFor site)
- get404 :: (MonadIO m, PersistStoreRead backend, PersistRecordBackend val backend) => Key val -> ReaderT backend m val
- getBy404 :: (PersistUniqueRead backend, PersistRecordBackend val backend, MonadIO m) => Unique val -> ReaderT backend m (Entity val)
- insert400 :: (MonadIO m, PersistUniqueWrite backend, PersistRecordBackend val backend) => val -> ReaderT backend m (Key val)
- insert400_ :: (MonadIO m, PersistUniqueWrite backend, PersistRecordBackend val backend) => val -> ReaderT backend m ()
Documentation
class Monad (YesodDB site) => YesodPersist site where Source #
type YesodPersistBackend site Source #
runDB :: YesodDB site a -> HandlerFor site a Source #
Allows you to execute database actions within Yesod Handlers. For databases that support it, code inside the action will run as an atomic transaction.
Example Usage
userId <- runDB $ do userId <- insert $ User "username" "email@example.com" insert_ $ UserPreferences userId True pure userId
defaultRunDB :: PersistConfig c => (site -> c) -> (site -> PersistConfigPool c) -> PersistConfigBackend c (HandlerFor site) a -> HandlerFor site a Source #
Helper for creating runDB
.
Since 1.2.0
class YesodPersist site => YesodPersistRunner site where Source #
Since 1.2.0
getDBRunner :: HandlerFor site (DBRunner site, HandlerFor site ()) 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 :: (IsSqlBackend backend, YesodPersistBackend site ~ backend) => (site -> Pool backend) -> HandlerFor site (DBRunner site, HandlerFor site ()) Source #
Helper for implementing getDBRunner
.
Since 1.2.0
newtype DBRunner site Source #
DBRunner | |
|
runDBSource :: YesodPersistRunner site => ConduitT () a (YesodDB site) () -> ConduitT () a (HandlerFor site) () Source #
Like runDB
, but transforms a Source
. See respondSourceDB
for an
example, practical use case.
Since 1.2.0
respondSourceDB :: YesodPersistRunner site => ContentType -> ConduitT () (Flush Builder) (YesodDB site) () -> HandlerFor site TypedContent Source #
Extends respondSource
to create a streaming database response body.
type YesodDB site = ReaderT (YesodPersistBackend site) (HandlerFor site) Source #
get404 :: (MonadIO m, PersistStoreRead backend, PersistRecordBackend val backend) => Key val -> ReaderT backend m val Source #
Get the given entity by ID, or return a 404 not found if it doesn't exist.
getBy404 :: (PersistUniqueRead backend, PersistRecordBackend val backend, MonadIO m) => Unique val -> ReaderT backend m (Entity val) Source #
Get the given entity by unique key, or return a 404 not found if it doesn't exist.
insert400 :: (MonadIO m, PersistUniqueWrite backend, PersistRecordBackend val backend) => val -> ReaderT backend m (Key val) Source #
Create a new record in the database, returning an automatically created key, or raise a 400 bad request if a uniqueness constraint is violated.
Since: 1.4.1
insert400_ :: (MonadIO m, PersistUniqueWrite backend, PersistRecordBackend val backend) => val -> ReaderT backend m () Source #
Same as insert400
, but doesn’t return a key.
Since: 1.4.1