{-# LANGUAGE TemplateHaskell #-}

-- | <http://strava.github.io/api/v3/photos/>
module Strive.Types.Photos
  ( PhotoSummary (..),
  )
where

import Data.Aeson.TH (deriveFromJSON)
import Data.Text (Text)
import Data.Time.Clock (UTCTime)
import Strive.Enums (PhotoType, ResourceState)
import Strive.Internal.TH (options)

-- | <http://strava.github.io/api/v3/photos/#summary-and-detailed-representation-attributes>
data PhotoSummary = PhotoSummary
  { PhotoSummary -> Integer
photoSummary_activityId :: Integer,
    PhotoSummary -> Text
photoSummary_caption :: Text,
    PhotoSummary -> UTCTime
photoSummary_createdAt :: UTCTime,
    PhotoSummary -> Integer
photoSummary_id :: Integer,
    PhotoSummary -> Maybe (Double, Double)
photoSummary_location :: Maybe (Double, Double),
    PhotoSummary -> Text
photoSummary_ref :: Text,
    PhotoSummary -> ResourceState
photoSummary_resourceState :: ResourceState,
    PhotoSummary -> PhotoType
photoSummary_type :: PhotoType,
    PhotoSummary -> Text
photoSummary_uid :: Text,
    PhotoSummary -> UTCTime
photoSummary_uploadedAt :: UTCTime
  }
  deriving (Int -> PhotoSummary -> ShowS
[PhotoSummary] -> ShowS
PhotoSummary -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PhotoSummary] -> ShowS
$cshowList :: [PhotoSummary] -> ShowS
show :: PhotoSummary -> String
$cshow :: PhotoSummary -> String
showsPrec :: Int -> PhotoSummary -> ShowS
$cshowsPrec :: Int -> PhotoSummary -> ShowS
Show)

$(deriveFromJSON options ''PhotoSummary)