{-# 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.RDS.DescribeDBClusterBacktracks
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns information about backtracks for a DB cluster.
--
-- For more information on Amazon Aurora, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html What is Amazon Aurora?>
-- in the /Amazon Aurora User Guide/.
--
-- This action only applies to Aurora MySQL DB clusters.
--
-- This operation returns paginated results.
module Amazonka.RDS.DescribeDBClusterBacktracks
  ( -- * Creating a Request
    DescribeDBClusterBacktracks (..),
    newDescribeDBClusterBacktracks,

    -- * Request Lenses
    describeDBClusterBacktracks_backtrackIdentifier,
    describeDBClusterBacktracks_filters,
    describeDBClusterBacktracks_marker,
    describeDBClusterBacktracks_maxRecords,
    describeDBClusterBacktracks_dbClusterIdentifier,

    -- * Destructuring the Response
    DescribeDBClusterBacktracksResponse (..),
    newDescribeDBClusterBacktracksResponse,

    -- * Response Lenses
    describeDBClusterBacktracksResponse_dbClusterBacktracks,
    describeDBClusterBacktracksResponse_marker,
    describeDBClusterBacktracksResponse_httpStatus,
  )
where

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 Amazonka.RDS.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- |
--
-- /See:/ 'newDescribeDBClusterBacktracks' smart constructor.
data DescribeDBClusterBacktracks = DescribeDBClusterBacktracks'
  { -- | If specified, this value is the backtrack identifier of the backtrack to
    -- be described.
    --
    -- Constraints:
    --
    -- -   Must contain a valid universally unique identifier (UUID). For more
    --     information about UUIDs, see
    --     <http://www.ietf.org/rfc/rfc4122.txt A Universally Unique Identifier (UUID) URN Namespace>.
    --
    -- Example: @123e4567-e89b-12d3-a456-426655440000@
    DescribeDBClusterBacktracks -> Maybe Text
backtrackIdentifier :: Prelude.Maybe Prelude.Text,
    -- | A filter that specifies one or more DB clusters to describe. Supported
    -- filters include the following:
    --
    -- -   @db-cluster-backtrack-id@ - Accepts backtrack identifiers. The
    --     results list includes information about only the backtracks
    --     identified by these identifiers.
    --
    -- -   @db-cluster-backtrack-status@ - Accepts any of the following
    --     backtrack status values:
    --
    --     -   @applying@
    --
    --     -   @completed@
    --
    --     -   @failed@
    --
    --     -   @pending@
    --
    --     The results list includes information about only the backtracks
    --     identified by these values.
    DescribeDBClusterBacktracks -> Maybe [Filter]
filters :: Prelude.Maybe [Filter],
    -- | An optional pagination token provided by a previous
    -- @DescribeDBClusterBacktracks@ request. If this parameter is specified,
    -- the response includes only records beyond the marker, up to the value
    -- specified by @MaxRecords@.
    DescribeDBClusterBacktracks -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of records to include in the response. If more
    -- records exist than the specified @MaxRecords@ value, a pagination token
    -- called a marker is included in the response so you can retrieve the
    -- remaining results.
    --
    -- Default: 100
    --
    -- Constraints: Minimum 20, maximum 100.
    DescribeDBClusterBacktracks -> Maybe Int
maxRecords :: Prelude.Maybe Prelude.Int,
    -- | The DB cluster identifier of the DB cluster to be described. This
    -- parameter is stored as a lowercase string.
    --
    -- Constraints:
    --
    -- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
    --
    -- -   First character must be a letter.
    --
    -- -   Can\'t end with a hyphen or contain two consecutive hyphens.
    --
    -- Example: @my-cluster1@
    DescribeDBClusterBacktracks -> Text
dbClusterIdentifier :: Prelude.Text
  }
  deriving (DescribeDBClusterBacktracks -> DescribeDBClusterBacktracks -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDBClusterBacktracks -> DescribeDBClusterBacktracks -> Bool
$c/= :: DescribeDBClusterBacktracks -> DescribeDBClusterBacktracks -> Bool
== :: DescribeDBClusterBacktracks -> DescribeDBClusterBacktracks -> Bool
$c== :: DescribeDBClusterBacktracks -> DescribeDBClusterBacktracks -> Bool
Prelude.Eq, ReadPrec [DescribeDBClusterBacktracks]
ReadPrec DescribeDBClusterBacktracks
Int -> ReadS DescribeDBClusterBacktracks
ReadS [DescribeDBClusterBacktracks]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDBClusterBacktracks]
$creadListPrec :: ReadPrec [DescribeDBClusterBacktracks]
readPrec :: ReadPrec DescribeDBClusterBacktracks
$creadPrec :: ReadPrec DescribeDBClusterBacktracks
readList :: ReadS [DescribeDBClusterBacktracks]
$creadList :: ReadS [DescribeDBClusterBacktracks]
readsPrec :: Int -> ReadS DescribeDBClusterBacktracks
$creadsPrec :: Int -> ReadS DescribeDBClusterBacktracks
Prelude.Read, Int -> DescribeDBClusterBacktracks -> ShowS
[DescribeDBClusterBacktracks] -> ShowS
DescribeDBClusterBacktracks -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDBClusterBacktracks] -> ShowS
$cshowList :: [DescribeDBClusterBacktracks] -> ShowS
show :: DescribeDBClusterBacktracks -> String
$cshow :: DescribeDBClusterBacktracks -> String
showsPrec :: Int -> DescribeDBClusterBacktracks -> ShowS
$cshowsPrec :: Int -> DescribeDBClusterBacktracks -> ShowS
Prelude.Show, forall x.
Rep DescribeDBClusterBacktracks x -> DescribeDBClusterBacktracks
forall x.
DescribeDBClusterBacktracks -> Rep DescribeDBClusterBacktracks x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDBClusterBacktracks x -> DescribeDBClusterBacktracks
$cfrom :: forall x.
DescribeDBClusterBacktracks -> Rep DescribeDBClusterBacktracks x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDBClusterBacktracks' 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:
--
-- 'backtrackIdentifier', 'describeDBClusterBacktracks_backtrackIdentifier' - If specified, this value is the backtrack identifier of the backtrack to
-- be described.
--
-- Constraints:
--
-- -   Must contain a valid universally unique identifier (UUID). For more
--     information about UUIDs, see
--     <http://www.ietf.org/rfc/rfc4122.txt A Universally Unique Identifier (UUID) URN Namespace>.
--
-- Example: @123e4567-e89b-12d3-a456-426655440000@
--
-- 'filters', 'describeDBClusterBacktracks_filters' - A filter that specifies one or more DB clusters to describe. Supported
-- filters include the following:
--
-- -   @db-cluster-backtrack-id@ - Accepts backtrack identifiers. The
--     results list includes information about only the backtracks
--     identified by these identifiers.
--
-- -   @db-cluster-backtrack-status@ - Accepts any of the following
--     backtrack status values:
--
--     -   @applying@
--
--     -   @completed@
--
--     -   @failed@
--
--     -   @pending@
--
--     The results list includes information about only the backtracks
--     identified by these values.
--
-- 'marker', 'describeDBClusterBacktracks_marker' - An optional pagination token provided by a previous
-- @DescribeDBClusterBacktracks@ request. If this parameter is specified,
-- the response includes only records beyond the marker, up to the value
-- specified by @MaxRecords@.
--
-- 'maxRecords', 'describeDBClusterBacktracks_maxRecords' - The maximum number of records to include in the response. If more
-- records exist than the specified @MaxRecords@ value, a pagination token
-- called a marker is included in the response so you can retrieve the
-- remaining results.
--
-- Default: 100
--
-- Constraints: Minimum 20, maximum 100.
--
-- 'dbClusterIdentifier', 'describeDBClusterBacktracks_dbClusterIdentifier' - The DB cluster identifier of the DB cluster to be described. This
-- parameter is stored as a lowercase string.
--
-- Constraints:
--
-- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
--
-- -   First character must be a letter.
--
-- -   Can\'t end with a hyphen or contain two consecutive hyphens.
--
-- Example: @my-cluster1@
newDescribeDBClusterBacktracks ::
  -- | 'dbClusterIdentifier'
  Prelude.Text ->
  DescribeDBClusterBacktracks
newDescribeDBClusterBacktracks :: Text -> DescribeDBClusterBacktracks
newDescribeDBClusterBacktracks Text
pDBClusterIdentifier_ =
  DescribeDBClusterBacktracks'
    { $sel:backtrackIdentifier:DescribeDBClusterBacktracks' :: Maybe Text
backtrackIdentifier =
        forall a. Maybe a
Prelude.Nothing,
      $sel:filters:DescribeDBClusterBacktracks' :: Maybe [Filter]
filters = forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeDBClusterBacktracks' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:maxRecords:DescribeDBClusterBacktracks' :: Maybe Int
maxRecords = forall a. Maybe a
Prelude.Nothing,
      $sel:dbClusterIdentifier:DescribeDBClusterBacktracks' :: Text
dbClusterIdentifier = Text
pDBClusterIdentifier_
    }

-- | If specified, this value is the backtrack identifier of the backtrack to
-- be described.
--
-- Constraints:
--
-- -   Must contain a valid universally unique identifier (UUID). For more
--     information about UUIDs, see
--     <http://www.ietf.org/rfc/rfc4122.txt A Universally Unique Identifier (UUID) URN Namespace>.
--
-- Example: @123e4567-e89b-12d3-a456-426655440000@
describeDBClusterBacktracks_backtrackIdentifier :: Lens.Lens' DescribeDBClusterBacktracks (Prelude.Maybe Prelude.Text)
describeDBClusterBacktracks_backtrackIdentifier :: Lens' DescribeDBClusterBacktracks (Maybe Text)
describeDBClusterBacktracks_backtrackIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBClusterBacktracks' {Maybe Text
backtrackIdentifier :: Maybe Text
$sel:backtrackIdentifier:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Text
backtrackIdentifier} -> Maybe Text
backtrackIdentifier) (\s :: DescribeDBClusterBacktracks
s@DescribeDBClusterBacktracks' {} Maybe Text
a -> DescribeDBClusterBacktracks
s {$sel:backtrackIdentifier:DescribeDBClusterBacktracks' :: Maybe Text
backtrackIdentifier = Maybe Text
a} :: DescribeDBClusterBacktracks)

-- | A filter that specifies one or more DB clusters to describe. Supported
-- filters include the following:
--
-- -   @db-cluster-backtrack-id@ - Accepts backtrack identifiers. The
--     results list includes information about only the backtracks
--     identified by these identifiers.
--
-- -   @db-cluster-backtrack-status@ - Accepts any of the following
--     backtrack status values:
--
--     -   @applying@
--
--     -   @completed@
--
--     -   @failed@
--
--     -   @pending@
--
--     The results list includes information about only the backtracks
--     identified by these values.
describeDBClusterBacktracks_filters :: Lens.Lens' DescribeDBClusterBacktracks (Prelude.Maybe [Filter])
describeDBClusterBacktracks_filters :: Lens' DescribeDBClusterBacktracks (Maybe [Filter])
describeDBClusterBacktracks_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBClusterBacktracks' {Maybe [Filter]
filters :: Maybe [Filter]
$sel:filters:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe [Filter]
filters} -> Maybe [Filter]
filters) (\s :: DescribeDBClusterBacktracks
s@DescribeDBClusterBacktracks' {} Maybe [Filter]
a -> DescribeDBClusterBacktracks
s {$sel:filters:DescribeDBClusterBacktracks' :: Maybe [Filter]
filters = Maybe [Filter]
a} :: DescribeDBClusterBacktracks) 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

-- | An optional pagination token provided by a previous
-- @DescribeDBClusterBacktracks@ request. If this parameter is specified,
-- the response includes only records beyond the marker, up to the value
-- specified by @MaxRecords@.
describeDBClusterBacktracks_marker :: Lens.Lens' DescribeDBClusterBacktracks (Prelude.Maybe Prelude.Text)
describeDBClusterBacktracks_marker :: Lens' DescribeDBClusterBacktracks (Maybe Text)
describeDBClusterBacktracks_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBClusterBacktracks' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeDBClusterBacktracks
s@DescribeDBClusterBacktracks' {} Maybe Text
a -> DescribeDBClusterBacktracks
s {$sel:marker:DescribeDBClusterBacktracks' :: Maybe Text
marker = Maybe Text
a} :: DescribeDBClusterBacktracks)

-- | The maximum number of records to include in the response. If more
-- records exist than the specified @MaxRecords@ value, a pagination token
-- called a marker is included in the response so you can retrieve the
-- remaining results.
--
-- Default: 100
--
-- Constraints: Minimum 20, maximum 100.
describeDBClusterBacktracks_maxRecords :: Lens.Lens' DescribeDBClusterBacktracks (Prelude.Maybe Prelude.Int)
describeDBClusterBacktracks_maxRecords :: Lens' DescribeDBClusterBacktracks (Maybe Int)
describeDBClusterBacktracks_maxRecords = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBClusterBacktracks' {Maybe Int
maxRecords :: Maybe Int
$sel:maxRecords:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Int
maxRecords} -> Maybe Int
maxRecords) (\s :: DescribeDBClusterBacktracks
s@DescribeDBClusterBacktracks' {} Maybe Int
a -> DescribeDBClusterBacktracks
s {$sel:maxRecords:DescribeDBClusterBacktracks' :: Maybe Int
maxRecords = Maybe Int
a} :: DescribeDBClusterBacktracks)

-- | The DB cluster identifier of the DB cluster to be described. This
-- parameter is stored as a lowercase string.
--
-- Constraints:
--
-- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
--
-- -   First character must be a letter.
--
-- -   Can\'t end with a hyphen or contain two consecutive hyphens.
--
-- Example: @my-cluster1@
describeDBClusterBacktracks_dbClusterIdentifier :: Lens.Lens' DescribeDBClusterBacktracks Prelude.Text
describeDBClusterBacktracks_dbClusterIdentifier :: Lens' DescribeDBClusterBacktracks Text
describeDBClusterBacktracks_dbClusterIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBClusterBacktracks' {Text
dbClusterIdentifier :: Text
$sel:dbClusterIdentifier:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Text
dbClusterIdentifier} -> Text
dbClusterIdentifier) (\s :: DescribeDBClusterBacktracks
s@DescribeDBClusterBacktracks' {} Text
a -> DescribeDBClusterBacktracks
s {$sel:dbClusterIdentifier:DescribeDBClusterBacktracks' :: Text
dbClusterIdentifier = Text
a} :: DescribeDBClusterBacktracks)

instance Core.AWSPager DescribeDBClusterBacktracks where
  page :: DescribeDBClusterBacktracks
-> AWSResponse DescribeDBClusterBacktracks
-> Maybe DescribeDBClusterBacktracks
page DescribeDBClusterBacktracks
rq AWSResponse DescribeDBClusterBacktracks
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeDBClusterBacktracks
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDBClusterBacktracksResponse (Maybe Text)
describeDBClusterBacktracksResponse_marker
            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 DescribeDBClusterBacktracks
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeDBClusterBacktracksResponse (Maybe [DBClusterBacktrack])
describeDBClusterBacktracksResponse_dbClusterBacktracks
            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.$ DescribeDBClusterBacktracks
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeDBClusterBacktracks (Maybe Text)
describeDBClusterBacktracks_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeDBClusterBacktracks
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDBClusterBacktracksResponse (Maybe Text)
describeDBClusterBacktracksResponse_marker
          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 DescribeDBClusterBacktracks where
  type
    AWSResponse DescribeDBClusterBacktracks =
      DescribeDBClusterBacktracksResponse
  request :: (Service -> Service)
-> DescribeDBClusterBacktracks
-> Request DescribeDBClusterBacktracks
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeDBClusterBacktracks
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeDBClusterBacktracks)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"DescribeDBClusterBacktracksResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe [DBClusterBacktrack]
-> Maybe Text -> Int -> DescribeDBClusterBacktracksResponse
DescribeDBClusterBacktracksResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DBClusterBacktracks"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"DBClusterBacktrack")
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Marker")
            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 DescribeDBClusterBacktracks where
  hashWithSalt :: Int -> DescribeDBClusterBacktracks -> Int
hashWithSalt Int
_salt DescribeDBClusterBacktracks' {Maybe Int
Maybe [Filter]
Maybe Text
Text
dbClusterIdentifier :: Text
maxRecords :: Maybe Int
marker :: Maybe Text
filters :: Maybe [Filter]
backtrackIdentifier :: Maybe Text
$sel:dbClusterIdentifier:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Text
$sel:maxRecords:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Int
$sel:marker:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Text
$sel:filters:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe [Filter]
$sel:backtrackIdentifier:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
backtrackIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Filter]
filters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxRecords
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
dbClusterIdentifier

instance Prelude.NFData DescribeDBClusterBacktracks where
  rnf :: DescribeDBClusterBacktracks -> ()
rnf DescribeDBClusterBacktracks' {Maybe Int
Maybe [Filter]
Maybe Text
Text
dbClusterIdentifier :: Text
maxRecords :: Maybe Int
marker :: Maybe Text
filters :: Maybe [Filter]
backtrackIdentifier :: Maybe Text
$sel:dbClusterIdentifier:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Text
$sel:maxRecords:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Int
$sel:marker:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Text
$sel:filters:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe [Filter]
$sel:backtrackIdentifier:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
backtrackIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Filter]
filters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxRecords
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
dbClusterIdentifier

instance Data.ToHeaders DescribeDBClusterBacktracks where
  toHeaders :: DescribeDBClusterBacktracks -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

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

instance Data.ToQuery DescribeDBClusterBacktracks where
  toQuery :: DescribeDBClusterBacktracks -> QueryString
toQuery DescribeDBClusterBacktracks' {Maybe Int
Maybe [Filter]
Maybe Text
Text
dbClusterIdentifier :: Text
maxRecords :: Maybe Int
marker :: Maybe Text
filters :: Maybe [Filter]
backtrackIdentifier :: Maybe Text
$sel:dbClusterIdentifier:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Text
$sel:maxRecords:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Int
$sel:marker:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Text
$sel:filters:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe [Filter]
$sel:backtrackIdentifier:DescribeDBClusterBacktracks' :: DescribeDBClusterBacktracks -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeDBClusterBacktracks" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2014-10-31" :: Prelude.ByteString),
        ByteString
"BacktrackIdentifier" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
backtrackIdentifier,
        ByteString
"Filters"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"Filter" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Filter]
filters),
        ByteString
"Marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker,
        ByteString
"MaxRecords" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
maxRecords,
        ByteString
"DBClusterIdentifier" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
dbClusterIdentifier
      ]

-- | Contains the result of a successful invocation of the
-- @DescribeDBClusterBacktracks@ action.
--
-- /See:/ 'newDescribeDBClusterBacktracksResponse' smart constructor.
data DescribeDBClusterBacktracksResponse = DescribeDBClusterBacktracksResponse'
  { -- | Contains a list of backtracks for the user.
    DescribeDBClusterBacktracksResponse -> Maybe [DBClusterBacktrack]
dbClusterBacktracks :: Prelude.Maybe [DBClusterBacktrack],
    -- | A pagination token that can be used in a later
    -- @DescribeDBClusterBacktracks@ request.
    DescribeDBClusterBacktracksResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeDBClusterBacktracksResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeDBClusterBacktracksResponse
-> DescribeDBClusterBacktracksResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDBClusterBacktracksResponse
-> DescribeDBClusterBacktracksResponse -> Bool
$c/= :: DescribeDBClusterBacktracksResponse
-> DescribeDBClusterBacktracksResponse -> Bool
== :: DescribeDBClusterBacktracksResponse
-> DescribeDBClusterBacktracksResponse -> Bool
$c== :: DescribeDBClusterBacktracksResponse
-> DescribeDBClusterBacktracksResponse -> Bool
Prelude.Eq, ReadPrec [DescribeDBClusterBacktracksResponse]
ReadPrec DescribeDBClusterBacktracksResponse
Int -> ReadS DescribeDBClusterBacktracksResponse
ReadS [DescribeDBClusterBacktracksResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDBClusterBacktracksResponse]
$creadListPrec :: ReadPrec [DescribeDBClusterBacktracksResponse]
readPrec :: ReadPrec DescribeDBClusterBacktracksResponse
$creadPrec :: ReadPrec DescribeDBClusterBacktracksResponse
readList :: ReadS [DescribeDBClusterBacktracksResponse]
$creadList :: ReadS [DescribeDBClusterBacktracksResponse]
readsPrec :: Int -> ReadS DescribeDBClusterBacktracksResponse
$creadsPrec :: Int -> ReadS DescribeDBClusterBacktracksResponse
Prelude.Read, Int -> DescribeDBClusterBacktracksResponse -> ShowS
[DescribeDBClusterBacktracksResponse] -> ShowS
DescribeDBClusterBacktracksResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDBClusterBacktracksResponse] -> ShowS
$cshowList :: [DescribeDBClusterBacktracksResponse] -> ShowS
show :: DescribeDBClusterBacktracksResponse -> String
$cshow :: DescribeDBClusterBacktracksResponse -> String
showsPrec :: Int -> DescribeDBClusterBacktracksResponse -> ShowS
$cshowsPrec :: Int -> DescribeDBClusterBacktracksResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeDBClusterBacktracksResponse x
-> DescribeDBClusterBacktracksResponse
forall x.
DescribeDBClusterBacktracksResponse
-> Rep DescribeDBClusterBacktracksResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDBClusterBacktracksResponse x
-> DescribeDBClusterBacktracksResponse
$cfrom :: forall x.
DescribeDBClusterBacktracksResponse
-> Rep DescribeDBClusterBacktracksResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDBClusterBacktracksResponse' 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:
--
-- 'dbClusterBacktracks', 'describeDBClusterBacktracksResponse_dbClusterBacktracks' - Contains a list of backtracks for the user.
--
-- 'marker', 'describeDBClusterBacktracksResponse_marker' - A pagination token that can be used in a later
-- @DescribeDBClusterBacktracks@ request.
--
-- 'httpStatus', 'describeDBClusterBacktracksResponse_httpStatus' - The response's http status code.
newDescribeDBClusterBacktracksResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeDBClusterBacktracksResponse
newDescribeDBClusterBacktracksResponse :: Int -> DescribeDBClusterBacktracksResponse
newDescribeDBClusterBacktracksResponse Int
pHttpStatus_ =
  DescribeDBClusterBacktracksResponse'
    { $sel:dbClusterBacktracks:DescribeDBClusterBacktracksResponse' :: Maybe [DBClusterBacktrack]
dbClusterBacktracks =
        forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeDBClusterBacktracksResponse' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeDBClusterBacktracksResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Contains a list of backtracks for the user.
describeDBClusterBacktracksResponse_dbClusterBacktracks :: Lens.Lens' DescribeDBClusterBacktracksResponse (Prelude.Maybe [DBClusterBacktrack])
describeDBClusterBacktracksResponse_dbClusterBacktracks :: Lens'
  DescribeDBClusterBacktracksResponse (Maybe [DBClusterBacktrack])
describeDBClusterBacktracksResponse_dbClusterBacktracks = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBClusterBacktracksResponse' {Maybe [DBClusterBacktrack]
dbClusterBacktracks :: Maybe [DBClusterBacktrack]
$sel:dbClusterBacktracks:DescribeDBClusterBacktracksResponse' :: DescribeDBClusterBacktracksResponse -> Maybe [DBClusterBacktrack]
dbClusterBacktracks} -> Maybe [DBClusterBacktrack]
dbClusterBacktracks) (\s :: DescribeDBClusterBacktracksResponse
s@DescribeDBClusterBacktracksResponse' {} Maybe [DBClusterBacktrack]
a -> DescribeDBClusterBacktracksResponse
s {$sel:dbClusterBacktracks:DescribeDBClusterBacktracksResponse' :: Maybe [DBClusterBacktrack]
dbClusterBacktracks = Maybe [DBClusterBacktrack]
a} :: DescribeDBClusterBacktracksResponse) 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

-- | A pagination token that can be used in a later
-- @DescribeDBClusterBacktracks@ request.
describeDBClusterBacktracksResponse_marker :: Lens.Lens' DescribeDBClusterBacktracksResponse (Prelude.Maybe Prelude.Text)
describeDBClusterBacktracksResponse_marker :: Lens' DescribeDBClusterBacktracksResponse (Maybe Text)
describeDBClusterBacktracksResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBClusterBacktracksResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeDBClusterBacktracksResponse' :: DescribeDBClusterBacktracksResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeDBClusterBacktracksResponse
s@DescribeDBClusterBacktracksResponse' {} Maybe Text
a -> DescribeDBClusterBacktracksResponse
s {$sel:marker:DescribeDBClusterBacktracksResponse' :: Maybe Text
marker = Maybe Text
a} :: DescribeDBClusterBacktracksResponse)

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

instance
  Prelude.NFData
    DescribeDBClusterBacktracksResponse
  where
  rnf :: DescribeDBClusterBacktracksResponse -> ()
rnf DescribeDBClusterBacktracksResponse' {Int
Maybe [DBClusterBacktrack]
Maybe Text
httpStatus :: Int
marker :: Maybe Text
dbClusterBacktracks :: Maybe [DBClusterBacktrack]
$sel:httpStatus:DescribeDBClusterBacktracksResponse' :: DescribeDBClusterBacktracksResponse -> Int
$sel:marker:DescribeDBClusterBacktracksResponse' :: DescribeDBClusterBacktracksResponse -> Maybe Text
$sel:dbClusterBacktracks:DescribeDBClusterBacktracksResponse' :: DescribeDBClusterBacktracksResponse -> Maybe [DBClusterBacktrack]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [DBClusterBacktrack]
dbClusterBacktracks
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus