-- | '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)
    ]