module Stratosphere.Budgets.Budget.ExpressionProperty ( module Exports, ExpressionProperty(..), mkExpressionProperty ) where import qualified Data.Aeson as JSON import qualified Stratosphere.Prelude as Prelude import Stratosphere.Property import {-# SOURCE #-} Stratosphere.Budgets.Budget.CostCategoryValuesProperty as Exports import {-# SOURCE #-} Stratosphere.Budgets.Budget.ExpressionDimensionValuesProperty as Exports import {-# SOURCE #-} Stratosphere.Budgets.Budget.TagValuesProperty as Exports import Stratosphere.ResourceProperties data ExpressionProperty = -- | See: ExpressionProperty {haddock_workaround_ :: (), -- | See: and :: (Prelude.Maybe [ExpressionProperty]), -- | See: costCategories :: (Prelude.Maybe CostCategoryValuesProperty), -- | See: dimensions :: (Prelude.Maybe ExpressionDimensionValuesProperty), -- | See: not :: (Prelude.Maybe ExpressionProperty), -- | See: or :: (Prelude.Maybe [ExpressionProperty]), -- | See: tags :: (Prelude.Maybe TagValuesProperty)} deriving stock (Prelude.Eq, Prelude.Show) mkExpressionProperty :: ExpressionProperty mkExpressionProperty = ExpressionProperty {haddock_workaround_ = (), and = Prelude.Nothing, costCategories = Prelude.Nothing, dimensions = Prelude.Nothing, not = Prelude.Nothing, or = Prelude.Nothing, tags = Prelude.Nothing} instance ToResourceProperties ExpressionProperty where toResourceProperties ExpressionProperty {..} = ResourceProperties {awsType = "AWS::Budgets::Budget.Expression", supportsTags = Prelude.True, properties = Prelude.fromList (Prelude.catMaybes [(JSON..=) "And" Prelude.<$> and, (JSON..=) "CostCategories" Prelude.<$> costCategories, (JSON..=) "Dimensions" Prelude.<$> dimensions, (JSON..=) "Not" Prelude.<$> not, (JSON..=) "Or" Prelude.<$> or, (JSON..=) "Tags" Prelude.<$> tags])} instance JSON.ToJSON ExpressionProperty where toJSON ExpressionProperty {..} = JSON.object (Prelude.fromList (Prelude.catMaybes [(JSON..=) "And" Prelude.<$> and, (JSON..=) "CostCategories" Prelude.<$> costCategories, (JSON..=) "Dimensions" Prelude.<$> dimensions, (JSON..=) "Not" Prelude.<$> not, (JSON..=) "Or" Prelude.<$> or, (JSON..=) "Tags" Prelude.<$> tags])) instance Property "And" ExpressionProperty where type PropertyType "And" ExpressionProperty = [ExpressionProperty] set newValue ExpressionProperty {..} = ExpressionProperty {and = Prelude.pure newValue, ..} instance Property "CostCategories" ExpressionProperty where type PropertyType "CostCategories" ExpressionProperty = CostCategoryValuesProperty set newValue ExpressionProperty {..} = ExpressionProperty {costCategories = Prelude.pure newValue, ..} instance Property "Dimensions" ExpressionProperty where type PropertyType "Dimensions" ExpressionProperty = ExpressionDimensionValuesProperty set newValue ExpressionProperty {..} = ExpressionProperty {dimensions = Prelude.pure newValue, ..} instance Property "Not" ExpressionProperty where type PropertyType "Not" ExpressionProperty = ExpressionProperty set newValue ExpressionProperty {..} = ExpressionProperty {not = Prelude.pure newValue, ..} instance Property "Or" ExpressionProperty where type PropertyType "Or" ExpressionProperty = [ExpressionProperty] set newValue ExpressionProperty {..} = ExpressionProperty {or = Prelude.pure newValue, ..} instance Property "Tags" ExpressionProperty where type PropertyType "Tags" ExpressionProperty = TagValuesProperty set newValue ExpressionProperty {..} = ExpressionProperty {tags = Prelude.pure newValue, ..}