chakra-0.1.1: src/Chakra.hs
{-# OPTIONS_HADDOCK prune #-}
{-# LANGUAGE Trustworthy #-}
{-|
This module re-exports all functionality of this package for easy use.
Users expected to import this module only.
__Examples:__
@
__import__ "Chakra"
@
== Getting started
To create a bare minimum API service all you need is below:
@
\#!\/usr\/bin\/env stack
\{\- stack --resolver lts-14.27 runghc --package chakra \-\}
\{\-\# LANGUAGE NoImplicitPrelude, OverloadedStrings, UnicodeSyntax, DataKinds, TypeOperators \#\-\}
import RIO
import Chakra
import Servant
type HelloRoute = "hello" :> QueryParam "name" Text :> Get '[PlainText] Text
type API = HelloRoute :<|> EmptyAPI
hello :: Maybe Text -> BasicApp Text
hello name = do
let name' = fromMaybe "Sensei!" name
logInfo $ "Saying hello to " <> display name'
return $ "Hello " <> name' <> "!"
main :: IO ()
main = do
let infoDetail = InfoDetail "example" "dev" "0.1" "change me"
appEnv = appEnvironment infoDetail
appVer = appVersion infoDetail
appAPI = Proxy :: Proxy API
appServer = hello :<|> emptyServer
logFunc <- buildLogger appEnv appVer
middlewares <- chakraMiddlewares infoDetail
runChakraAppWithMetrics
middlewares
EmptyContext
(logFunc, infoDetail)
appAPI
appServer
@
-}
module Chakra
(
-- $main
module Chakra.App,
-- $config
module Chakra.Config,
-- $jwt
module Chakra.JWT,
-- $logging
module Chakra.Logging,
-- $types
module Chakra.Types,
-- $util
module Chakra.Util,
module Chakra,
)
where
import Chakra.App
import Chakra.Config
import Chakra.JWT
import Chakra.Logging
import Chakra.Types
import Chakra.Util
import RIO
-- | Basic application context, mostly used in examples.
-- For real life you need to create one for your application
type BasicAppCtx = (ModLogger, InfoDetail)
-- | Nice type synonym to mark your servant handlers
-- For real life you need to create one for your application
type BasicApp = RIO BasicAppCtx
{- $codec
Main App functionalities
-}
{- $config
Configuration reading from ENV utility functions
-}
{- $logging
Logging related functionalities
-}
{- $jwt
JWT based authentication functionalities
-}
{- $types
Package defined Types
-}
{- $util
Assorted conventient functions
-}