Skip to content
Snippets Groups Projects
Lib.hs 713 B
Newer Older
  • Learn to ignore specific revisions
  • {-# LANGUAGE DataKinds       #-}
    {-# LANGUAGE TemplateHaskell #-}
    {-# LANGUAGE TypeOperators   #-}
    module Lib
        ( startApp
        , app
        ) where
    
    import Data.Aeson
    import Data.Aeson.TH
    import Network.Wai
    import Network.Wai.Handler.Warp
    import Servant
    
    data User = User
      { userId        :: Int
      , userFirstName :: String
      , userLastName  :: String
      } deriving (Eq, Show)
    
    $(deriveJSON defaultOptions ''User)
    
    type API = "users" :> Get '[JSON] [User]
    
    startApp :: IO ()
    startApp = run 8080 app
    
    app :: Application
    app = serve api server
    
    api :: Proxy API
    api = Proxy
    
    server :: Server API
    server = return users
    
    users :: [User]
    users = [ User 1 "Isaac" "Newton"
            , User 2 "Albert" "Einstein"
            ]