packages feed

stratosphere-0.40.0: library-gen/Stratosphere/ResourceProperties/BackupBackupPlanBackupRuleResourceType.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html

module Stratosphere.ResourceProperties.BackupBackupPlanBackupRuleResourceType where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.BackupBackupPlanLifecycleResourceType

-- | Full data type definition for BackupBackupPlanBackupRuleResourceType. See
-- 'backupBackupPlanBackupRuleResourceType' for a more convenient
-- constructor.
data BackupBackupPlanBackupRuleResourceType =
  BackupBackupPlanBackupRuleResourceType
  { _backupBackupPlanBackupRuleResourceTypeCompletionWindowMinutes :: Maybe (Val Double)
  , _backupBackupPlanBackupRuleResourceTypeLifecycle :: Maybe BackupBackupPlanLifecycleResourceType
  , _backupBackupPlanBackupRuleResourceTypeRecoveryPointTags :: Maybe Object
  , _backupBackupPlanBackupRuleResourceTypeRuleName :: Val Text
  , _backupBackupPlanBackupRuleResourceTypeScheduleExpression :: Maybe (Val Text)
  , _backupBackupPlanBackupRuleResourceTypeStartWindowMinutes :: Maybe (Val Double)
  , _backupBackupPlanBackupRuleResourceTypeTargetBackupVault :: Val Text
  } deriving (Show, Eq)

instance ToJSON BackupBackupPlanBackupRuleResourceType where
  toJSON BackupBackupPlanBackupRuleResourceType{..} =
    object $
    catMaybes
    [ fmap (("CompletionWindowMinutes",) . toJSON) _backupBackupPlanBackupRuleResourceTypeCompletionWindowMinutes
    , fmap (("Lifecycle",) . toJSON) _backupBackupPlanBackupRuleResourceTypeLifecycle
    , fmap (("RecoveryPointTags",) . toJSON) _backupBackupPlanBackupRuleResourceTypeRecoveryPointTags
    , (Just . ("RuleName",) . toJSON) _backupBackupPlanBackupRuleResourceTypeRuleName
    , fmap (("ScheduleExpression",) . toJSON) _backupBackupPlanBackupRuleResourceTypeScheduleExpression
    , fmap (("StartWindowMinutes",) . toJSON) _backupBackupPlanBackupRuleResourceTypeStartWindowMinutes
    , (Just . ("TargetBackupVault",) . toJSON) _backupBackupPlanBackupRuleResourceTypeTargetBackupVault
    ]

-- | Constructor for 'BackupBackupPlanBackupRuleResourceType' containing
-- required fields as arguments.
backupBackupPlanBackupRuleResourceType
  :: Val Text -- ^ 'bbpbrrtRuleName'
  -> Val Text -- ^ 'bbpbrrtTargetBackupVault'
  -> BackupBackupPlanBackupRuleResourceType
backupBackupPlanBackupRuleResourceType ruleNamearg targetBackupVaultarg =
  BackupBackupPlanBackupRuleResourceType
  { _backupBackupPlanBackupRuleResourceTypeCompletionWindowMinutes = Nothing
  , _backupBackupPlanBackupRuleResourceTypeLifecycle = Nothing
  , _backupBackupPlanBackupRuleResourceTypeRecoveryPointTags = Nothing
  , _backupBackupPlanBackupRuleResourceTypeRuleName = ruleNamearg
  , _backupBackupPlanBackupRuleResourceTypeScheduleExpression = Nothing
  , _backupBackupPlanBackupRuleResourceTypeStartWindowMinutes = Nothing
  , _backupBackupPlanBackupRuleResourceTypeTargetBackupVault = targetBackupVaultarg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-completionwindowminutes
bbpbrrtCompletionWindowMinutes :: Lens' BackupBackupPlanBackupRuleResourceType (Maybe (Val Double))
bbpbrrtCompletionWindowMinutes = lens _backupBackupPlanBackupRuleResourceTypeCompletionWindowMinutes (\s a -> s { _backupBackupPlanBackupRuleResourceTypeCompletionWindowMinutes = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-lifecycle
bbpbrrtLifecycle :: Lens' BackupBackupPlanBackupRuleResourceType (Maybe BackupBackupPlanLifecycleResourceType)
bbpbrrtLifecycle = lens _backupBackupPlanBackupRuleResourceTypeLifecycle (\s a -> s { _backupBackupPlanBackupRuleResourceTypeLifecycle = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-recoverypointtags
bbpbrrtRecoveryPointTags :: Lens' BackupBackupPlanBackupRuleResourceType (Maybe Object)
bbpbrrtRecoveryPointTags = lens _backupBackupPlanBackupRuleResourceTypeRecoveryPointTags (\s a -> s { _backupBackupPlanBackupRuleResourceTypeRecoveryPointTags = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-rulename
bbpbrrtRuleName :: Lens' BackupBackupPlanBackupRuleResourceType (Val Text)
bbpbrrtRuleName = lens _backupBackupPlanBackupRuleResourceTypeRuleName (\s a -> s { _backupBackupPlanBackupRuleResourceTypeRuleName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-scheduleexpression
bbpbrrtScheduleExpression :: Lens' BackupBackupPlanBackupRuleResourceType (Maybe (Val Text))
bbpbrrtScheduleExpression = lens _backupBackupPlanBackupRuleResourceTypeScheduleExpression (\s a -> s { _backupBackupPlanBackupRuleResourceTypeScheduleExpression = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-startwindowminutes
bbpbrrtStartWindowMinutes :: Lens' BackupBackupPlanBackupRuleResourceType (Maybe (Val Double))
bbpbrrtStartWindowMinutes = lens _backupBackupPlanBackupRuleResourceTypeStartWindowMinutes (\s a -> s { _backupBackupPlanBackupRuleResourceTypeStartWindowMinutes = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-targetbackupvault
bbpbrrtTargetBackupVault :: Lens' BackupBackupPlanBackupRuleResourceType (Val Text)
bbpbrrtTargetBackupVault = lens _backupBackupPlanBackupRuleResourceTypeTargetBackupVault (\s a -> s { _backupBackupPlanBackupRuleResourceTypeTargetBackupVault = a })