{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} -- | 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 [ ("Expression" .=) <$> _eCSTaskDefinitionTaskDefinitionPlacementConstraintExpression , Just ("Type" .= _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 })