{-# LANGUAGE DeriveGeneric #-} module Types where import Data.Text import GHC.Generics import Data.Time (Day) import Data.Aeson import Control.Exception.Safe type Address = Text data When = Now | On Day deriving Show data GeoCoords = GeoCoords { lat :: Text, lon :: Text } deriving (Show, Generic) instance FromJSON GeoCoords data SunTimes dt = SunTimes { sunrise :: dt, sunset :: dt } deriving (Show, Generic) instance FromJSON dt => FromJSON (SunTimes dt) data WebAPIAuth = WebAPIAuth { timeZoneDBkey :: Text, email :: Text, agent :: Text} deriving (Generic, Show) instance FromJSON WebAPIAuth