{-# LANGUAGE OverloadedStrings #-}
module Yam.Config where

import           Data.Aeson
import           Data.Default
import           Data.Text
import           Yam.DataSource
import           Yam.Web.Swagger

data YamConfig = YamConfig
  { datasource :: DataSourceConfig
  , swagger    :: SwaggerConfig
  , appName    :: Text
  , port       :: Int
  } deriving (Eq, Show)

instance FromJSON YamConfig where
  parseJSON = withObject "YamConfig" $ \v -> YamConfig
    <$> v .:  "datasource"
    <*> v .:? "swagger" .!= def
    <*> v .:  "application"
    <*> v .:? "port" .!= 8888