stratosphere-0.23.0: library-gen/Stratosphere/ResourceProperties/BudgetsBudgetBudgetData.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html
module Stratosphere.ResourceProperties.BudgetsBudgetBudgetData where
import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.BudgetsBudgetSpend
import Stratosphere.ResourceProperties.BudgetsBudgetCostTypes
import Stratosphere.ResourceProperties.BudgetsBudgetTimePeriod
-- | Full data type definition for BudgetsBudgetBudgetData. See
-- 'budgetsBudgetBudgetData' for a more convenient constructor.
data BudgetsBudgetBudgetData =
BudgetsBudgetBudgetData
{ _budgetsBudgetBudgetDataBudgetLimit :: Maybe BudgetsBudgetSpend
, _budgetsBudgetBudgetDataBudgetName :: Maybe (Val Text)
, _budgetsBudgetBudgetDataBudgetType :: Val Text
, _budgetsBudgetBudgetDataCostFilters :: Maybe Object
, _budgetsBudgetBudgetDataCostTypes :: Maybe BudgetsBudgetCostTypes
, _budgetsBudgetBudgetDataTimePeriod :: Maybe BudgetsBudgetTimePeriod
, _budgetsBudgetBudgetDataTimeUnit :: Val Text
} deriving (Show, Eq)
instance ToJSON BudgetsBudgetBudgetData where
toJSON BudgetsBudgetBudgetData{..} =
object $
catMaybes
[ fmap (("BudgetLimit",) . toJSON) _budgetsBudgetBudgetDataBudgetLimit
, fmap (("BudgetName",) . toJSON) _budgetsBudgetBudgetDataBudgetName
, (Just . ("BudgetType",) . toJSON) _budgetsBudgetBudgetDataBudgetType
, fmap (("CostFilters",) . toJSON) _budgetsBudgetBudgetDataCostFilters
, fmap (("CostTypes",) . toJSON) _budgetsBudgetBudgetDataCostTypes
, fmap (("TimePeriod",) . toJSON) _budgetsBudgetBudgetDataTimePeriod
, (Just . ("TimeUnit",) . toJSON) _budgetsBudgetBudgetDataTimeUnit
]
instance FromJSON BudgetsBudgetBudgetData where
parseJSON (Object obj) =
BudgetsBudgetBudgetData <$>
(obj .:? "BudgetLimit") <*>
(obj .:? "BudgetName") <*>
(obj .: "BudgetType") <*>
(obj .:? "CostFilters") <*>
(obj .:? "CostTypes") <*>
(obj .:? "TimePeriod") <*>
(obj .: "TimeUnit")
parseJSON _ = mempty
-- | Constructor for 'BudgetsBudgetBudgetData' containing required fields as
-- arguments.
budgetsBudgetBudgetData
:: Val Text -- ^ 'bbbdBudgetType'
-> Val Text -- ^ 'bbbdTimeUnit'
-> BudgetsBudgetBudgetData
budgetsBudgetBudgetData budgetTypearg timeUnitarg =
BudgetsBudgetBudgetData
{ _budgetsBudgetBudgetDataBudgetLimit = Nothing
, _budgetsBudgetBudgetDataBudgetName = Nothing
, _budgetsBudgetBudgetDataBudgetType = budgetTypearg
, _budgetsBudgetBudgetDataCostFilters = Nothing
, _budgetsBudgetBudgetDataCostTypes = Nothing
, _budgetsBudgetBudgetDataTimePeriod = Nothing
, _budgetsBudgetBudgetDataTimeUnit = timeUnitarg
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-budgetlimit
bbbdBudgetLimit :: Lens' BudgetsBudgetBudgetData (Maybe BudgetsBudgetSpend)
bbbdBudgetLimit = lens _budgetsBudgetBudgetDataBudgetLimit (\s a -> s { _budgetsBudgetBudgetDataBudgetLimit = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-budgetname
bbbdBudgetName :: Lens' BudgetsBudgetBudgetData (Maybe (Val Text))
bbbdBudgetName = lens _budgetsBudgetBudgetDataBudgetName (\s a -> s { _budgetsBudgetBudgetDataBudgetName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-budgettype
bbbdBudgetType :: Lens' BudgetsBudgetBudgetData (Val Text)
bbbdBudgetType = lens _budgetsBudgetBudgetDataBudgetType (\s a -> s { _budgetsBudgetBudgetDataBudgetType = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-costfilters
bbbdCostFilters :: Lens' BudgetsBudgetBudgetData (Maybe Object)
bbbdCostFilters = lens _budgetsBudgetBudgetDataCostFilters (\s a -> s { _budgetsBudgetBudgetDataCostFilters = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-costtypes
bbbdCostTypes :: Lens' BudgetsBudgetBudgetData (Maybe BudgetsBudgetCostTypes)
bbbdCostTypes = lens _budgetsBudgetBudgetDataCostTypes (\s a -> s { _budgetsBudgetBudgetDataCostTypes = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-timeperiod
bbbdTimePeriod :: Lens' BudgetsBudgetBudgetData (Maybe BudgetsBudgetTimePeriod)
bbbdTimePeriod = lens _budgetsBudgetBudgetDataTimePeriod (\s a -> s { _budgetsBudgetBudgetDataTimePeriod = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-timeunit
bbbdTimeUnit :: Lens' BudgetsBudgetBudgetData (Val Text)
bbbdTimeUnit = lens _budgetsBudgetBudgetDataTimeUnit (\s a -> s { _budgetsBudgetBudgetDataTimeUnit = a })