Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- addResource :: HasHeist b => Resource -> [(CRUD, Handler b v ())] -> [(Text, Handler b v ())] -> [(Text, Handler b v ())] -> Snaplet (Heist b) -> Initializer b v ()
- addResourceRelative :: HasHeist b => Resource -> [(CRUD, Handler b v ())] -> [(Text, Handler b v ())] -> [(Text, Handler b v ())] -> Snaplet (Heist b) -> Initializer b v ()
- initRest :: HasHeist b => Resource -> [(CRUD, Handler b () ())] -> [(Text, Handler b () ())] -> [(Text, Handler b () ())] -> Snaplet (Heist b) -> SnapletInit b ()
- resourceSplices :: Monad m => Resource -> Splices (HeistT n m Template)
- itemSplices :: Monad m => Resource -> DBId -> Splices (Splice m)
- resourceCSplices :: MonadSnap m => Resource -> Splices (Splice m)
- itemCSplices :: Resource -> Splices (Maybe DBId -> Text)
- itemCSplice :: forall (n :: Type -> Type). MonadSnap n => Resource -> Splice n
- unitLens :: Lens' b ()
- resourceRouter :: MonadSnap m => Resource -> [(CRUD, m a)] -> [(Text, m a)] -> [(Text, m a)] -> m a
- resourceRoutes :: MonadSnap m => Resource -> [(CRUD, m a)] -> [(Text, m a)] -> [(Text, m a)] -> [(ByteString, m a)]
- data CRUD
- data Resource = Resource {
- rName :: Text
- rRoot :: Text
- rResourceEndpoints :: [Text]
- rItemEndpoints :: [Text]
- newtype DBId = DBId {}
- class HasFormlet a where
- class PrimSplice a where
- iPrimSplice :: Monad m => a -> m [Node]
- cPrimSplice :: a -> Builder
- iPrimText :: Monad m => Text -> m [Node]
- iPrimShow :: (Monad m, Show a) => a -> m [Node]
- cPrimShow :: Show a => a -> Builder
- rootPath :: Resource -> Text
- indexPath :: Resource -> Text
- createPath :: Resource -> Text
- showPath :: Resource -> DBId -> Text
- newPath :: Resource -> Text
- editPath :: Resource -> DBId -> Text
- updatePath :: Resource -> DBId -> Text
- destroyPath :: Resource -> DBId -> Text
- itemActionPath :: Resource -> Text -> DBId -> Text
- templatePath :: Resource -> CRUD -> ByteString
- redirToItem :: MonadSnap m => Resource -> DBId -> m a
- relativeRedirect :: MonadSnap m => ByteString -> m b
- setFormAction :: MonadSnap m => Text -> m a -> m a
- getFormAction :: MonadSnap m => HeistT n m [Node]
Core API
:: HasHeist b | |
=> Resource | Resource definition |
-> [(CRUD, Handler b v ())] | Standard CRUD handlers |
-> [(Text, Handler b v ())] | Additional resource level handlers |
-> [(Text, Handler b v ())] | Additional instance/item level handlers |
-> Snaplet (Heist b) | The Heist snaplet initialized in your app's |
-> Initializer b v () |
One-stop convenience function to enable RESTful resources in your application. Call this function from your initializer passing it all of your resources and it will add the routes and splices for you.
:: HasHeist b | |
=> Resource | Resource definition |
-> [(CRUD, Handler b v ())] | Standard CRUD handlers |
-> [(Text, Handler b v ())] | Additional resource level handlers |
-> [(Text, Handler b v ())] | Additional instance/item level handlers |
-> Snaplet (Heist b) | The Heist snaplet initialized in your app's
|
-> Initializer b v () |
Just like addResource
, but makes the handlers relative to the current
snaplet's root. Use this function if you're writing a snaplet.
initRest :: HasHeist b => Resource -> [(CRUD, Handler b () ())] -> [(Text, Handler b () ())] -> [(Text, Handler b () ())] -> Snaplet (Heist b) -> SnapletInit b () Source #
An initializer for encapsulating RESTful resources as a standalone snaplet.
Splice functions
resourceSplices :: Monad m => Resource -> Splices (HeistT n m Template) Source #
Paths at the resource/collection level
itemSplices :: Monad m => Resource -> DBId -> Splices (Splice m) Source #
Generates path splices for a resource item. These splices let you put resource links in your templates in DRY manner.
resourceCSplices :: MonadSnap m => Resource -> Splices (Splice m) Source #
Returns compiled splices for a resource.
itemCSplices :: Resource -> Splices (Maybe DBId -> Text) Source #
Generates compiled path splices for a resource item. These splices let you put resource links in your templates in DRY manner.
itemCSplice :: forall (n :: Type -> Type). MonadSnap n => Resource -> Splice n Source #
A splice that runs its children with all item splices for a resource. This function gets the id from the "id" param, which could have come in the request or might have been set up by a route capture string.
unitLens :: Lens' b () Source #
Since initRest
returns unit, we provide a generic unit lens here for
use with nestSnaplet in case you don't want to add a unit field to your
application state type.
resourceRouter :: MonadSnap m => Resource -> [(CRUD, m a)] -> [(Text, m a)] -> [(Text, m a)] -> m a Source #
Generate a route handler for the routes returned by resourceRoutes. This function does add the rRoot prefix.
resourceRoutes :: MonadSnap m => Resource -> [(CRUD, m a)] -> [(Text, m a)] -> [(Text, m a)] -> [(ByteString, m a)] Source #
See addResource
for an explanation of the arguments to this
function. The routes returned ARE prefixed with rRoot from
Resource.
Types
Enumeration of all the different types of CRUD routes.
RIndex | An item index |
RShow | A single item |
RNew | The form for creating a new item |
REdit | The form for editing an item |
RCreate | Create a new item |
RUpdate | Update an item |
RDestroy | Delete an item |
Encapsulates the data necessary to define a resource.
Resource | |
|
Generating forms and splices
class HasFormlet a where Source #
Type class for automatic formlet generation.
Instances
class PrimSplice a where Source #
Type class for automatic splice generation.
iPrimSplice :: Monad m => a -> m [Node] Source #
cPrimSplice :: a -> Builder Source #
Instances
PrimSplice Bool Source # | |
Defined in Snap.Restful | |
PrimSplice Double Source # | |
Defined in Snap.Restful | |
PrimSplice Float Source # | |
Defined in Snap.Restful | |
PrimSplice Int Source # | |
Defined in Snap.Restful | |
PrimSplice Int8 Source # | |
Defined in Snap.Restful | |
PrimSplice Int16 Source # | |
Defined in Snap.Restful | |
PrimSplice Int32 Source # | |
Defined in Snap.Restful | |
PrimSplice Int64 Source # | |
Defined in Snap.Restful | |
PrimSplice Integer Source # | |
Defined in Snap.Restful | |
PrimSplice Word8 Source # | |
Defined in Snap.Restful | |
PrimSplice Word16 Source # | |
Defined in Snap.Restful | |
PrimSplice Word32 Source # | |
Defined in Snap.Restful | |
PrimSplice Word64 Source # | |
Defined in Snap.Restful | |
PrimSplice String Source # | |
Defined in Snap.Restful | |
PrimSplice Text Source # | |
Defined in Snap.Restful | |
PrimSplice UTCTime Source # | |
Defined in Snap.Restful | |
PrimSplice Day Source # | |
Defined in Snap.Restful | |
PrimSplice a => PrimSplice (Maybe a) Source # | |
Defined in Snap.Restful |
Functions for generating paths
createPath :: Resource -> Text Source #
Generates the path for creating a resource.
updatePath :: Resource -> DBId -> Text Source #
Generates the path for updating a single resource item.
templatePath :: Resource -> CRUD -> ByteString Source #
Return heist template location for given crud action
Misc helpers
redirToItem :: MonadSnap m => Resource -> DBId -> m a Source #
Redirect to given item's default show page
relativeRedirect :: MonadSnap m => ByteString -> m b Source #
setFormAction :: MonadSnap m => Text -> m a -> m a Source #
Sets the RESTFormAction
param.