packages feed

stratosphere-0.42.0: library-gen/Stratosphere/Resources/GreengrassLoggerDefinition.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-loggerdefinition.html

module Stratosphere.Resources.GreengrassLoggerDefinition where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.GreengrassLoggerDefinitionLoggerDefinitionVersion

-- | Full data type definition for GreengrassLoggerDefinition. See
-- 'greengrassLoggerDefinition' for a more convenient constructor.
data GreengrassLoggerDefinition =
  GreengrassLoggerDefinition
  { _greengrassLoggerDefinitionInitialVersion :: Maybe GreengrassLoggerDefinitionLoggerDefinitionVersion
  , _greengrassLoggerDefinitionName :: Val Text
  , _greengrassLoggerDefinitionTags :: Maybe Object
  } deriving (Show, Eq)

instance ToResourceProperties GreengrassLoggerDefinition where
  toResourceProperties GreengrassLoggerDefinition{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::Greengrass::LoggerDefinition"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("InitialVersion",) . toJSON) _greengrassLoggerDefinitionInitialVersion
        , (Just . ("Name",) . toJSON) _greengrassLoggerDefinitionName
        , fmap (("Tags",) . toJSON) _greengrassLoggerDefinitionTags
        ]
    }

-- | Constructor for 'GreengrassLoggerDefinition' containing required fields
-- as arguments.
greengrassLoggerDefinition
  :: Val Text -- ^ 'gldName'
  -> GreengrassLoggerDefinition
greengrassLoggerDefinition namearg =
  GreengrassLoggerDefinition
  { _greengrassLoggerDefinitionInitialVersion = Nothing
  , _greengrassLoggerDefinitionName = namearg
  , _greengrassLoggerDefinitionTags = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-loggerdefinition.html#cfn-greengrass-loggerdefinition-initialversion
gldInitialVersion :: Lens' GreengrassLoggerDefinition (Maybe GreengrassLoggerDefinitionLoggerDefinitionVersion)
gldInitialVersion = lens _greengrassLoggerDefinitionInitialVersion (\s a -> s { _greengrassLoggerDefinitionInitialVersion = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-loggerdefinition.html#cfn-greengrass-loggerdefinition-name
gldName :: Lens' GreengrassLoggerDefinition (Val Text)
gldName = lens _greengrassLoggerDefinitionName (\s a -> s { _greengrassLoggerDefinitionName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-loggerdefinition.html#cfn-greengrass-loggerdefinition-tags
gldTags :: Lens' GreengrassLoggerDefinition (Maybe Object)
gldTags = lens _greengrassLoggerDefinitionTags (\s a -> s { _greengrassLoggerDefinitionTags = a })