{-# 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 -> [GearSummary]
athleteDetailed_bikes :: [GearSummary],
AthleteDetailed -> Text
athleteDetailed_city :: Text,
AthleteDetailed -> [ClubSummary]
athleteDetailed_clubs :: [ClubSummary],
AthleteDetailed -> Text
athleteDetailed_country :: Text,
AthleteDetailed -> UTCTime
athleteDetailed_createdAt :: UTCTime,
AthleteDetailed -> Text
athleteDetailed_datePreference :: Text,
AthleteDetailed -> Text
athleteDetailed_email :: Text,
AthleteDetailed -> Text
athleteDetailed_firstname :: Text,
AthleteDetailed -> Maybe Text
athleteDetailed_follower :: Maybe Text,
AthleteDetailed -> Integer
athleteDetailed_followerCount :: Integer,
AthleteDetailed -> Maybe Text
athleteDetailed_friend :: Maybe Text,
AthleteDetailed -> Integer
athleteDetailed_friendCount :: Integer,
AthleteDetailed -> Maybe Integer
athleteDetailed_ftp :: Maybe Integer,
AthleteDetailed -> Integer
athleteDetailed_id :: Integer,
AthleteDetailed -> Text
athleteDetailed_lastname :: Text,
AthleteDetailed -> MeasurementPreference
athleteDetailed_measurementPreference :: MeasurementPreference,
AthleteDetailed -> Integer
athleteDetailed_mutualFriendCount :: Integer,
AthleteDetailed -> Bool
athleteDetailed_premium :: Bool,
AthleteDetailed -> Text
athleteDetailed_profile :: Text,
AthleteDetailed -> Text
athleteDetailed_profileMedium :: Text,
AthleteDetailed -> ResourceState
athleteDetailed_resourceState :: ResourceState,
AthleteDetailed -> Maybe Gender
athleteDetailed_sex :: Maybe Gender,
AthleteDetailed -> [GearSummary]
athleteDetailed_shoes :: [GearSummary],
AthleteDetailed -> Maybe Text
athleteDetailed_state :: Maybe Text,
AthleteDetailed -> UTCTime
athleteDetailed_updatedAt :: UTCTime,
AthleteDetailed -> Maybe Double
athleteDetailed_weight :: Maybe Double
}
deriving (Int -> AthleteDetailed -> ShowS
[AthleteDetailed] -> ShowS
AthleteDetailed -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AthleteDetailed] -> ShowS
$cshowList :: [AthleteDetailed] -> ShowS
show :: AthleteDetailed -> String
$cshow :: AthleteDetailed -> String
showsPrec :: Int -> AthleteDetailed -> ShowS
$cshowsPrec :: Int -> AthleteDetailed -> ShowS
Show)
$(deriveFromJSON options ''AthleteDetailed)
data AthleteSummary = AthleteSummary
{ AthleteSummary -> Maybe Text
athleteSummary_city :: Maybe Text,
AthleteSummary -> Maybe Text
athleteSummary_country :: Maybe Text,
AthleteSummary -> UTCTime
athleteSummary_createdAt :: UTCTime,
AthleteSummary -> Text
athleteSummary_firstname :: Text,
AthleteSummary -> Maybe Text
athleteSummary_follower :: Maybe Text,
AthleteSummary -> Maybe Text
athleteSummary_friend :: Maybe Text,
AthleteSummary -> Integer
athleteSummary_id :: Integer,
AthleteSummary -> Text
athleteSummary_lastname :: Text,
AthleteSummary -> Bool
athleteSummary_premium :: Bool,
AthleteSummary -> Text
athleteSummary_profile :: Text,
AthleteSummary -> Text
athleteSummary_profileMedium :: Text,
AthleteSummary -> ResourceState
athleteSummary_resourceState :: ResourceState,
AthleteSummary -> Maybe Gender
athleteSummary_sex :: Maybe Gender,
AthleteSummary -> Maybe Text
athleteSummary_state :: Maybe Text,
AthleteSummary -> UTCTime
athleteSummary_updatedAt :: UTCTime
}
deriving (Int -> AthleteSummary -> ShowS
[AthleteSummary] -> ShowS
AthleteSummary -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AthleteSummary] -> ShowS
$cshowList :: [AthleteSummary] -> ShowS
show :: AthleteSummary -> String
$cshow :: AthleteSummary -> String
showsPrec :: Int -> AthleteSummary -> ShowS
$cshowsPrec :: Int -> AthleteSummary -> ShowS
Show)
$(deriveFromJSON options ''AthleteSummary)
data AthleteMeta = AthleteMeta
{ AthleteMeta -> Integer
athleteMeta_id :: Integer,
AthleteMeta -> ResourceState
athleteMeta_resourceState :: ResourceState
}
deriving (Int -> AthleteMeta -> ShowS
[AthleteMeta] -> ShowS
AthleteMeta -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AthleteMeta] -> ShowS
$cshowList :: [AthleteMeta] -> ShowS
show :: AthleteMeta -> String
$cshow :: AthleteMeta -> String
showsPrec :: Int -> AthleteMeta -> ShowS
$cshowsPrec :: Int -> AthleteMeta -> ShowS
Show)
$(deriveFromJSON options ''AthleteMeta)
data ActivityTotals = ActivityTotals
{ ActivityTotals -> Integer
activityTotals_count :: Integer,
ActivityTotals -> Double
activityTotals_distance :: Double,
ActivityTotals -> Double
activityTotals_movingTime :: Double,
ActivityTotals -> Double
activityTotals_elapsedTime :: Double,
ActivityTotals -> Double
activityTotals_elevationGain :: Double,
ActivityTotals -> Double
activityTotals_achievementCount :: Double
}
deriving (Int -> ActivityTotals -> ShowS
[ActivityTotals] -> ShowS
ActivityTotals -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ActivityTotals] -> ShowS
$cshowList :: [ActivityTotals] -> ShowS
show :: ActivityTotals -> String
$cshow :: ActivityTotals -> String
showsPrec :: Int -> ActivityTotals -> ShowS
$cshowsPrec :: Int -> ActivityTotals -> ShowS
Show)
$(deriveFromJSON options ''ActivityTotals)
data AthleteStats = AthleteStats
{ AthleteStats -> Double
athleteStats_biggestRideDistance :: Double,
AthleteStats -> Double
athleteStats_biggestClimbElevationGain :: Double,
AthleteStats -> ActivityTotals
athleteStats_recentRideTotals :: ActivityTotals,
AthleteStats -> ActivityTotals
athleteStats_recentRunTotals :: ActivityTotals,
AthleteStats -> ActivityTotals
athleteStats_ytdRideTotals :: ActivityTotals,
AthleteStats -> ActivityTotals
athleteStats_ytdRunTotals :: ActivityTotals,
AthleteStats -> ActivityTotals
athleteStats_allRideTotals :: ActivityTotals,
AthleteStats -> ActivityTotals
athleteStats_allRunTotals :: ActivityTotals
}
deriving (Int -> AthleteStats -> ShowS
[AthleteStats] -> ShowS
AthleteStats -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AthleteStats] -> ShowS
$cshowList :: [AthleteStats] -> ShowS
show :: AthleteStats -> String
$cshow :: AthleteStats -> String
showsPrec :: Int -> AthleteStats -> ShowS
$cshowsPrec :: Int -> AthleteStats -> ShowS
Show)
$(deriveFromJSON options ''AthleteStats)