packages feed

stratosphere-0.47.0: library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyPolicyDetails.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html

module Stratosphere.ResourceProperties.DLMLifecyclePolicyPolicyDetails where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.DLMLifecyclePolicyParameters
import Stratosphere.ResourceProperties.DLMLifecyclePolicySchedule
import Stratosphere.ResourceProperties.Tag

-- | Full data type definition for DLMLifecyclePolicyPolicyDetails. See
-- 'dlmLifecyclePolicyPolicyDetails' for a more convenient constructor.
data DLMLifecyclePolicyPolicyDetails =
  DLMLifecyclePolicyPolicyDetails
  { _dLMLifecyclePolicyPolicyDetailsParameters :: Maybe DLMLifecyclePolicyParameters
  , _dLMLifecyclePolicyPolicyDetailsPolicyType :: Maybe (Val Text)
  , _dLMLifecyclePolicyPolicyDetailsResourceTypes :: ValList Text
  , _dLMLifecyclePolicyPolicyDetailsSchedules :: [DLMLifecyclePolicySchedule]
  , _dLMLifecyclePolicyPolicyDetailsTargetTags :: [Tag]
  } deriving (Show, Eq)

instance ToJSON DLMLifecyclePolicyPolicyDetails where
  toJSON DLMLifecyclePolicyPolicyDetails{..} =
    object $
    catMaybes
    [ fmap (("Parameters",) . toJSON) _dLMLifecyclePolicyPolicyDetailsParameters
    , fmap (("PolicyType",) . toJSON) _dLMLifecyclePolicyPolicyDetailsPolicyType
    , (Just . ("ResourceTypes",) . toJSON) _dLMLifecyclePolicyPolicyDetailsResourceTypes
    , (Just . ("Schedules",) . toJSON) _dLMLifecyclePolicyPolicyDetailsSchedules
    , (Just . ("TargetTags",) . toJSON) _dLMLifecyclePolicyPolicyDetailsTargetTags
    ]

-- | Constructor for 'DLMLifecyclePolicyPolicyDetails' containing required
-- fields as arguments.
dlmLifecyclePolicyPolicyDetails
  :: ValList Text -- ^ 'dlmlppdResourceTypes'
  -> [DLMLifecyclePolicySchedule] -- ^ 'dlmlppdSchedules'
  -> [Tag] -- ^ 'dlmlppdTargetTags'
  -> DLMLifecyclePolicyPolicyDetails
dlmLifecyclePolicyPolicyDetails resourceTypesarg schedulesarg targetTagsarg =
  DLMLifecyclePolicyPolicyDetails
  { _dLMLifecyclePolicyPolicyDetailsParameters = Nothing
  , _dLMLifecyclePolicyPolicyDetailsPolicyType = Nothing
  , _dLMLifecyclePolicyPolicyDetailsResourceTypes = resourceTypesarg
  , _dLMLifecyclePolicyPolicyDetailsSchedules = schedulesarg
  , _dLMLifecyclePolicyPolicyDetailsTargetTags = targetTagsarg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-parameters
dlmlppdParameters :: Lens' DLMLifecyclePolicyPolicyDetails (Maybe DLMLifecyclePolicyParameters)
dlmlppdParameters = lens _dLMLifecyclePolicyPolicyDetailsParameters (\s a -> s { _dLMLifecyclePolicyPolicyDetailsParameters = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-policytype
dlmlppdPolicyType :: Lens' DLMLifecyclePolicyPolicyDetails (Maybe (Val Text))
dlmlppdPolicyType = lens _dLMLifecyclePolicyPolicyDetailsPolicyType (\s a -> s { _dLMLifecyclePolicyPolicyDetailsPolicyType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-resourcetypes
dlmlppdResourceTypes :: Lens' DLMLifecyclePolicyPolicyDetails (ValList Text)
dlmlppdResourceTypes = lens _dLMLifecyclePolicyPolicyDetailsResourceTypes (\s a -> s { _dLMLifecyclePolicyPolicyDetailsResourceTypes = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-schedules
dlmlppdSchedules :: Lens' DLMLifecyclePolicyPolicyDetails [DLMLifecyclePolicySchedule]
dlmlppdSchedules = lens _dLMLifecyclePolicyPolicyDetailsSchedules (\s a -> s { _dLMLifecyclePolicyPolicyDetailsSchedules = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-targettags
dlmlppdTargetTags :: Lens' DLMLifecyclePolicyPolicyDetails [Tag]
dlmlppdTargetTags = lens _dLMLifecyclePolicyPolicyDetailsTargetTags (\s a -> s { _dLMLifecyclePolicyPolicyDetailsTargetTags = a })