{-# 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 :: 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 :: 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)