{-# LANGUAGE TemplateHaskell #-} -- | module Strive.Types.Athletes ( AthleteDetailed (..), AthleteSummary (..), AthleteMeta (..), ActivityTotals (..), AthleteStats (..), ) where import Data.Aeson.TH (deriveFromJSON) import Data.Text (Text) import Data.Time.Clock (UTCTime) import Strive.Enums (Gender, MeasurementPreference, ResourceState) import Strive.Internal.TH (options) import Strive.Types.Clubs (ClubSummary) import Strive.Types.Gear (GearSummary) -- | data AthleteDetailed = AthleteDetailed { athleteDetailed_bikes :: [GearSummary], athleteDetailed_city :: Text, athleteDetailed_clubs :: [ClubSummary], athleteDetailed_country :: Text, athleteDetailed_createdAt :: UTCTime, athleteDetailed_datePreference :: Text, athleteDetailed_email :: Text, athleteDetailed_firstname :: Text, athleteDetailed_follower :: Maybe Text, athleteDetailed_followerCount :: Integer, athleteDetailed_friend :: Maybe Text, athleteDetailed_friendCount :: Integer, athleteDetailed_ftp :: Maybe Integer, athleteDetailed_id :: Integer, athleteDetailed_lastname :: Text, athleteDetailed_measurementPreference :: MeasurementPreference, athleteDetailed_mutualFriendCount :: Integer, athleteDetailed_premium :: Bool, athleteDetailed_profile :: Text, athleteDetailed_profileMedium :: Text, athleteDetailed_resourceState :: ResourceState, athleteDetailed_sex :: Maybe Gender, athleteDetailed_shoes :: [GearSummary], athleteDetailed_state :: Maybe Text, athleteDetailed_updatedAt :: UTCTime, athleteDetailed_weight :: Maybe Double } deriving (Show) $(deriveFromJSON options ''AthleteDetailed) -- | data AthleteSummary = AthleteSummary { athleteSummary_city :: Maybe Text, athleteSummary_country :: Maybe Text, athleteSummary_createdAt :: UTCTime, athleteSummary_firstname :: Text, athleteSummary_follower :: Maybe Text, athleteSummary_friend :: Maybe Text, athleteSummary_id :: Integer, athleteSummary_lastname :: Text, athleteSummary_premium :: Bool, athleteSummary_profile :: Text, athleteSummary_profileMedium :: Text, athleteSummary_resourceState :: ResourceState, athleteSummary_sex :: Maybe Gender, athleteSummary_state :: Maybe Text, athleteSummary_updatedAt :: UTCTime } deriving (Show) $(deriveFromJSON options ''AthleteSummary) -- | data AthleteMeta = AthleteMeta { athleteMeta_id :: Integer, athleteMeta_resourceState :: ResourceState } deriving (Show) $(deriveFromJSON options ''AthleteMeta) -- | data ActivityTotals = ActivityTotals { activityTotals_count :: Integer, activityTotals_distance :: Double, activityTotals_movingTime :: Double, activityTotals_elapsedTime :: Double, activityTotals_elevationGain :: Double, activityTotals_achievementCount :: Double } deriving (Show) $(deriveFromJSON options ''ActivityTotals) -- | data AthleteStats = AthleteStats { athleteStats_biggestRideDistance :: Double, athleteStats_biggestClimbElevationGain :: Double, athleteStats_recentRideTotals :: ActivityTotals, athleteStats_recentRunTotals :: ActivityTotals, athleteStats_ytdRideTotals :: ActivityTotals, athleteStats_ytdRunTotals :: ActivityTotals, athleteStats_allRideTotals :: ActivityTotals, athleteStats_allRunTotals :: ActivityTotals } deriving (Show) $(deriveFromJSON options ''AthleteStats)