-- 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.2 -- | 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, PersistStore 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 :: (PersistUnique 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