stratosphere-0.11.0: library-gen/Stratosphere/ResourceProperties/GlueConnectionConnectionInput.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html
module Stratosphere.ResourceProperties.GlueConnectionConnectionInput where
import Control.Lens hiding ((.=))
import Data.Aeson
import Data.Maybe (catMaybes)
import Data.Monoid (mempty)
import Data.Text
import Stratosphere.Values
import Stratosphere.ResourceProperties.GlueConnectionPhysicalConnectionRequirements
-- | Full data type definition for GlueConnectionConnectionInput. See
-- 'glueConnectionConnectionInput' for a more convenient constructor.
data GlueConnectionConnectionInput =
GlueConnectionConnectionInput
{ _glueConnectionConnectionInputConnectionProperties :: Object
, _glueConnectionConnectionInputConnectionType :: Val Text
, _glueConnectionConnectionInputDescription :: Maybe (Val Text)
, _glueConnectionConnectionInputMatchCriteria :: Maybe (ValList Text)
, _glueConnectionConnectionInputName :: Maybe (Val Text)
, _glueConnectionConnectionInputPhysicalConnectionRequirements :: Maybe GlueConnectionPhysicalConnectionRequirements
} deriving (Show, Eq)
instance ToJSON GlueConnectionConnectionInput where
toJSON GlueConnectionConnectionInput{..} =
object $
catMaybes
[ (Just . ("ConnectionProperties",) . toJSON) _glueConnectionConnectionInputConnectionProperties
, (Just . ("ConnectionType",) . toJSON) _glueConnectionConnectionInputConnectionType
, fmap (("Description",) . toJSON) _glueConnectionConnectionInputDescription
, fmap (("MatchCriteria",) . toJSON) _glueConnectionConnectionInputMatchCriteria
, fmap (("Name",) . toJSON) _glueConnectionConnectionInputName
, fmap (("PhysicalConnectionRequirements",) . toJSON) _glueConnectionConnectionInputPhysicalConnectionRequirements
]
instance FromJSON GlueConnectionConnectionInput where
parseJSON (Object obj) =
GlueConnectionConnectionInput <$>
(obj .: "ConnectionProperties") <*>
(obj .: "ConnectionType") <*>
(obj .:? "Description") <*>
(obj .:? "MatchCriteria") <*>
(obj .:? "Name") <*>
(obj .:? "PhysicalConnectionRequirements")
parseJSON _ = mempty
-- | Constructor for 'GlueConnectionConnectionInput' containing required
-- fields as arguments.
glueConnectionConnectionInput
:: Object -- ^ 'gcciConnectionProperties'
-> Val Text -- ^ 'gcciConnectionType'
-> GlueConnectionConnectionInput
glueConnectionConnectionInput connectionPropertiesarg connectionTypearg =
GlueConnectionConnectionInput
{ _glueConnectionConnectionInputConnectionProperties = connectionPropertiesarg
, _glueConnectionConnectionInputConnectionType = connectionTypearg
, _glueConnectionConnectionInputDescription = Nothing
, _glueConnectionConnectionInputMatchCriteria = Nothing
, _glueConnectionConnectionInputName = Nothing
, _glueConnectionConnectionInputPhysicalConnectionRequirements = Nothing
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-connectionproperties
gcciConnectionProperties :: Lens' GlueConnectionConnectionInput Object
gcciConnectionProperties = lens _glueConnectionConnectionInputConnectionProperties (\s a -> s { _glueConnectionConnectionInputConnectionProperties = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-connectiontype
gcciConnectionType :: Lens' GlueConnectionConnectionInput (Val Text)
gcciConnectionType = lens _glueConnectionConnectionInputConnectionType (\s a -> s { _glueConnectionConnectionInputConnectionType = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-description
gcciDescription :: Lens' GlueConnectionConnectionInput (Maybe (Val Text))
gcciDescription = lens _glueConnectionConnectionInputDescription (\s a -> s { _glueConnectionConnectionInputDescription = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-matchcriteria
gcciMatchCriteria :: Lens' GlueConnectionConnectionInput (Maybe (ValList Text))
gcciMatchCriteria = lens _glueConnectionConnectionInputMatchCriteria (\s a -> s { _glueConnectionConnectionInputMatchCriteria = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-name
gcciName :: Lens' GlueConnectionConnectionInput (Maybe (Val Text))
gcciName = lens _glueConnectionConnectionInputName (\s a -> s { _glueConnectionConnectionInputName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-physicalconnectionrequirements
gcciPhysicalConnectionRequirements :: Lens' GlueConnectionConnectionInput (Maybe GlueConnectionPhysicalConnectionRequirements)
gcciPhysicalConnectionRequirements = lens _glueConnectionConnectionInputPhysicalConnectionRequirements (\s a -> s { _glueConnectionConnectionInputPhysicalConnectionRequirements = a })