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