packages feed

servant-auth-token-0.4.7.1: example/acid/src/Config.hs

module Config(
    ServerConfig(..)
  , readConfig
  ) where

import Control.Monad
import Control.Monad.IO.Class
import Data.Aeson
import Data.Text
import Data.Yaml.Config

-- | Startup configuration of server
data ServerConfig = ServerConfig {
  -- | Server host name
  serverHost   :: !Text
  -- | Server port number
, serverPort   :: !Int
  -- | Server db location
, serverDbPath :: !Text
}

instance FromJSON ServerConfig where
  parseJSON (Object o) = ServerConfig
    <$> o .: "host"
    <*> o .: "port"
    <*> o .: "db"
  parseJSON _ = mzero

readConfig :: MonadIO m => FilePath -> m ServerConfig
readConfig f = liftIO $ loadYamlSettings [f] [] useEnv