{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module ClassyPrelude.Yesod ( module X , module ClassyPrelude.Yesod ) where import ClassyPrelude.Conduit as X hiding (lift) import Yesod as X hiding (Header, insert, delete) import qualified Yesod import Yesod.Static as X import Yesod.Feed as X import Network.HTTP.Conduit as X import Network.HTTP.Types as X import qualified ClassyPrelude.Classes import Database.Persist.Sql as X (SqlBackend, SqlPersistT) import Database.Persist.Sql as X (runMigration) import Data.Default as X (Default (..)) instance ( backend ~ PersistMonadBackend m , backend ~ PersistEntityBackend entity , PersistStore m , PersistEntity entity , entity ~ entity' ) => ClassyPrelude.Classes.CanInsert (entity -> m (KeyBackend backend entity')) where insert = Yesod.insert -- | Non-typeclass insert for use with Persistent. -- -- If you don\'t use the @Key@ returned from @insert@, the type inferencing -- cannot tell which @insert@ function to use. Using @insertDB@ disambiguates. -- Another options is using 'voidKey'. -- -- Since 0.1.0.0 insertDB :: ( PersistStore m , PersistEntity entity , PersistMonadBackend m ~ PersistEntityBackend entity ) => entity -> m (Key entity) insertDB = Yesod.insert -- | Ignore the @Key@ returned by insert. -- -- See 'insertDB' for more information. The following two lines are equivalent: -- -- > _ <- insertDB foo -- > voidKey $ insert foo -- -- Since 0.1.0.0 voidKey :: Functor m => m (KeyBackend backend entity) -> m () voidKey = void instance ( backend ~ PersistMonadBackend m , backend ~ PersistEntityBackend entity , PersistStore m , PersistEntity entity , a ~ () ) => ClassyPrelude.Classes.CanDelete (KeyBackend backend entity -> m a) where delete = Yesod.delete