module Yesod.Crud.Simple where import Prelude import Data.Monoid import Control.Lens.TH import Control.Lens hiding (index) import Yesod.Core import Yesod.Form import Yesod.Persist import Data.Text (Text) import Yesod.Crud data SimpleCrud master a = SimpleCrud { _scAdd :: WidgetT master IO () -> HandlerT (Crud master a) (HandlerT master IO) Html , _scIndex :: HandlerT (Crud master a) (HandlerT master IO) Html , _scEdit :: WidgetT master IO () -> HandlerT (Crud master a) (HandlerT master IO) Html , _scDelete :: WidgetT master IO () -> HandlerT (Crud master a) (HandlerT master IO) Html , _scDeleteForm :: WidgetT master IO () , _scForm :: Maybe a -> Html -> MForm (HandlerT master IO) (FormResult a, WidgetT master IO ()) , _scFormWrap :: Enctype -> Route master -> WidgetT master IO () -> WidgetT master IO () } makeLenses ''SimpleCrud emptySimpleCrud :: SimpleCrud master a emptySimpleCrud = SimpleCrud (const $ return mempty) (return mempty) (const $ return mempty) (const $ return mempty) mempty (const $ const $ return (FormMissing,mempty)) (const $ const $ const mempty) basicSimpleCrud :: forall master a. PathPiece (Key a) => Yesod master => YesodPersist master => PersistEntity a => PersistQuery (YesodPersistBackend master) => PersistEntityBackend a ~ YesodPersistBackend master => SimpleCrud master a basicSimpleCrud = emptySimpleCrud & scIndex .~ index & scAdd .~ lift . defaultLayout & scEdit .~ lift . defaultLayout & scDelete .~ lift . defaultLayout & scDeleteForm .~ [whamlet|