Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
To server class
Synopsis
- (/.) :: ToServer a => Path -> a -> Server (MonadOf a)
- class ToServer a where
- class Monad m => HasServer m where
- type ServerResult m :: Type
- renderServer :: Server m -> ServerResult m
- hoistServer :: (forall a. m a -> n a) -> Server m -> Server n
- fromReader :: env -> Server (ReaderT env IO) -> Server IO
- fromReaderExcept :: forall env. env -> Server (ReaderT env (ExceptT Text IO)) -> Server IO
Documentation
(/.) :: ToServer a => Path -> a -> Server (MonadOf a) infixr 4 Source #
Constructs server which can handle given path. Example:
"api/v1/get/info" /. handleInfo
For captures we use wild-cards:
"api/v1/get/info/*" /. handleInfo
And handle info has capture argument:
handleInfo :: Capture "nameA" -> Get IO (Resp Json value)
The name for the capture is derived from the type signature of the route handler. Note that if capture is in the last position of the path we can omit wild cards. The proper amount of captures will be derived from the type signature of the handler.
class ToServer a where Source #
Values that can be converted to server
class Monad m => HasServer m where Source #
Class contains types which can be converted to IO-based server to run as with WAI-interface.
We can run plain IO-servers and ReaderT over IO based servers. Readers can be wrapped in newtypes.
In that case we can derive automatically HasServer
instance.
type ServerResult m :: Type Source #
renderServer :: Server m -> ServerResult m Source #
Instances
HasServer IO Source # | |
Defined in Mig.Core.Class.Server type ServerResult IO Source # renderServer :: Server IO -> ServerResult IO Source # | |
HasServer (ReaderT env IO) Source # | |
Defined in Mig.Core.Class.Server type ServerResult (ReaderT env IO) Source # renderServer :: Server (ReaderT env IO) -> ServerResult (ReaderT env IO) Source # | |
HasServer (ReaderT env (ExceptT Text IO)) Source # | |
hoistServer :: (forall a. m a -> n a) -> Server m -> Server n Source #
Map internal monad of the server