packages feed

stratosphere-0.50.0: library-gen/Stratosphere/Resources/AthenaWorkGroup.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html

module Stratosphere.Resources.AthenaWorkGroup where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AthenaWorkGroupTags
import Stratosphere.ResourceProperties.AthenaWorkGroupWorkGroupConfiguration
import Stratosphere.ResourceProperties.AthenaWorkGroupWorkGroupConfigurationUpdates

-- | Full data type definition for AthenaWorkGroup. See 'athenaWorkGroup' for
-- a more convenient constructor.
data AthenaWorkGroup =
  AthenaWorkGroup
  { _athenaWorkGroupDescription :: Maybe (Val Text)
  , _athenaWorkGroupName :: Val Text
  , _athenaWorkGroupRecursiveDeleteOption :: Maybe (Val Bool)
  , _athenaWorkGroupState :: Maybe (Val Text)
  , _athenaWorkGroupTags :: Maybe AthenaWorkGroupTags
  , _athenaWorkGroupWorkGroupConfiguration :: Maybe AthenaWorkGroupWorkGroupConfiguration
  , _athenaWorkGroupWorkGroupConfigurationUpdates :: Maybe AthenaWorkGroupWorkGroupConfigurationUpdates
  } deriving (Show, Eq)

instance ToResourceProperties AthenaWorkGroup where
  toResourceProperties AthenaWorkGroup{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::Athena::WorkGroup"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("Description",) . toJSON) _athenaWorkGroupDescription
        , (Just . ("Name",) . toJSON) _athenaWorkGroupName
        , fmap (("RecursiveDeleteOption",) . toJSON) _athenaWorkGroupRecursiveDeleteOption
        , fmap (("State",) . toJSON) _athenaWorkGroupState
        , fmap (("Tags",) . toJSON) _athenaWorkGroupTags
        , fmap (("WorkGroupConfiguration",) . toJSON) _athenaWorkGroupWorkGroupConfiguration
        , fmap (("WorkGroupConfigurationUpdates",) . toJSON) _athenaWorkGroupWorkGroupConfigurationUpdates
        ]
    }

-- | Constructor for 'AthenaWorkGroup' containing required fields as
-- arguments.
athenaWorkGroup
  :: Val Text -- ^ 'awgName'
  -> AthenaWorkGroup
athenaWorkGroup namearg =
  AthenaWorkGroup
  { _athenaWorkGroupDescription = Nothing
  , _athenaWorkGroupName = namearg
  , _athenaWorkGroupRecursiveDeleteOption = Nothing
  , _athenaWorkGroupState = Nothing
  , _athenaWorkGroupTags = Nothing
  , _athenaWorkGroupWorkGroupConfiguration = Nothing
  , _athenaWorkGroupWorkGroupConfigurationUpdates = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-description
awgDescription :: Lens' AthenaWorkGroup (Maybe (Val Text))
awgDescription = lens _athenaWorkGroupDescription (\s a -> s { _athenaWorkGroupDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-name
awgName :: Lens' AthenaWorkGroup (Val Text)
awgName = lens _athenaWorkGroupName (\s a -> s { _athenaWorkGroupName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-recursivedeleteoption
awgRecursiveDeleteOption :: Lens' AthenaWorkGroup (Maybe (Val Bool))
awgRecursiveDeleteOption = lens _athenaWorkGroupRecursiveDeleteOption (\s a -> s { _athenaWorkGroupRecursiveDeleteOption = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-state
awgState :: Lens' AthenaWorkGroup (Maybe (Val Text))
awgState = lens _athenaWorkGroupState (\s a -> s { _athenaWorkGroupState = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-tags
awgTags :: Lens' AthenaWorkGroup (Maybe AthenaWorkGroupTags)
awgTags = lens _athenaWorkGroupTags (\s a -> s { _athenaWorkGroupTags = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-workgroupconfiguration
awgWorkGroupConfiguration :: Lens' AthenaWorkGroup (Maybe AthenaWorkGroupWorkGroupConfiguration)
awgWorkGroupConfiguration = lens _athenaWorkGroupWorkGroupConfiguration (\s a -> s { _athenaWorkGroupWorkGroupConfiguration = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-workgroupconfigurationupdates
awgWorkGroupConfigurationUpdates :: Lens' AthenaWorkGroup (Maybe AthenaWorkGroupWorkGroupConfigurationUpdates)
awgWorkGroupConfigurationUpdates = lens _athenaWorkGroupWorkGroupConfigurationUpdates (\s a -> s { _athenaWorkGroupWorkGroupConfigurationUpdates = a })