packages feed

stratosphere-0.15.2: library-gen/Stratosphere/Resources/RDSDBClusterParameterGroup.hs

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

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

module Stratosphere.Resources.RDSDBClusterParameterGroup where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.Tag

-- | Full data type definition for RDSDBClusterParameterGroup. See
-- 'rdsdbClusterParameterGroup' for a more convenient constructor.
data RDSDBClusterParameterGroup =
  RDSDBClusterParameterGroup
  { _rDSDBClusterParameterGroupDescription :: Val Text
  , _rDSDBClusterParameterGroupFamily :: Val Text
  , _rDSDBClusterParameterGroupParameters :: Object
  , _rDSDBClusterParameterGroupTags :: Maybe [Tag]
  } deriving (Show, Eq)

instance ToJSON RDSDBClusterParameterGroup where
  toJSON RDSDBClusterParameterGroup{..} =
    object $
    catMaybes
    [ (Just . ("Description",) . toJSON) _rDSDBClusterParameterGroupDescription
    , (Just . ("Family",) . toJSON) _rDSDBClusterParameterGroupFamily
    , (Just . ("Parameters",) . toJSON) _rDSDBClusterParameterGroupParameters
    , fmap (("Tags",) . toJSON) _rDSDBClusterParameterGroupTags
    ]

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

-- | Constructor for 'RDSDBClusterParameterGroup' containing required fields
-- as arguments.
rdsdbClusterParameterGroup
  :: Val Text -- ^ 'rdsdbcpgDescription'
  -> Val Text -- ^ 'rdsdbcpgFamily'
  -> Object -- ^ 'rdsdbcpgParameters'
  -> RDSDBClusterParameterGroup
rdsdbClusterParameterGroup descriptionarg familyarg parametersarg =
  RDSDBClusterParameterGroup
  { _rDSDBClusterParameterGroupDescription = descriptionarg
  , _rDSDBClusterParameterGroupFamily = familyarg
  , _rDSDBClusterParameterGroupParameters = parametersarg
  , _rDSDBClusterParameterGroupTags = Nothing
  }

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

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

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

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