-- | 'Strive.Actions.Uploads'
module Strive.Options.Uploads
  ( UploadActivityOptions (..),
  )
where

import Data.Default (Default, def)
import Network.HTTP.Types (QueryLike, toQuery)
import Strive.Enums (ActivityType)

-- | 'Strive.Actions.uploadActivity'
data UploadActivityOptions = UploadActivityOptions
  { UploadActivityOptions -> Maybe ActivityType
uploadActivityOptions_activityType :: Maybe ActivityType,
    UploadActivityOptions -> Maybe String
uploadActivityOptions_name :: Maybe String,
    UploadActivityOptions -> Maybe String
uploadActivityOptions_description :: Maybe String,
    UploadActivityOptions -> Bool
uploadActivityOptions_private :: Bool,
    UploadActivityOptions -> Bool
uploadActivityOptions_trainer :: Bool,
    UploadActivityOptions -> Maybe String
uploadActivityOptions_externalId :: Maybe String
  }
  deriving (Int -> UploadActivityOptions -> ShowS
[UploadActivityOptions] -> ShowS
UploadActivityOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UploadActivityOptions] -> ShowS
$cshowList :: [UploadActivityOptions] -> ShowS
show :: UploadActivityOptions -> String
$cshow :: UploadActivityOptions -> String
showsPrec :: Int -> UploadActivityOptions -> ShowS
$cshowsPrec :: Int -> UploadActivityOptions -> ShowS
Show)

instance Default UploadActivityOptions where
  def :: UploadActivityOptions
def =
    UploadActivityOptions
      { uploadActivityOptions_activityType :: Maybe ActivityType
uploadActivityOptions_activityType = forall a. Maybe a
Nothing,
        uploadActivityOptions_name :: Maybe String
uploadActivityOptions_name = forall a. Maybe a
Nothing,
        uploadActivityOptions_description :: Maybe String
uploadActivityOptions_description = forall a. Maybe a
Nothing,
        uploadActivityOptions_private :: Bool
uploadActivityOptions_private = Bool
False,
        uploadActivityOptions_trainer :: Bool
uploadActivityOptions_trainer = Bool
False,
        uploadActivityOptions_externalId :: Maybe String
uploadActivityOptions_externalId = forall a. Maybe a
Nothing
      }

instance QueryLike UploadActivityOptions where
  toQuery :: UploadActivityOptions -> Query
toQuery UploadActivityOptions
options =
    forall a. QueryLike a => a -> Query
toQuery
      [ (String
"activity_type", forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Show a => a -> String
show (UploadActivityOptions -> Maybe ActivityType
uploadActivityOptions_activityType UploadActivityOptions
options)),
        (String
"name", UploadActivityOptions -> Maybe String
uploadActivityOptions_name UploadActivityOptions
options),
        (String
"description", UploadActivityOptions -> Maybe String
uploadActivityOptions_description UploadActivityOptions
options),
        ( String
"private",
          forall a. a -> Maybe a
Just (forall a. Show a => a -> String
show (forall a. Enum a => a -> Int
fromEnum (UploadActivityOptions -> Bool
uploadActivityOptions_private UploadActivityOptions
options)))
        ),
        ( String
"trainer",
          forall a. a -> Maybe a
Just (forall a. Show a => a -> String
show (forall a. Enum a => a -> Int
fromEnum (UploadActivityOptions -> Bool
uploadActivityOptions_trainer UploadActivityOptions
options)))
        ),
        (String
"external_id", UploadActivityOptions -> Maybe String
uploadActivityOptions_externalId UploadActivityOptions
options)
      ]