packages feed

stratosphere-0.58.0: library-gen/Stratosphere/ResourceProperties/ApplicationInsightsApplicationComponentConfiguration.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentconfiguration.html

module Stratosphere.ResourceProperties.ApplicationInsightsApplicationComponentConfiguration where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.ApplicationInsightsApplicationConfigurationDetails
import Stratosphere.ResourceProperties.ApplicationInsightsApplicationSubComponentTypeConfiguration

-- | Full data type definition for
-- ApplicationInsightsApplicationComponentConfiguration. See
-- 'applicationInsightsApplicationComponentConfiguration' for a more
-- convenient constructor.
data ApplicationInsightsApplicationComponentConfiguration =
  ApplicationInsightsApplicationComponentConfiguration
  { _applicationInsightsApplicationComponentConfigurationConfigurationDetails :: Maybe ApplicationInsightsApplicationConfigurationDetails
  , _applicationInsightsApplicationComponentConfigurationSubComponentTypeConfigurations :: Maybe [ApplicationInsightsApplicationSubComponentTypeConfiguration]
  } deriving (Show, Eq)

instance ToJSON ApplicationInsightsApplicationComponentConfiguration where
  toJSON ApplicationInsightsApplicationComponentConfiguration{..} =
    object $
    catMaybes
    [ fmap (("ConfigurationDetails",) . toJSON) _applicationInsightsApplicationComponentConfigurationConfigurationDetails
    , fmap (("SubComponentTypeConfigurations",) . toJSON) _applicationInsightsApplicationComponentConfigurationSubComponentTypeConfigurations
    ]

-- | Constructor for 'ApplicationInsightsApplicationComponentConfiguration'
-- containing required fields as arguments.
applicationInsightsApplicationComponentConfiguration
  :: ApplicationInsightsApplicationComponentConfiguration
applicationInsightsApplicationComponentConfiguration  =
  ApplicationInsightsApplicationComponentConfiguration
  { _applicationInsightsApplicationComponentConfigurationConfigurationDetails = Nothing
  , _applicationInsightsApplicationComponentConfigurationSubComponentTypeConfigurations = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentconfiguration.html#cfn-applicationinsights-application-componentconfiguration-configurationdetails
aiaccConfigurationDetails :: Lens' ApplicationInsightsApplicationComponentConfiguration (Maybe ApplicationInsightsApplicationConfigurationDetails)
aiaccConfigurationDetails = lens _applicationInsightsApplicationComponentConfigurationConfigurationDetails (\s a -> s { _applicationInsightsApplicationComponentConfigurationConfigurationDetails = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentconfiguration.html#cfn-applicationinsights-application-componentconfiguration-subcomponenttypeconfigurations
aiaccSubComponentTypeConfigurations :: Lens' ApplicationInsightsApplicationComponentConfiguration (Maybe [ApplicationInsightsApplicationSubComponentTypeConfiguration])
aiaccSubComponentTypeConfigurations = lens _applicationInsightsApplicationComponentConfigurationSubComponentTypeConfigurations (\s a -> s { _applicationInsightsApplicationComponentConfigurationSubComponentTypeConfigurations = a })