packages feed

stratosphere-0.5.0: library-gen/Stratosphere/ResourceProperties/DMSEndpointMongoDbSettings.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html

module Stratosphere.ResourceProperties.DMSEndpointMongoDbSettings 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 DMSEndpointMongoDbSettings. See
-- 'dmsEndpointMongoDbSettings' for a more convenient constructor.
data DMSEndpointMongoDbSettings =
  DMSEndpointMongoDbSettings
  { _dMSEndpointMongoDbSettingsAuthMechanism :: Maybe (Val Text)
  , _dMSEndpointMongoDbSettingsAuthSource :: Maybe (Val Text)
  , _dMSEndpointMongoDbSettingsAuthType :: Maybe (Val Text)
  , _dMSEndpointMongoDbSettingsDatabaseName :: Maybe (Val Text)
  , _dMSEndpointMongoDbSettingsDocsToInvestigate :: Maybe (Val Text)
  , _dMSEndpointMongoDbSettingsExtractDocId :: Maybe (Val Text)
  , _dMSEndpointMongoDbSettingsNestingLevel :: Maybe (Val Text)
  , _dMSEndpointMongoDbSettingsPassword :: Maybe (Val Text)
  , _dMSEndpointMongoDbSettingsPort :: Maybe (Val Integer')
  , _dMSEndpointMongoDbSettingsServerName :: Maybe (Val Text)
  , _dMSEndpointMongoDbSettingsUsername :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON DMSEndpointMongoDbSettings where
  toJSON DMSEndpointMongoDbSettings{..} =
    object $
    catMaybes
    [ ("AuthMechanism" .=) <$> _dMSEndpointMongoDbSettingsAuthMechanism
    , ("AuthSource" .=) <$> _dMSEndpointMongoDbSettingsAuthSource
    , ("AuthType" .=) <$> _dMSEndpointMongoDbSettingsAuthType
    , ("DatabaseName" .=) <$> _dMSEndpointMongoDbSettingsDatabaseName
    , ("DocsToInvestigate" .=) <$> _dMSEndpointMongoDbSettingsDocsToInvestigate
    , ("ExtractDocId" .=) <$> _dMSEndpointMongoDbSettingsExtractDocId
    , ("NestingLevel" .=) <$> _dMSEndpointMongoDbSettingsNestingLevel
    , ("Password" .=) <$> _dMSEndpointMongoDbSettingsPassword
    , ("Port" .=) <$> _dMSEndpointMongoDbSettingsPort
    , ("ServerName" .=) <$> _dMSEndpointMongoDbSettingsServerName
    , ("Username" .=) <$> _dMSEndpointMongoDbSettingsUsername
    ]

instance FromJSON DMSEndpointMongoDbSettings where
  parseJSON (Object obj) =
    DMSEndpointMongoDbSettings <$>
      obj .:? "AuthMechanism" <*>
      obj .:? "AuthSource" <*>
      obj .:? "AuthType" <*>
      obj .:? "DatabaseName" <*>
      obj .:? "DocsToInvestigate" <*>
      obj .:? "ExtractDocId" <*>
      obj .:? "NestingLevel" <*>
      obj .:? "Password" <*>
      obj .:? "Port" <*>
      obj .:? "ServerName" <*>
      obj .:? "Username"
  parseJSON _ = mempty

-- | Constructor for 'DMSEndpointMongoDbSettings' containing required fields
-- as arguments.
dmsEndpointMongoDbSettings
  :: DMSEndpointMongoDbSettings
dmsEndpointMongoDbSettings  =
  DMSEndpointMongoDbSettings
  { _dMSEndpointMongoDbSettingsAuthMechanism = Nothing
  , _dMSEndpointMongoDbSettingsAuthSource = Nothing
  , _dMSEndpointMongoDbSettingsAuthType = Nothing
  , _dMSEndpointMongoDbSettingsDatabaseName = Nothing
  , _dMSEndpointMongoDbSettingsDocsToInvestigate = Nothing
  , _dMSEndpointMongoDbSettingsExtractDocId = Nothing
  , _dMSEndpointMongoDbSettingsNestingLevel = Nothing
  , _dMSEndpointMongoDbSettingsPassword = Nothing
  , _dMSEndpointMongoDbSettingsPort = Nothing
  , _dMSEndpointMongoDbSettingsServerName = Nothing
  , _dMSEndpointMongoDbSettingsUsername = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-authmechanism
dmsemdsAuthMechanism :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Text))
dmsemdsAuthMechanism = lens _dMSEndpointMongoDbSettingsAuthMechanism (\s a -> s { _dMSEndpointMongoDbSettingsAuthMechanism = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-authsource
dmsemdsAuthSource :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Text))
dmsemdsAuthSource = lens _dMSEndpointMongoDbSettingsAuthSource (\s a -> s { _dMSEndpointMongoDbSettingsAuthSource = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-authtype
dmsemdsAuthType :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Text))
dmsemdsAuthType = lens _dMSEndpointMongoDbSettingsAuthType (\s a -> s { _dMSEndpointMongoDbSettingsAuthType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-databasename
dmsemdsDatabaseName :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Text))
dmsemdsDatabaseName = lens _dMSEndpointMongoDbSettingsDatabaseName (\s a -> s { _dMSEndpointMongoDbSettingsDatabaseName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-docstoinvestigate
dmsemdsDocsToInvestigate :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Text))
dmsemdsDocsToInvestigate = lens _dMSEndpointMongoDbSettingsDocsToInvestigate (\s a -> s { _dMSEndpointMongoDbSettingsDocsToInvestigate = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-extractdocid
dmsemdsExtractDocId :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Text))
dmsemdsExtractDocId = lens _dMSEndpointMongoDbSettingsExtractDocId (\s a -> s { _dMSEndpointMongoDbSettingsExtractDocId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-nestinglevel
dmsemdsNestingLevel :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Text))
dmsemdsNestingLevel = lens _dMSEndpointMongoDbSettingsNestingLevel (\s a -> s { _dMSEndpointMongoDbSettingsNestingLevel = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-password
dmsemdsPassword :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Text))
dmsemdsPassword = lens _dMSEndpointMongoDbSettingsPassword (\s a -> s { _dMSEndpointMongoDbSettingsPassword = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-port
dmsemdsPort :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Integer'))
dmsemdsPort = lens _dMSEndpointMongoDbSettingsPort (\s a -> s { _dMSEndpointMongoDbSettingsPort = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-servername
dmsemdsServerName :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Text))
dmsemdsServerName = lens _dMSEndpointMongoDbSettingsServerName (\s a -> s { _dMSEndpointMongoDbSettingsServerName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-username
dmsemdsUsername :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Text))
dmsemdsUsername = lens _dMSEndpointMongoDbSettingsUsername (\s a -> s { _dMSEndpointMongoDbSettingsUsername = a })