yesod-persistent- Some helpers for using Persistent from Yesod.

Safe HaskellNone



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 (YesodPersistBackend site (HandlerT site IO)) => YesodPersist site whereSource

Associated Types

type YesodPersistBackend site :: (* -> *) -> * -> *Source


runDB :: YesodDB site a -> HandlerT site IO aSource

defaultRunDB :: PersistConfig c => (site -> c) -> (site -> PersistConfigPool c) -> PersistConfigBackend c (HandlerT site IO) a -> HandlerT site IO aSource

Helper for creating runDB.

Since 1.2.0

class YesodPersist site => YesodPersistRunner site whereSource

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 ~ SqlPersistT => (site -> Pool Connection) -> HandlerT site IO (DBRunner site, HandlerT site IO ())Source

Helper for implementing getDBRunner.

Since 1.2.0

newtype DBRunner site Source




runDBRunner :: forall a. YesodDB site a -> HandlerT site IO a

runDBSource :: YesodPersistRunner site => Source (YesodDB site) a -> Source (HandlerT site IO) aSource

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 TypedContentSource

Extends respondSource to create a streaming database response body.

get404 :: (PersistStore (t m), PersistEntity val, Monad (t m), m ~ HandlerT site IO, MonadTrans t, PersistMonadBackend (t m) ~ PersistEntityBackend val) => Key val -> t m valSource

Get the given entity by ID, or return a 404 not found if it doesn't exist.

getBy404 :: (PersistUnique (t m), PersistEntity val, m ~ HandlerT site IO, Monad (t m), MonadTrans t, PersistEntityBackend val ~ PersistMonadBackend (t m)) => Unique val -> t m (Entity val)Source

Get the given entity by unique key, or return a 404 not found if it doesn't exist.