yam-web-0.3.2: demo/Main.hs
module Main where
import Yam.Logger
import Yam.Transaction
import Yam.Web
import Control.Exception (throw)
import Data.Text (Text, pack)
import Servant
type UserApi
= "users" :> Get '[JSON] Text
:<|> "users" :> "error" :> Get '[JSON] Text
:<|> "users" :> "servant" :> Get '[JSON] Text
:<|> "users" :> "db" :> Get '[JSON] Text
userService :: Yam Text
userService = do
(r,_) <- ask
errorLn $ "Hello: " <> toLogStr (show r)
return "Hello"
errorService :: Yam Text
errorService = error "No"
servantService :: Yam Text
servantService = throw err401
dbService :: Yam Text
dbService = do
str <- runDb $ do
time <- selectNow
let timeStr = pack $ show time
warnLn timeStr
return timeStr
infoLn str
return str
main :: IO ()
main = do
ys <- defaultYamSettings
logger (loggers ys) INFO (toLogStr (show ys) <> "\n")
runServer ys (Proxy :: Proxy UserApi) (userService :<|> errorService :<|> servantService :<|> dbService)