{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TupleSections #-} -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-ledger.html module Stratosphere.Resources.QLDBLedger where import Stratosphere.ResourceImports import Stratosphere.ResourceProperties.Tag -- | Full data type definition for QLDBLedger. See 'qldbLedger' for a more -- convenient constructor. data QLDBLedger = QLDBLedger { _qLDBLedgerDeletionProtection :: Maybe (Val Bool) , _qLDBLedgerName :: Maybe (Val Text) , _qLDBLedgerPermissionsMode :: Val Text , _qLDBLedgerTags :: Maybe [Tag] } deriving (Show, Eq) instance ToResourceProperties QLDBLedger where toResourceProperties QLDBLedger{..} = ResourceProperties { resourcePropertiesType = "AWS::QLDB::Ledger" , resourcePropertiesProperties = hashMapFromList $ catMaybes [ fmap (("DeletionProtection",) . toJSON) _qLDBLedgerDeletionProtection , fmap (("Name",) . toJSON) _qLDBLedgerName , (Just . ("PermissionsMode",) . toJSON) _qLDBLedgerPermissionsMode , fmap (("Tags",) . toJSON) _qLDBLedgerTags ] } -- | Constructor for 'QLDBLedger' containing required fields as arguments. qldbLedger :: Val Text -- ^ 'qldblPermissionsMode' -> QLDBLedger qldbLedger permissionsModearg = QLDBLedger { _qLDBLedgerDeletionProtection = Nothing , _qLDBLedgerName = Nothing , _qLDBLedgerPermissionsMode = permissionsModearg , _qLDBLedgerTags = Nothing } -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-ledger.html#cfn-qldb-ledger-deletionprotection qldblDeletionProtection :: Lens' QLDBLedger (Maybe (Val Bool)) qldblDeletionProtection = lens _qLDBLedgerDeletionProtection (\s a -> s { _qLDBLedgerDeletionProtection = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-ledger.html#cfn-qldb-ledger-name qldblName :: Lens' QLDBLedger (Maybe (Val Text)) qldblName = lens _qLDBLedgerName (\s a -> s { _qLDBLedgerName = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-ledger.html#cfn-qldb-ledger-permissionsmode qldblPermissionsMode :: Lens' QLDBLedger (Val Text) qldblPermissionsMode = lens _qLDBLedgerPermissionsMode (\s a -> s { _qLDBLedgerPermissionsMode = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-ledger.html#cfn-qldb-ledger-tags qldblTags :: Lens' QLDBLedger (Maybe [Tag]) qldblTags = lens _qLDBLedgerTags (\s a -> s { _qLDBLedgerTags = a })