{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Config.SelectAggregateResourceConfig
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Accepts a structured query language (SQL) SELECT command and an
-- aggregator to query configuration state of Amazon Web Services resources
-- across multiple accounts and regions, performs the corresponding search,
-- and returns resource configurations matching the properties.
--
-- For more information about query components, see the
-- <https://docs.aws.amazon.com/config/latest/developerguide/query-components.html Query Components>
-- section in the Config Developer Guide.
--
-- If you run an aggregation query (i.e., using @GROUP BY@ or using
-- aggregate functions such as @COUNT@; e.g.,
-- @SELECT resourceId, COUNT(*) WHERE resourceType = \'AWS::IAM::Role\' GROUP BY resourceId@)
-- and do not specify the @MaxResults@ or the @Limit@ query parameters, the
-- default page size is set to 500.
--
-- If you run a non-aggregation query (i.e., not using @GROUP BY@ or
-- aggregate function; e.g.,
-- @SELECT * WHERE resourceType = \'AWS::IAM::Role\'@) and do not specify
-- the @MaxResults@ or the @Limit@ query parameters, the default page size
-- is set to 25.
--
-- This operation returns paginated results.
module Amazonka.Config.SelectAggregateResourceConfig
  ( -- * Creating a Request
    SelectAggregateResourceConfig (..),
    newSelectAggregateResourceConfig,

    -- * Request Lenses
    selectAggregateResourceConfig_limit,
    selectAggregateResourceConfig_maxResults,
    selectAggregateResourceConfig_nextToken,
    selectAggregateResourceConfig_expression,
    selectAggregateResourceConfig_configurationAggregatorName,

    -- * Destructuring the Response
    SelectAggregateResourceConfigResponse (..),
    newSelectAggregateResourceConfigResponse,

    -- * Response Lenses
    selectAggregateResourceConfigResponse_nextToken,
    selectAggregateResourceConfigResponse_queryInfo,
    selectAggregateResourceConfigResponse_results,
    selectAggregateResourceConfigResponse_httpStatus,
  )
where

import Amazonka.Config.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newSelectAggregateResourceConfig' smart constructor.
data SelectAggregateResourceConfig = SelectAggregateResourceConfig'
  { -- | The maximum number of query results returned on each page.
    SelectAggregateResourceConfig -> Maybe Natural
limit :: Prelude.Maybe Prelude.Natural,
    -- | The maximum number of query results returned on each page. Config also
    -- allows the Limit request parameter.
    SelectAggregateResourceConfig -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The nextToken string returned in a previous request that you use to
    -- request the next page of results in a paginated response.
    SelectAggregateResourceConfig -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The SQL query SELECT command.
    SelectAggregateResourceConfig -> Text
expression :: Prelude.Text,
    -- | The name of the configuration aggregator.
    SelectAggregateResourceConfig -> Text
configurationAggregatorName :: Prelude.Text
  }
  deriving (SelectAggregateResourceConfig
-> SelectAggregateResourceConfig -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SelectAggregateResourceConfig
-> SelectAggregateResourceConfig -> Bool
$c/= :: SelectAggregateResourceConfig
-> SelectAggregateResourceConfig -> Bool
== :: SelectAggregateResourceConfig
-> SelectAggregateResourceConfig -> Bool
$c== :: SelectAggregateResourceConfig
-> SelectAggregateResourceConfig -> Bool
Prelude.Eq, ReadPrec [SelectAggregateResourceConfig]
ReadPrec SelectAggregateResourceConfig
Int -> ReadS SelectAggregateResourceConfig
ReadS [SelectAggregateResourceConfig]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SelectAggregateResourceConfig]
$creadListPrec :: ReadPrec [SelectAggregateResourceConfig]
readPrec :: ReadPrec SelectAggregateResourceConfig
$creadPrec :: ReadPrec SelectAggregateResourceConfig
readList :: ReadS [SelectAggregateResourceConfig]
$creadList :: ReadS [SelectAggregateResourceConfig]
readsPrec :: Int -> ReadS SelectAggregateResourceConfig
$creadsPrec :: Int -> ReadS SelectAggregateResourceConfig
Prelude.Read, Int -> SelectAggregateResourceConfig -> ShowS
[SelectAggregateResourceConfig] -> ShowS
SelectAggregateResourceConfig -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SelectAggregateResourceConfig] -> ShowS
$cshowList :: [SelectAggregateResourceConfig] -> ShowS
show :: SelectAggregateResourceConfig -> String
$cshow :: SelectAggregateResourceConfig -> String
showsPrec :: Int -> SelectAggregateResourceConfig -> ShowS
$cshowsPrec :: Int -> SelectAggregateResourceConfig -> ShowS
Prelude.Show, forall x.
Rep SelectAggregateResourceConfig x
-> SelectAggregateResourceConfig
forall x.
SelectAggregateResourceConfig
-> Rep SelectAggregateResourceConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep SelectAggregateResourceConfig x
-> SelectAggregateResourceConfig
$cfrom :: forall x.
SelectAggregateResourceConfig
-> Rep SelectAggregateResourceConfig x
Prelude.Generic)

-- |
-- Create a value of 'SelectAggregateResourceConfig' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'limit', 'selectAggregateResourceConfig_limit' - The maximum number of query results returned on each page.
--
-- 'maxResults', 'selectAggregateResourceConfig_maxResults' - The maximum number of query results returned on each page. Config also
-- allows the Limit request parameter.
--
-- 'nextToken', 'selectAggregateResourceConfig_nextToken' - The nextToken string returned in a previous request that you use to
-- request the next page of results in a paginated response.
--
-- 'expression', 'selectAggregateResourceConfig_expression' - The SQL query SELECT command.
--
-- 'configurationAggregatorName', 'selectAggregateResourceConfig_configurationAggregatorName' - The name of the configuration aggregator.
newSelectAggregateResourceConfig ::
  -- | 'expression'
  Prelude.Text ->
  -- | 'configurationAggregatorName'
  Prelude.Text ->
  SelectAggregateResourceConfig
newSelectAggregateResourceConfig :: Text -> Text -> SelectAggregateResourceConfig
newSelectAggregateResourceConfig
  Text
pExpression_
  Text
pConfigurationAggregatorName_ =
    SelectAggregateResourceConfig'
      { $sel:limit:SelectAggregateResourceConfig' :: Maybe Natural
limit =
          forall a. Maybe a
Prelude.Nothing,
        $sel:maxResults:SelectAggregateResourceConfig' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:SelectAggregateResourceConfig' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:expression:SelectAggregateResourceConfig' :: Text
expression = Text
pExpression_,
        $sel:configurationAggregatorName:SelectAggregateResourceConfig' :: Text
configurationAggregatorName =
          Text
pConfigurationAggregatorName_
      }

-- | The maximum number of query results returned on each page.
selectAggregateResourceConfig_limit :: Lens.Lens' SelectAggregateResourceConfig (Prelude.Maybe Prelude.Natural)
selectAggregateResourceConfig_limit :: Lens' SelectAggregateResourceConfig (Maybe Natural)
selectAggregateResourceConfig_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SelectAggregateResourceConfig' {Maybe Natural
limit :: Maybe Natural
$sel:limit:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Natural
limit} -> Maybe Natural
limit) (\s :: SelectAggregateResourceConfig
s@SelectAggregateResourceConfig' {} Maybe Natural
a -> SelectAggregateResourceConfig
s {$sel:limit:SelectAggregateResourceConfig' :: Maybe Natural
limit = Maybe Natural
a} :: SelectAggregateResourceConfig)

-- | The maximum number of query results returned on each page. Config also
-- allows the Limit request parameter.
selectAggregateResourceConfig_maxResults :: Lens.Lens' SelectAggregateResourceConfig (Prelude.Maybe Prelude.Natural)
selectAggregateResourceConfig_maxResults :: Lens' SelectAggregateResourceConfig (Maybe Natural)
selectAggregateResourceConfig_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SelectAggregateResourceConfig' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: SelectAggregateResourceConfig
s@SelectAggregateResourceConfig' {} Maybe Natural
a -> SelectAggregateResourceConfig
s {$sel:maxResults:SelectAggregateResourceConfig' :: Maybe Natural
maxResults = Maybe Natural
a} :: SelectAggregateResourceConfig)

-- | The nextToken string returned in a previous request that you use to
-- request the next page of results in a paginated response.
selectAggregateResourceConfig_nextToken :: Lens.Lens' SelectAggregateResourceConfig (Prelude.Maybe Prelude.Text)
selectAggregateResourceConfig_nextToken :: Lens' SelectAggregateResourceConfig (Maybe Text)
selectAggregateResourceConfig_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SelectAggregateResourceConfig' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: SelectAggregateResourceConfig
s@SelectAggregateResourceConfig' {} Maybe Text
a -> SelectAggregateResourceConfig
s {$sel:nextToken:SelectAggregateResourceConfig' :: Maybe Text
nextToken = Maybe Text
a} :: SelectAggregateResourceConfig)

-- | The SQL query SELECT command.
selectAggregateResourceConfig_expression :: Lens.Lens' SelectAggregateResourceConfig Prelude.Text
selectAggregateResourceConfig_expression :: Lens' SelectAggregateResourceConfig Text
selectAggregateResourceConfig_expression = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SelectAggregateResourceConfig' {Text
expression :: Text
$sel:expression:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Text
expression} -> Text
expression) (\s :: SelectAggregateResourceConfig
s@SelectAggregateResourceConfig' {} Text
a -> SelectAggregateResourceConfig
s {$sel:expression:SelectAggregateResourceConfig' :: Text
expression = Text
a} :: SelectAggregateResourceConfig)

-- | The name of the configuration aggregator.
selectAggregateResourceConfig_configurationAggregatorName :: Lens.Lens' SelectAggregateResourceConfig Prelude.Text
selectAggregateResourceConfig_configurationAggregatorName :: Lens' SelectAggregateResourceConfig Text
selectAggregateResourceConfig_configurationAggregatorName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SelectAggregateResourceConfig' {Text
configurationAggregatorName :: Text
$sel:configurationAggregatorName:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Text
configurationAggregatorName} -> Text
configurationAggregatorName) (\s :: SelectAggregateResourceConfig
s@SelectAggregateResourceConfig' {} Text
a -> SelectAggregateResourceConfig
s {$sel:configurationAggregatorName:SelectAggregateResourceConfig' :: Text
configurationAggregatorName = Text
a} :: SelectAggregateResourceConfig)

instance Core.AWSPager SelectAggregateResourceConfig where
  page :: SelectAggregateResourceConfig
-> AWSResponse SelectAggregateResourceConfig
-> Maybe SelectAggregateResourceConfig
page SelectAggregateResourceConfig
rq AWSResponse SelectAggregateResourceConfig
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse SelectAggregateResourceConfig
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' SelectAggregateResourceConfigResponse (Maybe Text)
selectAggregateResourceConfigResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse SelectAggregateResourceConfig
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' SelectAggregateResourceConfigResponse (Maybe [Text])
selectAggregateResourceConfigResponse_results
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ SelectAggregateResourceConfig
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' SelectAggregateResourceConfig (Maybe Text)
selectAggregateResourceConfig_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse SelectAggregateResourceConfig
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' SelectAggregateResourceConfigResponse (Maybe Text)
selectAggregateResourceConfigResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance
  Core.AWSRequest
    SelectAggregateResourceConfig
  where
  type
    AWSResponse SelectAggregateResourceConfig =
      SelectAggregateResourceConfigResponse
  request :: (Service -> Service)
-> SelectAggregateResourceConfig
-> Request SelectAggregateResourceConfig
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy SelectAggregateResourceConfig
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse SelectAggregateResourceConfig)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe QueryInfo
-> Maybe [Text]
-> Int
-> SelectAggregateResourceConfigResponse
SelectAggregateResourceConfigResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"NextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"QueryInfo")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Results" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    SelectAggregateResourceConfig
  where
  hashWithSalt :: Int -> SelectAggregateResourceConfig -> Int
hashWithSalt Int
_salt SelectAggregateResourceConfig' {Maybe Natural
Maybe Text
Text
configurationAggregatorName :: Text
expression :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
limit :: Maybe Natural
$sel:configurationAggregatorName:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Text
$sel:expression:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Text
$sel:nextToken:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Text
$sel:maxResults:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Natural
$sel:limit:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
limit
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
expression
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
configurationAggregatorName

instance Prelude.NFData SelectAggregateResourceConfig where
  rnf :: SelectAggregateResourceConfig -> ()
rnf SelectAggregateResourceConfig' {Maybe Natural
Maybe Text
Text
configurationAggregatorName :: Text
expression :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
limit :: Maybe Natural
$sel:configurationAggregatorName:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Text
$sel:expression:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Text
$sel:nextToken:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Text
$sel:maxResults:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Natural
$sel:limit:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
limit
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
expression
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
configurationAggregatorName

instance Data.ToHeaders SelectAggregateResourceConfig where
  toHeaders :: SelectAggregateResourceConfig -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"StarlingDoveService.SelectAggregateResourceConfig" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON SelectAggregateResourceConfig where
  toJSON :: SelectAggregateResourceConfig -> Value
toJSON SelectAggregateResourceConfig' {Maybe Natural
Maybe Text
Text
configurationAggregatorName :: Text
expression :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
limit :: Maybe Natural
$sel:configurationAggregatorName:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Text
$sel:expression:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Text
$sel:nextToken:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Text
$sel:maxResults:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Natural
$sel:limit:SelectAggregateResourceConfig' :: SelectAggregateResourceConfig -> Maybe Natural
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Limit" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
limit,
            (Key
"MaxResults" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxResults,
            (Key
"NextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken,
            forall a. a -> Maybe a
Prelude.Just (Key
"Expression" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
expression),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"ConfigurationAggregatorName"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
configurationAggregatorName
              )
          ]
      )

instance Data.ToPath SelectAggregateResourceConfig where
  toPath :: SelectAggregateResourceConfig -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery SelectAggregateResourceConfig where
  toQuery :: SelectAggregateResourceConfig -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newSelectAggregateResourceConfigResponse' smart constructor.
data SelectAggregateResourceConfigResponse = SelectAggregateResourceConfigResponse'
  { -- | The nextToken string returned in a previous request that you use to
    -- request the next page of results in a paginated response.
    SelectAggregateResourceConfigResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    SelectAggregateResourceConfigResponse -> Maybe QueryInfo
queryInfo :: Prelude.Maybe QueryInfo,
    -- | Returns the results for the SQL query.
    SelectAggregateResourceConfigResponse -> Maybe [Text]
results :: Prelude.Maybe [Prelude.Text],
    -- | The response's http status code.
    SelectAggregateResourceConfigResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (SelectAggregateResourceConfigResponse
-> SelectAggregateResourceConfigResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SelectAggregateResourceConfigResponse
-> SelectAggregateResourceConfigResponse -> Bool
$c/= :: SelectAggregateResourceConfigResponse
-> SelectAggregateResourceConfigResponse -> Bool
== :: SelectAggregateResourceConfigResponse
-> SelectAggregateResourceConfigResponse -> Bool
$c== :: SelectAggregateResourceConfigResponse
-> SelectAggregateResourceConfigResponse -> Bool
Prelude.Eq, ReadPrec [SelectAggregateResourceConfigResponse]
ReadPrec SelectAggregateResourceConfigResponse
Int -> ReadS SelectAggregateResourceConfigResponse
ReadS [SelectAggregateResourceConfigResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SelectAggregateResourceConfigResponse]
$creadListPrec :: ReadPrec [SelectAggregateResourceConfigResponse]
readPrec :: ReadPrec SelectAggregateResourceConfigResponse
$creadPrec :: ReadPrec SelectAggregateResourceConfigResponse
readList :: ReadS [SelectAggregateResourceConfigResponse]
$creadList :: ReadS [SelectAggregateResourceConfigResponse]
readsPrec :: Int -> ReadS SelectAggregateResourceConfigResponse
$creadsPrec :: Int -> ReadS SelectAggregateResourceConfigResponse
Prelude.Read, Int -> SelectAggregateResourceConfigResponse -> ShowS
[SelectAggregateResourceConfigResponse] -> ShowS
SelectAggregateResourceConfigResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SelectAggregateResourceConfigResponse] -> ShowS
$cshowList :: [SelectAggregateResourceConfigResponse] -> ShowS
show :: SelectAggregateResourceConfigResponse -> String
$cshow :: SelectAggregateResourceConfigResponse -> String
showsPrec :: Int -> SelectAggregateResourceConfigResponse -> ShowS
$cshowsPrec :: Int -> SelectAggregateResourceConfigResponse -> ShowS
Prelude.Show, forall x.
Rep SelectAggregateResourceConfigResponse x
-> SelectAggregateResourceConfigResponse
forall x.
SelectAggregateResourceConfigResponse
-> Rep SelectAggregateResourceConfigResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep SelectAggregateResourceConfigResponse x
-> SelectAggregateResourceConfigResponse
$cfrom :: forall x.
SelectAggregateResourceConfigResponse
-> Rep SelectAggregateResourceConfigResponse x
Prelude.Generic)

-- |
-- Create a value of 'SelectAggregateResourceConfigResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'nextToken', 'selectAggregateResourceConfigResponse_nextToken' - The nextToken string returned in a previous request that you use to
-- request the next page of results in a paginated response.
--
-- 'queryInfo', 'selectAggregateResourceConfigResponse_queryInfo' - Undocumented member.
--
-- 'results', 'selectAggregateResourceConfigResponse_results' - Returns the results for the SQL query.
--
-- 'httpStatus', 'selectAggregateResourceConfigResponse_httpStatus' - The response's http status code.
newSelectAggregateResourceConfigResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  SelectAggregateResourceConfigResponse
newSelectAggregateResourceConfigResponse :: Int -> SelectAggregateResourceConfigResponse
newSelectAggregateResourceConfigResponse Int
pHttpStatus_ =
  SelectAggregateResourceConfigResponse'
    { $sel:nextToken:SelectAggregateResourceConfigResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:queryInfo:SelectAggregateResourceConfigResponse' :: Maybe QueryInfo
queryInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:results:SelectAggregateResourceConfigResponse' :: Maybe [Text]
results = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:SelectAggregateResourceConfigResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The nextToken string returned in a previous request that you use to
-- request the next page of results in a paginated response.
selectAggregateResourceConfigResponse_nextToken :: Lens.Lens' SelectAggregateResourceConfigResponse (Prelude.Maybe Prelude.Text)
selectAggregateResourceConfigResponse_nextToken :: Lens' SelectAggregateResourceConfigResponse (Maybe Text)
selectAggregateResourceConfigResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SelectAggregateResourceConfigResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:SelectAggregateResourceConfigResponse' :: SelectAggregateResourceConfigResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: SelectAggregateResourceConfigResponse
s@SelectAggregateResourceConfigResponse' {} Maybe Text
a -> SelectAggregateResourceConfigResponse
s {$sel:nextToken:SelectAggregateResourceConfigResponse' :: Maybe Text
nextToken = Maybe Text
a} :: SelectAggregateResourceConfigResponse)

-- | Undocumented member.
selectAggregateResourceConfigResponse_queryInfo :: Lens.Lens' SelectAggregateResourceConfigResponse (Prelude.Maybe QueryInfo)
selectAggregateResourceConfigResponse_queryInfo :: Lens' SelectAggregateResourceConfigResponse (Maybe QueryInfo)
selectAggregateResourceConfigResponse_queryInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SelectAggregateResourceConfigResponse' {Maybe QueryInfo
queryInfo :: Maybe QueryInfo
$sel:queryInfo:SelectAggregateResourceConfigResponse' :: SelectAggregateResourceConfigResponse -> Maybe QueryInfo
queryInfo} -> Maybe QueryInfo
queryInfo) (\s :: SelectAggregateResourceConfigResponse
s@SelectAggregateResourceConfigResponse' {} Maybe QueryInfo
a -> SelectAggregateResourceConfigResponse
s {$sel:queryInfo:SelectAggregateResourceConfigResponse' :: Maybe QueryInfo
queryInfo = Maybe QueryInfo
a} :: SelectAggregateResourceConfigResponse)

-- | Returns the results for the SQL query.
selectAggregateResourceConfigResponse_results :: Lens.Lens' SelectAggregateResourceConfigResponse (Prelude.Maybe [Prelude.Text])
selectAggregateResourceConfigResponse_results :: Lens' SelectAggregateResourceConfigResponse (Maybe [Text])
selectAggregateResourceConfigResponse_results = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SelectAggregateResourceConfigResponse' {Maybe [Text]
results :: Maybe [Text]
$sel:results:SelectAggregateResourceConfigResponse' :: SelectAggregateResourceConfigResponse -> Maybe [Text]
results} -> Maybe [Text]
results) (\s :: SelectAggregateResourceConfigResponse
s@SelectAggregateResourceConfigResponse' {} Maybe [Text]
a -> SelectAggregateResourceConfigResponse
s {$sel:results:SelectAggregateResourceConfigResponse' :: Maybe [Text]
results = Maybe [Text]
a} :: SelectAggregateResourceConfigResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The response's http status code.
selectAggregateResourceConfigResponse_httpStatus :: Lens.Lens' SelectAggregateResourceConfigResponse Prelude.Int
selectAggregateResourceConfigResponse_httpStatus :: Lens' SelectAggregateResourceConfigResponse Int
selectAggregateResourceConfigResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SelectAggregateResourceConfigResponse' {Int
httpStatus :: Int
$sel:httpStatus:SelectAggregateResourceConfigResponse' :: SelectAggregateResourceConfigResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: SelectAggregateResourceConfigResponse
s@SelectAggregateResourceConfigResponse' {} Int
a -> SelectAggregateResourceConfigResponse
s {$sel:httpStatus:SelectAggregateResourceConfigResponse' :: Int
httpStatus = Int
a} :: SelectAggregateResourceConfigResponse)

instance
  Prelude.NFData
    SelectAggregateResourceConfigResponse
  where
  rnf :: SelectAggregateResourceConfigResponse -> ()
rnf SelectAggregateResourceConfigResponse' {Int
Maybe [Text]
Maybe Text
Maybe QueryInfo
httpStatus :: Int
results :: Maybe [Text]
queryInfo :: Maybe QueryInfo
nextToken :: Maybe Text
$sel:httpStatus:SelectAggregateResourceConfigResponse' :: SelectAggregateResourceConfigResponse -> Int
$sel:results:SelectAggregateResourceConfigResponse' :: SelectAggregateResourceConfigResponse -> Maybe [Text]
$sel:queryInfo:SelectAggregateResourceConfigResponse' :: SelectAggregateResourceConfigResponse -> Maybe QueryInfo
$sel:nextToken:SelectAggregateResourceConfigResponse' :: SelectAggregateResourceConfigResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe QueryInfo
queryInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
results
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus