packages feed

stratosphere-0.32.0: library-gen/Stratosphere/Resources/AmazonMQConfiguration.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html

module Stratosphere.Resources.AmazonMQConfiguration where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AmazonMQConfigurationTagsEntry

-- | Full data type definition for AmazonMQConfiguration. See
-- 'amazonMQConfiguration' for a more convenient constructor.
data AmazonMQConfiguration =
  AmazonMQConfiguration
  { _amazonMQConfigurationData :: Val Text
  , _amazonMQConfigurationDescription :: Maybe (Val Text)
  , _amazonMQConfigurationEngineType :: Val Text
  , _amazonMQConfigurationEngineVersion :: Val Text
  , _amazonMQConfigurationName :: Val Text
  , _amazonMQConfigurationTags :: Maybe [AmazonMQConfigurationTagsEntry]
  } deriving (Show, Eq)

instance ToJSON AmazonMQConfiguration where
  toJSON AmazonMQConfiguration{..} =
    object $
    catMaybes
    [ (Just . ("Data",) . toJSON) _amazonMQConfigurationData
    , fmap (("Description",) . toJSON) _amazonMQConfigurationDescription
    , (Just . ("EngineType",) . toJSON) _amazonMQConfigurationEngineType
    , (Just . ("EngineVersion",) . toJSON) _amazonMQConfigurationEngineVersion
    , (Just . ("Name",) . toJSON) _amazonMQConfigurationName
    , fmap (("Tags",) . toJSON) _amazonMQConfigurationTags
    ]

-- | Constructor for 'AmazonMQConfiguration' containing required fields as
-- arguments.
amazonMQConfiguration
  :: Val Text -- ^ 'amqcData'
  -> Val Text -- ^ 'amqcEngineType'
  -> Val Text -- ^ 'amqcEngineVersion'
  -> Val Text -- ^ 'amqcName'
  -> AmazonMQConfiguration
amazonMQConfiguration dataarg engineTypearg engineVersionarg namearg =
  AmazonMQConfiguration
  { _amazonMQConfigurationData = dataarg
  , _amazonMQConfigurationDescription = Nothing
  , _amazonMQConfigurationEngineType = engineTypearg
  , _amazonMQConfigurationEngineVersion = engineVersionarg
  , _amazonMQConfigurationName = namearg
  , _amazonMQConfigurationTags = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-data
amqcData :: Lens' AmazonMQConfiguration (Val Text)
amqcData = lens _amazonMQConfigurationData (\s a -> s { _amazonMQConfigurationData = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-description
amqcDescription :: Lens' AmazonMQConfiguration (Maybe (Val Text))
amqcDescription = lens _amazonMQConfigurationDescription (\s a -> s { _amazonMQConfigurationDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-enginetype
amqcEngineType :: Lens' AmazonMQConfiguration (Val Text)
amqcEngineType = lens _amazonMQConfigurationEngineType (\s a -> s { _amazonMQConfigurationEngineType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-engineversion
amqcEngineVersion :: Lens' AmazonMQConfiguration (Val Text)
amqcEngineVersion = lens _amazonMQConfigurationEngineVersion (\s a -> s { _amazonMQConfigurationEngineVersion = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-name
amqcName :: Lens' AmazonMQConfiguration (Val Text)
amqcName = lens _amazonMQConfigurationName (\s a -> s { _amazonMQConfigurationName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-tags
amqcTags :: Lens' AmazonMQConfiguration (Maybe [AmazonMQConfigurationTagsEntry])
amqcTags = lens _amazonMQConfigurationTags (\s a -> s { _amazonMQConfigurationTags = a })