packages feed

amazonka-rds-2.0: gen/Amazonka/RDS/DescribeDBClusterBacktracks.hs

{-# 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@
    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.
    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@.
    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.
    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@
    dbClusterIdentifier :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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 pDBClusterIdentifier_ =
  DescribeDBClusterBacktracks'
    { backtrackIdentifier =
        Prelude.Nothing,
      filters = Prelude.Nothing,
      marker = Prelude.Nothing,
      maxRecords = Prelude.Nothing,
      dbClusterIdentifier = 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.lens (\DescribeDBClusterBacktracks' {backtrackIdentifier} -> backtrackIdentifier) (\s@DescribeDBClusterBacktracks' {} a -> s {backtrackIdentifier = 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.lens (\DescribeDBClusterBacktracks' {filters} -> filters) (\s@DescribeDBClusterBacktracks' {} a -> s {filters = a} :: DescribeDBClusterBacktracks) Prelude.. Lens.mapping 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.lens (\DescribeDBClusterBacktracks' {marker} -> marker) (\s@DescribeDBClusterBacktracks' {} a -> s {marker = 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.lens (\DescribeDBClusterBacktracks' {maxRecords} -> maxRecords) (\s@DescribeDBClusterBacktracks' {} a -> s {maxRecords = 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.lens (\DescribeDBClusterBacktracks' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@DescribeDBClusterBacktracks' {} a -> s {dbClusterIdentifier = a} :: DescribeDBClusterBacktracks)

instance Core.AWSPager DescribeDBClusterBacktracks where
  page rq rs
    | Core.stop
        ( rs
            Lens.^? describeDBClusterBacktracksResponse_marker
            Prelude.. Lens._Just
        ) =
        Prelude.Nothing
    | Core.stop
        ( rs
            Lens.^? describeDBClusterBacktracksResponse_dbClusterBacktracks
            Prelude.. Lens._Just
        ) =
        Prelude.Nothing
    | Prelude.otherwise =
        Prelude.Just
          Prelude.$ rq
          Prelude.& describeDBClusterBacktracks_marker
          Lens..~ rs
          Lens.^? describeDBClusterBacktracksResponse_marker
          Prelude.. Lens._Just

instance Core.AWSRequest DescribeDBClusterBacktracks where
  type
    AWSResponse DescribeDBClusterBacktracks =
      DescribeDBClusterBacktracksResponse
  request overrides =
    Request.postQuery (overrides defaultService)
  response =
    Response.receiveXMLWrapper
      "DescribeDBClusterBacktracksResult"
      ( \s h x ->
          DescribeDBClusterBacktracksResponse'
            Prelude.<$> ( x
                            Data..@? "DBClusterBacktracks"
                            Core..!@ Prelude.mempty
                            Prelude.>>= Core.may (Data.parseXMLList "DBClusterBacktrack")
                        )
            Prelude.<*> (x Data..@? "Marker")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable DescribeDBClusterBacktracks where
  hashWithSalt _salt DescribeDBClusterBacktracks' {..} =
    _salt
      `Prelude.hashWithSalt` backtrackIdentifier
      `Prelude.hashWithSalt` filters
      `Prelude.hashWithSalt` marker
      `Prelude.hashWithSalt` maxRecords
      `Prelude.hashWithSalt` dbClusterIdentifier

instance Prelude.NFData DescribeDBClusterBacktracks where
  rnf DescribeDBClusterBacktracks' {..} =
    Prelude.rnf backtrackIdentifier
      `Prelude.seq` Prelude.rnf filters
      `Prelude.seq` Prelude.rnf marker
      `Prelude.seq` Prelude.rnf maxRecords
      `Prelude.seq` Prelude.rnf dbClusterIdentifier

instance Data.ToHeaders DescribeDBClusterBacktracks where
  toHeaders = Prelude.const Prelude.mempty

instance Data.ToPath DescribeDBClusterBacktracks where
  toPath = Prelude.const "/"

instance Data.ToQuery DescribeDBClusterBacktracks where
  toQuery DescribeDBClusterBacktracks' {..} =
    Prelude.mconcat
      [ "Action"
          Data.=: ( "DescribeDBClusterBacktracks" ::
                      Prelude.ByteString
                  ),
        "Version"
          Data.=: ("2014-10-31" :: Prelude.ByteString),
        "BacktrackIdentifier" Data.=: backtrackIdentifier,
        "Filters"
          Data.=: Data.toQuery
            (Data.toQueryList "Filter" Prelude.<$> filters),
        "Marker" Data.=: marker,
        "MaxRecords" Data.=: maxRecords,
        "DBClusterIdentifier" Data.=: 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.
    dbClusterBacktracks :: Prelude.Maybe [DBClusterBacktrack],
    -- | A pagination token that can be used in a later
    -- @DescribeDBClusterBacktracks@ request.
    marker :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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 pHttpStatus_ =
  DescribeDBClusterBacktracksResponse'
    { dbClusterBacktracks =
        Prelude.Nothing,
      marker = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

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

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

instance
  Prelude.NFData
    DescribeDBClusterBacktracksResponse
  where
  rnf DescribeDBClusterBacktracksResponse' {..} =
    Prelude.rnf dbClusterBacktracks
      `Prelude.seq` Prelude.rnf marker
      `Prelude.seq` Prelude.rnf httpStatus