packages feed

stratosphere-0.30.0: library-gen/Stratosphere/Resources/DocDBDBClusterParameterGroup.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-docdb-dbclusterparametergroup.html

module Stratosphere.Resources.DocDBDBClusterParameterGroup where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.Tag

-- | Full data type definition for DocDBDBClusterParameterGroup. See
-- 'docDBDBClusterParameterGroup' for a more convenient constructor.
data DocDBDBClusterParameterGroup =
  DocDBDBClusterParameterGroup
  { _docDBDBClusterParameterGroupDescription :: Val Text
  , _docDBDBClusterParameterGroupFamily :: Val Text
  , _docDBDBClusterParameterGroupName :: Maybe (Val Text)
  , _docDBDBClusterParameterGroupParameters :: Object
  , _docDBDBClusterParameterGroupTags :: Maybe [Tag]
  } deriving (Show, Eq)

instance ToJSON DocDBDBClusterParameterGroup where
  toJSON DocDBDBClusterParameterGroup{..} =
    object $
    catMaybes
    [ (Just . ("Description",) . toJSON) _docDBDBClusterParameterGroupDescription
    , (Just . ("Family",) . toJSON) _docDBDBClusterParameterGroupFamily
    , fmap (("Name",) . toJSON) _docDBDBClusterParameterGroupName
    , (Just . ("Parameters",) . toJSON) _docDBDBClusterParameterGroupParameters
    , fmap (("Tags",) . toJSON) _docDBDBClusterParameterGroupTags
    ]

instance FromJSON DocDBDBClusterParameterGroup where
  parseJSON (Object obj) =
    DocDBDBClusterParameterGroup <$>
      (obj .: "Description") <*>
      (obj .: "Family") <*>
      (obj .:? "Name") <*>
      (obj .: "Parameters") <*>
      (obj .:? "Tags")
  parseJSON _ = mempty

-- | Constructor for 'DocDBDBClusterParameterGroup' containing required fields
-- as arguments.
docDBDBClusterParameterGroup
  :: Val Text -- ^ 'ddbdbcpgDescription'
  -> Val Text -- ^ 'ddbdbcpgFamily'
  -> Object -- ^ 'ddbdbcpgParameters'
  -> DocDBDBClusterParameterGroup
docDBDBClusterParameterGroup descriptionarg familyarg parametersarg =
  DocDBDBClusterParameterGroup
  { _docDBDBClusterParameterGroupDescription = descriptionarg
  , _docDBDBClusterParameterGroupFamily = familyarg
  , _docDBDBClusterParameterGroupName = Nothing
  , _docDBDBClusterParameterGroupParameters = parametersarg
  , _docDBDBClusterParameterGroupTags = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-docdb-dbclusterparametergroup.html#cfn-docdb-dbclusterparametergroup-description
ddbdbcpgDescription :: Lens' DocDBDBClusterParameterGroup (Val Text)
ddbdbcpgDescription = lens _docDBDBClusterParameterGroupDescription (\s a -> s { _docDBDBClusterParameterGroupDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-docdb-dbclusterparametergroup.html#cfn-docdb-dbclusterparametergroup-family
ddbdbcpgFamily :: Lens' DocDBDBClusterParameterGroup (Val Text)
ddbdbcpgFamily = lens _docDBDBClusterParameterGroupFamily (\s a -> s { _docDBDBClusterParameterGroupFamily = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-docdb-dbclusterparametergroup.html#cfn-docdb-dbclusterparametergroup-name
ddbdbcpgName :: Lens' DocDBDBClusterParameterGroup (Maybe (Val Text))
ddbdbcpgName = lens _docDBDBClusterParameterGroupName (\s a -> s { _docDBDBClusterParameterGroupName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-docdb-dbclusterparametergroup.html#cfn-docdb-dbclusterparametergroup-parameters
ddbdbcpgParameters :: Lens' DocDBDBClusterParameterGroup Object
ddbdbcpgParameters = lens _docDBDBClusterParameterGroupParameters (\s a -> s { _docDBDBClusterParameterGroupParameters = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-docdb-dbclusterparametergroup.html#cfn-docdb-dbclusterparametergroup-tags
ddbdbcpgTags :: Lens' DocDBDBClusterParameterGroup (Maybe [Tag])
ddbdbcpgTags = lens _docDBDBClusterParameterGroupTags (\s a -> s { _docDBDBClusterParameterGroupTags = a })