packages feed

stratosphere-0.34.0: library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotification.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notification.html

module Stratosphere.ResourceProperties.BudgetsBudgetNotification where

import Stratosphere.ResourceImports


-- | Full data type definition for BudgetsBudgetNotification. See
-- 'budgetsBudgetNotification' for a more convenient constructor.
data BudgetsBudgetNotification =
  BudgetsBudgetNotification
  { _budgetsBudgetNotificationComparisonOperator :: Val Text
  , _budgetsBudgetNotificationNotificationType :: Val Text
  , _budgetsBudgetNotificationThreshold :: Val Double
  , _budgetsBudgetNotificationThresholdType :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON BudgetsBudgetNotification where
  toJSON BudgetsBudgetNotification{..} =
    object $
    catMaybes
    [ (Just . ("ComparisonOperator",) . toJSON) _budgetsBudgetNotificationComparisonOperator
    , (Just . ("NotificationType",) . toJSON) _budgetsBudgetNotificationNotificationType
    , (Just . ("Threshold",) . toJSON) _budgetsBudgetNotificationThreshold
    , fmap (("ThresholdType",) . toJSON) _budgetsBudgetNotificationThresholdType
    ]

-- | Constructor for 'BudgetsBudgetNotification' containing required fields as
-- arguments.
budgetsBudgetNotification
  :: Val Text -- ^ 'bbnComparisonOperator'
  -> Val Text -- ^ 'bbnNotificationType'
  -> Val Double -- ^ 'bbnThreshold'
  -> BudgetsBudgetNotification
budgetsBudgetNotification comparisonOperatorarg notificationTypearg thresholdarg =
  BudgetsBudgetNotification
  { _budgetsBudgetNotificationComparisonOperator = comparisonOperatorarg
  , _budgetsBudgetNotificationNotificationType = notificationTypearg
  , _budgetsBudgetNotificationThreshold = thresholdarg
  , _budgetsBudgetNotificationThresholdType = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notification.html#cfn-budgets-budget-notification-comparisonoperator
bbnComparisonOperator :: Lens' BudgetsBudgetNotification (Val Text)
bbnComparisonOperator = lens _budgetsBudgetNotificationComparisonOperator (\s a -> s { _budgetsBudgetNotificationComparisonOperator = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notification.html#cfn-budgets-budget-notification-notificationtype
bbnNotificationType :: Lens' BudgetsBudgetNotification (Val Text)
bbnNotificationType = lens _budgetsBudgetNotificationNotificationType (\s a -> s { _budgetsBudgetNotificationNotificationType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notification.html#cfn-budgets-budget-notification-threshold
bbnThreshold :: Lens' BudgetsBudgetNotification (Val Double)
bbnThreshold = lens _budgetsBudgetNotificationThreshold (\s a -> s { _budgetsBudgetNotificationThreshold = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notification.html#cfn-budgets-budget-notification-thresholdtype
bbnThresholdType :: Lens' BudgetsBudgetNotification (Maybe (Val Text))
bbnThresholdType = lens _budgetsBudgetNotificationThresholdType (\s a -> s { _budgetsBudgetNotificationThresholdType = a })