{-# LANGUAGE DeriveGeneric #-}

-- | Provides the 'User' type
--
-- Generally instantiated by 'Web.ExtraLife.API.userInfo'
module Web.ExtraLife.User where

import Prelude
import Data.Time    as Time
import Data.Text             (Text)
import GHC.Generics          (Generic)

import Data.Aeson   as Aeson

-- | Represents a user's information
data User = User
    { User -> Text
displayName     :: !Text
    , User -> Float
fundraisingGoal :: Float
    , User -> Int
participantID   :: Int
    , User -> Text
eventName       :: Text
    , User -> String
avatarImageURL  :: !String
    , User -> UTCTime
createdDateUTC  :: !Time.UTCTime
    , User -> Float
sumDonations    :: Float
    , User -> Int
numDonations    :: Int
    } deriving ( Int -> User -> ShowS
[User] -> ShowS
User -> String
(Int -> User -> ShowS)
-> (User -> String) -> ([User] -> ShowS) -> Show User
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [User] -> ShowS
$cshowList :: [User] -> ShowS
show :: User -> String
$cshow :: User -> String
showsPrec :: Int -> User -> ShowS
$cshowsPrec :: Int -> User -> ShowS
Show, (forall x. User -> Rep User x)
-> (forall x. Rep User x -> User) -> Generic User
forall x. Rep User x -> User
forall x. User -> Rep User x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep User x -> User
$cfrom :: forall x. User -> Rep User x
Generic )
instance FromJSON User
instance ToJSON User