stratosphere-0.6.0: library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTaskDefinitionPlacementConstraint.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-taskdefinitionplacementconstraint.html
module Stratosphere.ResourceProperties.ECSTaskDefinitionTaskDefinitionPlacementConstraint where
import Control.Lens hiding ((.=))
import Data.Aeson
import Data.Maybe (catMaybes)
import Data.Monoid (mempty)
import Data.Text
import Stratosphere.Values
-- | Full data type definition for
-- ECSTaskDefinitionTaskDefinitionPlacementConstraint. See
-- 'ecsTaskDefinitionTaskDefinitionPlacementConstraint' for a more
-- convenient constructor.
data ECSTaskDefinitionTaskDefinitionPlacementConstraint =
ECSTaskDefinitionTaskDefinitionPlacementConstraint
{ _eCSTaskDefinitionTaskDefinitionPlacementConstraintExpression :: Maybe (Val Text)
, _eCSTaskDefinitionTaskDefinitionPlacementConstraintType :: Val Text
} deriving (Show, Eq)
instance ToJSON ECSTaskDefinitionTaskDefinitionPlacementConstraint where
toJSON ECSTaskDefinitionTaskDefinitionPlacementConstraint{..} =
object $
catMaybes
[ fmap (("Expression",) . toJSON) _eCSTaskDefinitionTaskDefinitionPlacementConstraintExpression
, (Just . ("Type",) . toJSON) _eCSTaskDefinitionTaskDefinitionPlacementConstraintType
]
instance FromJSON ECSTaskDefinitionTaskDefinitionPlacementConstraint where
parseJSON (Object obj) =
ECSTaskDefinitionTaskDefinitionPlacementConstraint <$>
(obj .:? "Expression") <*>
(obj .: "Type")
parseJSON _ = mempty
-- | Constructor for 'ECSTaskDefinitionTaskDefinitionPlacementConstraint'
-- containing required fields as arguments.
ecsTaskDefinitionTaskDefinitionPlacementConstraint
:: Val Text -- ^ 'ecstdtdpcType'
-> ECSTaskDefinitionTaskDefinitionPlacementConstraint
ecsTaskDefinitionTaskDefinitionPlacementConstraint typearg =
ECSTaskDefinitionTaskDefinitionPlacementConstraint
{ _eCSTaskDefinitionTaskDefinitionPlacementConstraintExpression = Nothing
, _eCSTaskDefinitionTaskDefinitionPlacementConstraintType = typearg
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-taskdefinitionplacementconstraint.html#cfn-ecs-taskdefinition-taskdefinitionplacementconstraint-expression
ecstdtdpcExpression :: Lens' ECSTaskDefinitionTaskDefinitionPlacementConstraint (Maybe (Val Text))
ecstdtdpcExpression = lens _eCSTaskDefinitionTaskDefinitionPlacementConstraintExpression (\s a -> s { _eCSTaskDefinitionTaskDefinitionPlacementConstraintExpression = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-taskdefinitionplacementconstraint.html#cfn-ecs-taskdefinition-taskdefinitionplacementconstraint-type
ecstdtdpcType :: Lens' ECSTaskDefinitionTaskDefinitionPlacementConstraint (Val Text)
ecstdtdpcType = lens _eCSTaskDefinitionTaskDefinitionPlacementConstraintType (\s a -> s { _eCSTaskDefinitionTaskDefinitionPlacementConstraintType = a })