packages feed

stratosphere-0.32.0: library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCheckpointConfiguration.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-checkpointconfiguration.html

module Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationCheckpointConfiguration where

import Stratosphere.ResourceImports


-- | Full data type definition for
-- KinesisAnalyticsV2ApplicationCheckpointConfiguration. See
-- 'kinesisAnalyticsV2ApplicationCheckpointConfiguration' for a more
-- convenient constructor.
data KinesisAnalyticsV2ApplicationCheckpointConfiguration =
  KinesisAnalyticsV2ApplicationCheckpointConfiguration
  { _kinesisAnalyticsV2ApplicationCheckpointConfigurationCheckpointInterval :: Maybe (Val Integer)
  , _kinesisAnalyticsV2ApplicationCheckpointConfigurationCheckpointingEnabled :: Maybe (Val Bool)
  , _kinesisAnalyticsV2ApplicationCheckpointConfigurationConfigurationType :: Val Text
  , _kinesisAnalyticsV2ApplicationCheckpointConfigurationMinPauseBetweenCheckpoints :: Maybe (Val Integer)
  } deriving (Show, Eq)

instance ToJSON KinesisAnalyticsV2ApplicationCheckpointConfiguration where
  toJSON KinesisAnalyticsV2ApplicationCheckpointConfiguration{..} =
    object $
    catMaybes
    [ fmap (("CheckpointInterval",) . toJSON . fmap Integer') _kinesisAnalyticsV2ApplicationCheckpointConfigurationCheckpointInterval
    , fmap (("CheckpointingEnabled",) . toJSON . fmap Bool') _kinesisAnalyticsV2ApplicationCheckpointConfigurationCheckpointingEnabled
    , (Just . ("ConfigurationType",) . toJSON) _kinesisAnalyticsV2ApplicationCheckpointConfigurationConfigurationType
    , fmap (("MinPauseBetweenCheckpoints",) . toJSON . fmap Integer') _kinesisAnalyticsV2ApplicationCheckpointConfigurationMinPauseBetweenCheckpoints
    ]

-- | Constructor for 'KinesisAnalyticsV2ApplicationCheckpointConfiguration'
-- containing required fields as arguments.
kinesisAnalyticsV2ApplicationCheckpointConfiguration
  :: Val Text -- ^ 'kavaccConfigurationType'
  -> KinesisAnalyticsV2ApplicationCheckpointConfiguration
kinesisAnalyticsV2ApplicationCheckpointConfiguration configurationTypearg =
  KinesisAnalyticsV2ApplicationCheckpointConfiguration
  { _kinesisAnalyticsV2ApplicationCheckpointConfigurationCheckpointInterval = Nothing
  , _kinesisAnalyticsV2ApplicationCheckpointConfigurationCheckpointingEnabled = Nothing
  , _kinesisAnalyticsV2ApplicationCheckpointConfigurationConfigurationType = configurationTypearg
  , _kinesisAnalyticsV2ApplicationCheckpointConfigurationMinPauseBetweenCheckpoints = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-checkpointconfiguration.html#cfn-kinesisanalyticsv2-application-checkpointconfiguration-checkpointinterval
kavaccCheckpointInterval :: Lens' KinesisAnalyticsV2ApplicationCheckpointConfiguration (Maybe (Val Integer))
kavaccCheckpointInterval = lens _kinesisAnalyticsV2ApplicationCheckpointConfigurationCheckpointInterval (\s a -> s { _kinesisAnalyticsV2ApplicationCheckpointConfigurationCheckpointInterval = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-checkpointconfiguration.html#cfn-kinesisanalyticsv2-application-checkpointconfiguration-checkpointingenabled
kavaccCheckpointingEnabled :: Lens' KinesisAnalyticsV2ApplicationCheckpointConfiguration (Maybe (Val Bool))
kavaccCheckpointingEnabled = lens _kinesisAnalyticsV2ApplicationCheckpointConfigurationCheckpointingEnabled (\s a -> s { _kinesisAnalyticsV2ApplicationCheckpointConfigurationCheckpointingEnabled = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-checkpointconfiguration.html#cfn-kinesisanalyticsv2-application-checkpointconfiguration-configurationtype
kavaccConfigurationType :: Lens' KinesisAnalyticsV2ApplicationCheckpointConfiguration (Val Text)
kavaccConfigurationType = lens _kinesisAnalyticsV2ApplicationCheckpointConfigurationConfigurationType (\s a -> s { _kinesisAnalyticsV2ApplicationCheckpointConfigurationConfigurationType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-checkpointconfiguration.html#cfn-kinesisanalyticsv2-application-checkpointconfiguration-minpausebetweencheckpoints
kavaccMinPauseBetweenCheckpoints :: Lens' KinesisAnalyticsV2ApplicationCheckpointConfiguration (Maybe (Val Integer))
kavaccMinPauseBetweenCheckpoints = lens _kinesisAnalyticsV2ApplicationCheckpointConfigurationMinPauseBetweenCheckpoints (\s a -> s { _kinesisAnalyticsV2ApplicationCheckpointConfigurationMinPauseBetweenCheckpoints = a })