{-# LANGUAGE TemplateHaskell #-}

-- | <http://strava.github.io/api/v3/clubs/>
module Strive.Types.Clubs
  ( ClubDetailed (..)
  , ClubSummary (..)
  ) where

import Data.Aeson.TH (deriveFromJSON)
import Data.Text (Text)
import Strive.Enums (ClubType, ResourceState, SportType)
import Strive.Internal.TH (options)

-- | <http://strava.github.io/api/v3/clubs/#detailed>
data ClubDetailed = ClubDetailed
  { ClubDetailed -> Text
clubDetailed_city          :: Text
  , ClubDetailed -> ClubType
clubDetailed_clubType      :: ClubType
  , ClubDetailed -> Text
clubDetailed_country       :: Text
  , ClubDetailed -> Text
clubDetailed_description   :: Text
  , ClubDetailed -> Integer
clubDetailed_id            :: Integer
  , ClubDetailed -> Integer
clubDetailed_memberCount   :: Integer
  , ClubDetailed -> Text
clubDetailed_name          :: Text
  , ClubDetailed -> Bool
clubDetailed_private       :: Bool
  , ClubDetailed -> Text
clubDetailed_profile       :: Text
  , ClubDetailed -> Text
clubDetailed_profileMedium :: Text
  , ClubDetailed -> ResourceState
clubDetailed_resourceState :: ResourceState
  , ClubDetailed -> SportType
clubDetailed_sportType     :: SportType
  , ClubDetailed -> Text
clubDetailed_state         :: Text
  } deriving Int -> ClubDetailed -> ShowS
[ClubDetailed] -> ShowS
ClubDetailed -> String
(Int -> ClubDetailed -> ShowS)
-> (ClubDetailed -> String)
-> ([ClubDetailed] -> ShowS)
-> Show ClubDetailed
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ClubDetailed] -> ShowS
$cshowList :: [ClubDetailed] -> ShowS
show :: ClubDetailed -> String
$cshow :: ClubDetailed -> String
showsPrec :: Int -> ClubDetailed -> ShowS
$cshowsPrec :: Int -> ClubDetailed -> ShowS
Show

$(deriveFromJSON options ''ClubDetailed)

-- | <http://strava.github.io/api/v3/clubs/#summary>
data ClubSummary = ClubSummary
  { ClubSummary -> Integer
clubSummary_id            :: Integer
  , ClubSummary -> Text
clubSummary_name          :: Text
  , ClubSummary -> Text
clubSummary_profile       :: Text
  , ClubSummary -> Text
clubSummary_profileMedium :: Text
  , ClubSummary -> ResourceState
clubSummary_resourceState :: ResourceState
  } deriving Int -> ClubSummary -> ShowS
[ClubSummary] -> ShowS
ClubSummary -> String
(Int -> ClubSummary -> ShowS)
-> (ClubSummary -> String)
-> ([ClubSummary] -> ShowS)
-> Show ClubSummary
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ClubSummary] -> ShowS
$cshowList :: [ClubSummary] -> ShowS
show :: ClubSummary -> String
$cshow :: ClubSummary -> String
showsPrec :: Int -> ClubSummary -> ShowS
$cshowsPrec :: Int -> ClubSummary -> ShowS
Show

$(deriveFromJSON options ''ClubSummary)