-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Some helpers for using Persistent from Yesod.
--
-- API docs and the README are available at
-- http://www.stackage.org/package/yesod-persistent
@package yesod-persistent
@version 1.4.3
-- | Defines the core functionality of this package. This package is
-- distinguished from Yesod.Persist in that the latter additionally
-- exports the persistent modules themselves.
module Yesod.Persist.Core
class Monad (YesodDB site) => YesodPersist site where type YesodPersistBackend site where {
type family YesodPersistBackend site;
}
runDB :: YesodPersist site => YesodDB site a -> HandlerT site IO a
-- | Helper for creating runDB.
--
-- Since 1.2.0
defaultRunDB :: PersistConfig c => (site -> c) -> (site -> PersistConfigPool c) -> PersistConfigBackend c (HandlerT site IO) a -> HandlerT site IO a
-- | Since 1.2.0
class YesodPersist site => YesodPersistRunner site
-- | 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
getDBRunner :: YesodPersistRunner site => HandlerT site IO (DBRunner site, HandlerT site IO ())
-- | Helper for implementing getDBRunner.
--
-- Since 1.2.0
defaultGetDBRunner :: (IsSqlBackend backend, YesodPersistBackend site ~ backend) => (site -> Pool backend) -> HandlerT site IO (DBRunner site, HandlerT site IO ())
newtype DBRunner site
DBRunner :: (forall a. YesodDB site a -> HandlerT site IO a) -> DBRunner site
[runDBRunner] :: DBRunner site -> forall a. YesodDB site a -> HandlerT site IO a
-- | Like runDB, but transforms a Source. See
-- respondSourceDB for an example, practical use case.
--
-- Since 1.2.0
runDBSource :: YesodPersistRunner site => Source (YesodDB site) a -> Source (HandlerT site IO) a
-- | Extends respondSource to create a streaming database response
-- body.
respondSourceDB :: YesodPersistRunner site => ContentType -> Source (YesodDB site) (Flush Builder) -> HandlerT site IO TypedContent
type YesodDB site = ReaderT (YesodPersistBackend site) (HandlerT site IO)
-- | Get the given entity by ID, or return a 404 not found if it doesn't
-- exist.
get404 :: (MonadIO m, PersistStoreRead backend, PersistRecordBackend val backend) => Key val -> ReaderT backend m val
-- | Get the given entity by unique key, 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)
-- | Create a new record in the database, returning an automatically
-- created key, or raise a 400 bad request if a uniqueness constraint is
-- violated.
insert400 :: (MonadIO m, PersistUniqueWrite backend, PersistRecordBackend val backend) => val -> ReaderT backend m (Key val)
-- | Same as insert400, but doesn’t return a key.
insert400_ :: (MonadIO m, PersistUniqueWrite backend, PersistRecordBackend val backend) => val -> ReaderT backend m ()
module Yesod.Persist