{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
module HTTP.LanguageAPI
(
LangsApi,
languageServer
) where
import ClassyPrelude (map, return, ($))
import Control.Monad.IO.Class (liftIO)
import Database.Base (runSQLAction)
import Database.Entity (Language)
import Database.Esqueleto (entityVal)
import Database.Language (listLangs)
import Servant.API
import Servant.Server
type LangsApi = "langs" :>
( Get '[JSON] [Language]
)
languageServer :: Server LangsApi
languageServer = fetchLanguagesHandler
fetchLanguagesHandler :: Handler [Language]
fetchLanguagesHandler = do
langs <- liftIO $ runSQLAction listLangs
return (map entityVal langs)