packages feed

stratosphere-budgets-1.0.0: gen/Stratosphere/Budgets/Budget/BudgetDataProperty.hs

module Stratosphere.Budgets.Budget.BudgetDataProperty (
        module Exports, BudgetDataProperty(..), mkBudgetDataProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.Budgets.Budget.AutoAdjustDataProperty as Exports
import {-# SOURCE #-} Stratosphere.Budgets.Budget.CostTypesProperty as Exports
import {-# SOURCE #-} Stratosphere.Budgets.Budget.ExpressionProperty as Exports
import {-# SOURCE #-} Stratosphere.Budgets.Budget.SpendProperty as Exports
import {-# SOURCE #-} Stratosphere.Budgets.Budget.TimePeriodProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Value
data BudgetDataProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html>
    BudgetDataProperty {haddock_workaround_ :: (),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-autoadjustdata>
                        autoAdjustData :: (Prelude.Maybe AutoAdjustDataProperty),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-billingviewarn>
                        billingViewArn :: (Prelude.Maybe (Value Prelude.Text)),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-budgetlimit>
                        budgetLimit :: (Prelude.Maybe SpendProperty),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-budgetname>
                        budgetName :: (Prelude.Maybe (Value Prelude.Text)),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-budgettype>
                        budgetType :: (Value Prelude.Text),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-costfilters>
                        costFilters :: (Prelude.Maybe JSON.Object),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-costtypes>
                        costTypes :: (Prelude.Maybe CostTypesProperty),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-filterexpression>
                        filterExpression :: (Prelude.Maybe ExpressionProperty),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-metrics>
                        metrics :: (Prelude.Maybe (ValueList Prelude.Text)),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-plannedbudgetlimits>
                        plannedBudgetLimits :: (Prelude.Maybe JSON.Object),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-timeperiod>
                        timePeriod :: (Prelude.Maybe TimePeriodProperty),
                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-timeunit>
                        timeUnit :: (Value Prelude.Text)}
  deriving stock (Prelude.Eq, Prelude.Show)
mkBudgetDataProperty ::
  Value Prelude.Text -> Value Prelude.Text -> BudgetDataProperty
mkBudgetDataProperty budgetType timeUnit
  = BudgetDataProperty
      {haddock_workaround_ = (), budgetType = budgetType,
       timeUnit = timeUnit, autoAdjustData = Prelude.Nothing,
       billingViewArn = Prelude.Nothing, budgetLimit = Prelude.Nothing,
       budgetName = Prelude.Nothing, costFilters = Prelude.Nothing,
       costTypes = Prelude.Nothing, filterExpression = Prelude.Nothing,
       metrics = Prelude.Nothing, plannedBudgetLimits = Prelude.Nothing,
       timePeriod = Prelude.Nothing}
instance ToResourceProperties BudgetDataProperty where
  toResourceProperties BudgetDataProperty {..}
    = ResourceProperties
        {awsType = "AWS::Budgets::Budget.BudgetData",
         supportsTags = Prelude.False,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["BudgetType" JSON..= budgetType, "TimeUnit" JSON..= timeUnit]
                           (Prelude.catMaybes
                              [(JSON..=) "AutoAdjustData" Prelude.<$> autoAdjustData,
                               (JSON..=) "BillingViewArn" Prelude.<$> billingViewArn,
                               (JSON..=) "BudgetLimit" Prelude.<$> budgetLimit,
                               (JSON..=) "BudgetName" Prelude.<$> budgetName,
                               (JSON..=) "CostFilters" Prelude.<$> costFilters,
                               (JSON..=) "CostTypes" Prelude.<$> costTypes,
                               (JSON..=) "FilterExpression" Prelude.<$> filterExpression,
                               (JSON..=) "Metrics" Prelude.<$> metrics,
                               (JSON..=) "PlannedBudgetLimits" Prelude.<$> plannedBudgetLimits,
                               (JSON..=) "TimePeriod" Prelude.<$> timePeriod]))}
instance JSON.ToJSON BudgetDataProperty where
  toJSON BudgetDataProperty {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["BudgetType" JSON..= budgetType, "TimeUnit" JSON..= timeUnit]
              (Prelude.catMaybes
                 [(JSON..=) "AutoAdjustData" Prelude.<$> autoAdjustData,
                  (JSON..=) "BillingViewArn" Prelude.<$> billingViewArn,
                  (JSON..=) "BudgetLimit" Prelude.<$> budgetLimit,
                  (JSON..=) "BudgetName" Prelude.<$> budgetName,
                  (JSON..=) "CostFilters" Prelude.<$> costFilters,
                  (JSON..=) "CostTypes" Prelude.<$> costTypes,
                  (JSON..=) "FilterExpression" Prelude.<$> filterExpression,
                  (JSON..=) "Metrics" Prelude.<$> metrics,
                  (JSON..=) "PlannedBudgetLimits" Prelude.<$> plannedBudgetLimits,
                  (JSON..=) "TimePeriod" Prelude.<$> timePeriod])))
instance Property "AutoAdjustData" BudgetDataProperty where
  type PropertyType "AutoAdjustData" BudgetDataProperty = AutoAdjustDataProperty
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty {autoAdjustData = Prelude.pure newValue, ..}
instance Property "BillingViewArn" BudgetDataProperty where
  type PropertyType "BillingViewArn" BudgetDataProperty = Value Prelude.Text
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty {billingViewArn = Prelude.pure newValue, ..}
instance Property "BudgetLimit" BudgetDataProperty where
  type PropertyType "BudgetLimit" BudgetDataProperty = SpendProperty
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty {budgetLimit = Prelude.pure newValue, ..}
instance Property "BudgetName" BudgetDataProperty where
  type PropertyType "BudgetName" BudgetDataProperty = Value Prelude.Text
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty {budgetName = Prelude.pure newValue, ..}
instance Property "BudgetType" BudgetDataProperty where
  type PropertyType "BudgetType" BudgetDataProperty = Value Prelude.Text
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty {budgetType = newValue, ..}
instance Property "CostFilters" BudgetDataProperty where
  type PropertyType "CostFilters" BudgetDataProperty = JSON.Object
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty {costFilters = Prelude.pure newValue, ..}
instance Property "CostTypes" BudgetDataProperty where
  type PropertyType "CostTypes" BudgetDataProperty = CostTypesProperty
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty {costTypes = Prelude.pure newValue, ..}
instance Property "FilterExpression" BudgetDataProperty where
  type PropertyType "FilterExpression" BudgetDataProperty = ExpressionProperty
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty {filterExpression = Prelude.pure newValue, ..}
instance Property "Metrics" BudgetDataProperty where
  type PropertyType "Metrics" BudgetDataProperty = ValueList Prelude.Text
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty {metrics = Prelude.pure newValue, ..}
instance Property "PlannedBudgetLimits" BudgetDataProperty where
  type PropertyType "PlannedBudgetLimits" BudgetDataProperty = JSON.Object
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty
        {plannedBudgetLimits = Prelude.pure newValue, ..}
instance Property "TimePeriod" BudgetDataProperty where
  type PropertyType "TimePeriod" BudgetDataProperty = TimePeriodProperty
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty {timePeriod = Prelude.pure newValue, ..}
instance Property "TimeUnit" BudgetDataProperty where
  type PropertyType "TimeUnit" BudgetDataProperty = Value Prelude.Text
  set newValue BudgetDataProperty {..}
    = BudgetDataProperty {timeUnit = newValue, ..}