twfy-api-client-0.1.0.0: src/Twfy/Data/Constituency.hs
{-|
Module : Twfy.Data.Constituency
Description : Constituency data types
Constituency data types
-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
module Twfy.Data.Constituency
(
Constituency(..)
)
where
import GHC.Generics
import Data.Aeson.TH
import Data.Maybe (catMaybes)
import qualified Data.Text as T
import Twfy.Util.Json (recordNameToJsonName)
-- | Constituency Data
data Constituency = Constiutency {
-- | Constituency name
consituencyName :: T.Text
-- | BBC ID for constituency. Arrives as text but appears to be integer
, constituencyBbcConstituencyId :: Maybe T.Text
-- | Guardian ID for constituency. Arrives as text but appears to be integer
, constituencyGuardianId :: Maybe T.Text
-- | Guardian name for constituency
, constituencyGuardianName :: Maybe T.Text
-- | Guardian election results URL
, constituencyGuardianElectionResults :: Maybe T.Text
-- | TOOD: find out what this is. Arrives as text but appears to be integer.
, constituencyPaId :: Maybe T.Text
}
deriving (Generic)
$(deriveJSON defaultOptions { fieldLabelModifier = recordNameToJsonName } ''Constituency)
instance Show Constituency where
-- | Convert a constituency to a String
show c = let name = Just $ consituencyName c
bbc = fmap (mappend "bbc_id: ") $ constituencyBbcConstituencyId c
guardian_id = fmap (mappend "guardian_id: ") $ constituencyGuardianId c
guardian_name = fmap (mappend "guardian_name: ") $ constituencyGuardianName c
parts = catMaybes [ name, bbc, guardian_id, guardian_name ]
in show $ T.intercalate " - " parts