packages feed

stratosphere-0.37.0: library-gen/Stratosphere/Resources/GreengrassResourceDefinition.hs

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

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

module Stratosphere.Resources.GreengrassResourceDefinition where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceDefinitionVersion

-- | Full data type definition for GreengrassResourceDefinition. See
-- 'greengrassResourceDefinition' for a more convenient constructor.
data GreengrassResourceDefinition =
  GreengrassResourceDefinition
  { _greengrassResourceDefinitionInitialVersion :: Maybe GreengrassResourceDefinitionResourceDefinitionVersion
  , _greengrassResourceDefinitionName :: Val Text
  } deriving (Show, Eq)

instance ToResourceProperties GreengrassResourceDefinition where
  toResourceProperties GreengrassResourceDefinition{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::Greengrass::ResourceDefinition"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("InitialVersion",) . toJSON) _greengrassResourceDefinitionInitialVersion
        , (Just . ("Name",) . toJSON) _greengrassResourceDefinitionName
        ]
    }

-- | Constructor for 'GreengrassResourceDefinition' containing required fields
-- as arguments.
greengrassResourceDefinition
  :: Val Text -- ^ 'grdName'
  -> GreengrassResourceDefinition
greengrassResourceDefinition namearg =
  GreengrassResourceDefinition
  { _greengrassResourceDefinitionInitialVersion = Nothing
  , _greengrassResourceDefinitionName = namearg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-resourcedefinition.html#cfn-greengrass-resourcedefinition-initialversion
grdInitialVersion :: Lens' GreengrassResourceDefinition (Maybe GreengrassResourceDefinitionResourceDefinitionVersion)
grdInitialVersion = lens _greengrassResourceDefinitionInitialVersion (\s a -> s { _greengrassResourceDefinitionInitialVersion = a })

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