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: BudgetDataProperty {haddock_workaround_ :: (), -- | See: autoAdjustData :: (Prelude.Maybe AutoAdjustDataProperty), -- | See: billingViewArn :: (Prelude.Maybe (Value Prelude.Text)), -- | See: budgetLimit :: (Prelude.Maybe SpendProperty), -- | See: budgetName :: (Prelude.Maybe (Value Prelude.Text)), -- | See: budgetType :: (Value Prelude.Text), -- | See: costFilters :: (Prelude.Maybe JSON.Object), -- | See: costTypes :: (Prelude.Maybe CostTypesProperty), -- | See: filterExpression :: (Prelude.Maybe ExpressionProperty), -- | See: metrics :: (Prelude.Maybe (ValueList Prelude.Text)), -- | See: plannedBudgetLimits :: (Prelude.Maybe JSON.Object), -- | See: timePeriod :: (Prelude.Maybe TimePeriodProperty), -- | See: 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, ..}