packages feed

stratosphere-0.51.0: library-gen/Stratosphere/ResourceProperties/ResourceGroupsGroupQuery.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resourcegroups-group-query.html

module Stratosphere.ResourceProperties.ResourceGroupsGroupQuery where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.ResourceGroupsGroupTagFilter

-- | Full data type definition for ResourceGroupsGroupQuery. See
-- 'resourceGroupsGroupQuery' for a more convenient constructor.
data ResourceGroupsGroupQuery =
  ResourceGroupsGroupQuery
  { _resourceGroupsGroupQueryResourceTypeFilters :: Maybe (ValList Text)
  , _resourceGroupsGroupQueryStackIdentifier :: Maybe (Val Text)
  , _resourceGroupsGroupQueryTagFilters :: Maybe [ResourceGroupsGroupTagFilter]
  } deriving (Show, Eq)

instance ToJSON ResourceGroupsGroupQuery where
  toJSON ResourceGroupsGroupQuery{..} =
    object $
    catMaybes
    [ fmap (("ResourceTypeFilters",) . toJSON) _resourceGroupsGroupQueryResourceTypeFilters
    , fmap (("StackIdentifier",) . toJSON) _resourceGroupsGroupQueryStackIdentifier
    , fmap (("TagFilters",) . toJSON) _resourceGroupsGroupQueryTagFilters
    ]

-- | Constructor for 'ResourceGroupsGroupQuery' containing required fields as
-- arguments.
resourceGroupsGroupQuery
  :: ResourceGroupsGroupQuery
resourceGroupsGroupQuery  =
  ResourceGroupsGroupQuery
  { _resourceGroupsGroupQueryResourceTypeFilters = Nothing
  , _resourceGroupsGroupQueryStackIdentifier = Nothing
  , _resourceGroupsGroupQueryTagFilters = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resourcegroups-group-query.html#cfn-resourcegroups-group-query-resourcetypefilters
rggqResourceTypeFilters :: Lens' ResourceGroupsGroupQuery (Maybe (ValList Text))
rggqResourceTypeFilters = lens _resourceGroupsGroupQueryResourceTypeFilters (\s a -> s { _resourceGroupsGroupQueryResourceTypeFilters = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resourcegroups-group-query.html#cfn-resourcegroups-group-query-stackidentifier
rggqStackIdentifier :: Lens' ResourceGroupsGroupQuery (Maybe (Val Text))
rggqStackIdentifier = lens _resourceGroupsGroupQueryStackIdentifier (\s a -> s { _resourceGroupsGroupQueryStackIdentifier = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resourcegroups-group-query.html#cfn-resourcegroups-group-query-tagfilters
rggqTagFilters :: Lens' ResourceGroupsGroupQuery (Maybe [ResourceGroupsGroupTagFilter])
rggqTagFilters = lens _resourceGroupsGroupQueryTagFilters (\s a -> s { _resourceGroupsGroupQueryTagFilters = a })