{-# 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.DocumentDB.DescribeDBEngineVersions
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns a list of the available engines.
--
-- This operation returns paginated results.
module Amazonka.DocumentDB.DescribeDBEngineVersions
  ( -- * Creating a Request
    DescribeDBEngineVersions (..),
    newDescribeDBEngineVersions,

    -- * Request Lenses
    describeDBEngineVersions_engineVersion,
    describeDBEngineVersions_listSupportedTimezones,
    describeDBEngineVersions_defaultOnly,
    describeDBEngineVersions_filters,
    describeDBEngineVersions_engine,
    describeDBEngineVersions_dbParameterGroupFamily,
    describeDBEngineVersions_listSupportedCharacterSets,
    describeDBEngineVersions_marker,
    describeDBEngineVersions_maxRecords,

    -- * Destructuring the Response
    DescribeDBEngineVersionsResponse (..),
    newDescribeDBEngineVersionsResponse,

    -- * Response Lenses
    describeDBEngineVersionsResponse_marker,
    describeDBEngineVersionsResponse_dbEngineVersions,
    describeDBEngineVersionsResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import Amazonka.DocumentDB.Types
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | Represents the input to DescribeDBEngineVersions.
--
-- /See:/ 'newDescribeDBEngineVersions' smart constructor.
data DescribeDBEngineVersions = DescribeDBEngineVersions'
  { -- | The database engine version to return.
    --
    -- Example: @3.6.0@
    DescribeDBEngineVersions -> Maybe Text
engineVersion :: Prelude.Maybe Prelude.Text,
    -- | If this parameter is specified and the requested engine supports the
    -- @TimeZone@ parameter for @CreateDBInstance@, the response includes a
    -- list of supported time zones for each engine version.
    DescribeDBEngineVersions -> Maybe Bool
listSupportedTimezones :: Prelude.Maybe Prelude.Bool,
    -- | Indicates that only the default version of the specified engine or
    -- engine and major version combination is returned.
    DescribeDBEngineVersions -> Maybe Bool
defaultOnly :: Prelude.Maybe Prelude.Bool,
    -- | This parameter is not currently supported.
    DescribeDBEngineVersions -> Maybe [Filter]
filters :: Prelude.Maybe [Filter],
    -- | The database engine to return.
    DescribeDBEngineVersions -> Maybe Text
engine :: Prelude.Maybe Prelude.Text,
    -- | The name of a specific parameter group family to return details for.
    --
    -- Constraints:
    --
    -- -   If provided, must match an existing @DBParameterGroupFamily@.
    DescribeDBEngineVersions -> Maybe Text
dbParameterGroupFamily :: Prelude.Maybe Prelude.Text,
    -- | If this parameter is specified and the requested engine supports the
    -- @CharacterSetName@ parameter for @CreateDBInstance@, the response
    -- includes a list of supported character sets for each engine version.
    DescribeDBEngineVersions -> Maybe Bool
listSupportedCharacterSets :: Prelude.Maybe Prelude.Bool,
    -- | An optional pagination token provided by a previous request. If this
    -- parameter is specified, the response includes only records beyond the
    -- marker, up to the value specified by @MaxRecords@.
    DescribeDBEngineVersions -> 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
    -- (marker) is included in the response so that the remaining results can
    -- be retrieved.
    --
    -- Default: 100
    --
    -- Constraints: Minimum 20, maximum 100.
    DescribeDBEngineVersions -> Maybe Int
maxRecords :: Prelude.Maybe Prelude.Int
  }
  deriving (DescribeDBEngineVersions -> DescribeDBEngineVersions -> Bool
(DescribeDBEngineVersions -> DescribeDBEngineVersions -> Bool)
-> (DescribeDBEngineVersions -> DescribeDBEngineVersions -> Bool)
-> Eq DescribeDBEngineVersions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDBEngineVersions -> DescribeDBEngineVersions -> Bool
$c/= :: DescribeDBEngineVersions -> DescribeDBEngineVersions -> Bool
== :: DescribeDBEngineVersions -> DescribeDBEngineVersions -> Bool
$c== :: DescribeDBEngineVersions -> DescribeDBEngineVersions -> Bool
Prelude.Eq, ReadPrec [DescribeDBEngineVersions]
ReadPrec DescribeDBEngineVersions
Int -> ReadS DescribeDBEngineVersions
ReadS [DescribeDBEngineVersions]
(Int -> ReadS DescribeDBEngineVersions)
-> ReadS [DescribeDBEngineVersions]
-> ReadPrec DescribeDBEngineVersions
-> ReadPrec [DescribeDBEngineVersions]
-> Read DescribeDBEngineVersions
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDBEngineVersions]
$creadListPrec :: ReadPrec [DescribeDBEngineVersions]
readPrec :: ReadPrec DescribeDBEngineVersions
$creadPrec :: ReadPrec DescribeDBEngineVersions
readList :: ReadS [DescribeDBEngineVersions]
$creadList :: ReadS [DescribeDBEngineVersions]
readsPrec :: Int -> ReadS DescribeDBEngineVersions
$creadsPrec :: Int -> ReadS DescribeDBEngineVersions
Prelude.Read, Int -> DescribeDBEngineVersions -> ShowS
[DescribeDBEngineVersions] -> ShowS
DescribeDBEngineVersions -> String
(Int -> DescribeDBEngineVersions -> ShowS)
-> (DescribeDBEngineVersions -> String)
-> ([DescribeDBEngineVersions] -> ShowS)
-> Show DescribeDBEngineVersions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDBEngineVersions] -> ShowS
$cshowList :: [DescribeDBEngineVersions] -> ShowS
show :: DescribeDBEngineVersions -> String
$cshow :: DescribeDBEngineVersions -> String
showsPrec :: Int -> DescribeDBEngineVersions -> ShowS
$cshowsPrec :: Int -> DescribeDBEngineVersions -> ShowS
Prelude.Show, (forall x.
 DescribeDBEngineVersions -> Rep DescribeDBEngineVersions x)
-> (forall x.
    Rep DescribeDBEngineVersions x -> DescribeDBEngineVersions)
-> Generic DescribeDBEngineVersions
forall x.
Rep DescribeDBEngineVersions x -> DescribeDBEngineVersions
forall x.
DescribeDBEngineVersions -> Rep DescribeDBEngineVersions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDBEngineVersions x -> DescribeDBEngineVersions
$cfrom :: forall x.
DescribeDBEngineVersions -> Rep DescribeDBEngineVersions x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDBEngineVersions' 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:
--
-- 'engineVersion', 'describeDBEngineVersions_engineVersion' - The database engine version to return.
--
-- Example: @3.6.0@
--
-- 'listSupportedTimezones', 'describeDBEngineVersions_listSupportedTimezones' - If this parameter is specified and the requested engine supports the
-- @TimeZone@ parameter for @CreateDBInstance@, the response includes a
-- list of supported time zones for each engine version.
--
-- 'defaultOnly', 'describeDBEngineVersions_defaultOnly' - Indicates that only the default version of the specified engine or
-- engine and major version combination is returned.
--
-- 'filters', 'describeDBEngineVersions_filters' - This parameter is not currently supported.
--
-- 'engine', 'describeDBEngineVersions_engine' - The database engine to return.
--
-- 'dbParameterGroupFamily', 'describeDBEngineVersions_dbParameterGroupFamily' - The name of a specific parameter group family to return details for.
--
-- Constraints:
--
-- -   If provided, must match an existing @DBParameterGroupFamily@.
--
-- 'listSupportedCharacterSets', 'describeDBEngineVersions_listSupportedCharacterSets' - If this parameter is specified and the requested engine supports the
-- @CharacterSetName@ parameter for @CreateDBInstance@, the response
-- includes a list of supported character sets for each engine version.
--
-- 'marker', 'describeDBEngineVersions_marker' - An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the
-- marker, up to the value specified by @MaxRecords@.
--
-- 'maxRecords', 'describeDBEngineVersions_maxRecords' - The maximum number of records to include in the response. If more
-- records exist than the specified @MaxRecords@ value, a pagination token
-- (marker) is included in the response so that the remaining results can
-- be retrieved.
--
-- Default: 100
--
-- Constraints: Minimum 20, maximum 100.
newDescribeDBEngineVersions ::
  DescribeDBEngineVersions
newDescribeDBEngineVersions :: DescribeDBEngineVersions
newDescribeDBEngineVersions =
  DescribeDBEngineVersions' :: Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe [Filter]
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> DescribeDBEngineVersions
DescribeDBEngineVersions'
    { $sel:engineVersion:DescribeDBEngineVersions' :: Maybe Text
engineVersion =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:listSupportedTimezones:DescribeDBEngineVersions' :: Maybe Bool
listSupportedTimezones = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultOnly:DescribeDBEngineVersions' :: Maybe Bool
defaultOnly = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:filters:DescribeDBEngineVersions' :: Maybe [Filter]
filters = Maybe [Filter]
forall a. Maybe a
Prelude.Nothing,
      $sel:engine:DescribeDBEngineVersions' :: Maybe Text
engine = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dbParameterGroupFamily:DescribeDBEngineVersions' :: Maybe Text
dbParameterGroupFamily = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:listSupportedCharacterSets:DescribeDBEngineVersions' :: Maybe Bool
listSupportedCharacterSets = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeDBEngineVersions' :: Maybe Text
marker = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:maxRecords:DescribeDBEngineVersions' :: Maybe Int
maxRecords = Maybe Int
forall a. Maybe a
Prelude.Nothing
    }

-- | The database engine version to return.
--
-- Example: @3.6.0@
describeDBEngineVersions_engineVersion :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Text)
describeDBEngineVersions_engineVersion :: (Maybe Text -> f (Maybe Text))
-> DescribeDBEngineVersions -> f DescribeDBEngineVersions
describeDBEngineVersions_engineVersion = (DescribeDBEngineVersions -> Maybe Text)
-> (DescribeDBEngineVersions
    -> Maybe Text -> DescribeDBEngineVersions)
-> Lens
     DescribeDBEngineVersions
     DescribeDBEngineVersions
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBEngineVersions' {Maybe Text
engineVersion :: Maybe Text
$sel:engineVersion:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Text
engineVersion} -> Maybe Text
engineVersion) (\s :: DescribeDBEngineVersions
s@DescribeDBEngineVersions' {} Maybe Text
a -> DescribeDBEngineVersions
s {$sel:engineVersion:DescribeDBEngineVersions' :: Maybe Text
engineVersion = Maybe Text
a} :: DescribeDBEngineVersions)

-- | If this parameter is specified and the requested engine supports the
-- @TimeZone@ parameter for @CreateDBInstance@, the response includes a
-- list of supported time zones for each engine version.
describeDBEngineVersions_listSupportedTimezones :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Bool)
describeDBEngineVersions_listSupportedTimezones :: (Maybe Bool -> f (Maybe Bool))
-> DescribeDBEngineVersions -> f DescribeDBEngineVersions
describeDBEngineVersions_listSupportedTimezones = (DescribeDBEngineVersions -> Maybe Bool)
-> (DescribeDBEngineVersions
    -> Maybe Bool -> DescribeDBEngineVersions)
-> Lens
     DescribeDBEngineVersions
     DescribeDBEngineVersions
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBEngineVersions' {Maybe Bool
listSupportedTimezones :: Maybe Bool
$sel:listSupportedTimezones:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Bool
listSupportedTimezones} -> Maybe Bool
listSupportedTimezones) (\s :: DescribeDBEngineVersions
s@DescribeDBEngineVersions' {} Maybe Bool
a -> DescribeDBEngineVersions
s {$sel:listSupportedTimezones:DescribeDBEngineVersions' :: Maybe Bool
listSupportedTimezones = Maybe Bool
a} :: DescribeDBEngineVersions)

-- | Indicates that only the default version of the specified engine or
-- engine and major version combination is returned.
describeDBEngineVersions_defaultOnly :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Bool)
describeDBEngineVersions_defaultOnly :: (Maybe Bool -> f (Maybe Bool))
-> DescribeDBEngineVersions -> f DescribeDBEngineVersions
describeDBEngineVersions_defaultOnly = (DescribeDBEngineVersions -> Maybe Bool)
-> (DescribeDBEngineVersions
    -> Maybe Bool -> DescribeDBEngineVersions)
-> Lens
     DescribeDBEngineVersions
     DescribeDBEngineVersions
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBEngineVersions' {Maybe Bool
defaultOnly :: Maybe Bool
$sel:defaultOnly:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Bool
defaultOnly} -> Maybe Bool
defaultOnly) (\s :: DescribeDBEngineVersions
s@DescribeDBEngineVersions' {} Maybe Bool
a -> DescribeDBEngineVersions
s {$sel:defaultOnly:DescribeDBEngineVersions' :: Maybe Bool
defaultOnly = Maybe Bool
a} :: DescribeDBEngineVersions)

-- | This parameter is not currently supported.
describeDBEngineVersions_filters :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe [Filter])
describeDBEngineVersions_filters :: (Maybe [Filter] -> f (Maybe [Filter]))
-> DescribeDBEngineVersions -> f DescribeDBEngineVersions
describeDBEngineVersions_filters = (DescribeDBEngineVersions -> Maybe [Filter])
-> (DescribeDBEngineVersions
    -> Maybe [Filter] -> DescribeDBEngineVersions)
-> Lens
     DescribeDBEngineVersions
     DescribeDBEngineVersions
     (Maybe [Filter])
     (Maybe [Filter])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBEngineVersions' {Maybe [Filter]
filters :: Maybe [Filter]
$sel:filters:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe [Filter]
filters} -> Maybe [Filter]
filters) (\s :: DescribeDBEngineVersions
s@DescribeDBEngineVersions' {} Maybe [Filter]
a -> DescribeDBEngineVersions
s {$sel:filters:DescribeDBEngineVersions' :: Maybe [Filter]
filters = Maybe [Filter]
a} :: DescribeDBEngineVersions) ((Maybe [Filter] -> f (Maybe [Filter]))
 -> DescribeDBEngineVersions -> f DescribeDBEngineVersions)
-> ((Maybe [Filter] -> f (Maybe [Filter]))
    -> Maybe [Filter] -> f (Maybe [Filter]))
-> (Maybe [Filter] -> f (Maybe [Filter]))
-> DescribeDBEngineVersions
-> f DescribeDBEngineVersions
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Filter] [Filter] [Filter] [Filter]
-> Iso
     (Maybe [Filter]) (Maybe [Filter]) (Maybe [Filter]) (Maybe [Filter])
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 AnIso [Filter] [Filter] [Filter] [Filter]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The database engine to return.
describeDBEngineVersions_engine :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Text)
describeDBEngineVersions_engine :: (Maybe Text -> f (Maybe Text))
-> DescribeDBEngineVersions -> f DescribeDBEngineVersions
describeDBEngineVersions_engine = (DescribeDBEngineVersions -> Maybe Text)
-> (DescribeDBEngineVersions
    -> Maybe Text -> DescribeDBEngineVersions)
-> Lens
     DescribeDBEngineVersions
     DescribeDBEngineVersions
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBEngineVersions' {Maybe Text
engine :: Maybe Text
$sel:engine:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Text
engine} -> Maybe Text
engine) (\s :: DescribeDBEngineVersions
s@DescribeDBEngineVersions' {} Maybe Text
a -> DescribeDBEngineVersions
s {$sel:engine:DescribeDBEngineVersions' :: Maybe Text
engine = Maybe Text
a} :: DescribeDBEngineVersions)

-- | The name of a specific parameter group family to return details for.
--
-- Constraints:
--
-- -   If provided, must match an existing @DBParameterGroupFamily@.
describeDBEngineVersions_dbParameterGroupFamily :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Text)
describeDBEngineVersions_dbParameterGroupFamily :: (Maybe Text -> f (Maybe Text))
-> DescribeDBEngineVersions -> f DescribeDBEngineVersions
describeDBEngineVersions_dbParameterGroupFamily = (DescribeDBEngineVersions -> Maybe Text)
-> (DescribeDBEngineVersions
    -> Maybe Text -> DescribeDBEngineVersions)
-> Lens
     DescribeDBEngineVersions
     DescribeDBEngineVersions
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBEngineVersions' {Maybe Text
dbParameterGroupFamily :: Maybe Text
$sel:dbParameterGroupFamily:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Text
dbParameterGroupFamily} -> Maybe Text
dbParameterGroupFamily) (\s :: DescribeDBEngineVersions
s@DescribeDBEngineVersions' {} Maybe Text
a -> DescribeDBEngineVersions
s {$sel:dbParameterGroupFamily:DescribeDBEngineVersions' :: Maybe Text
dbParameterGroupFamily = Maybe Text
a} :: DescribeDBEngineVersions)

-- | If this parameter is specified and the requested engine supports the
-- @CharacterSetName@ parameter for @CreateDBInstance@, the response
-- includes a list of supported character sets for each engine version.
describeDBEngineVersions_listSupportedCharacterSets :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Bool)
describeDBEngineVersions_listSupportedCharacterSets :: (Maybe Bool -> f (Maybe Bool))
-> DescribeDBEngineVersions -> f DescribeDBEngineVersions
describeDBEngineVersions_listSupportedCharacterSets = (DescribeDBEngineVersions -> Maybe Bool)
-> (DescribeDBEngineVersions
    -> Maybe Bool -> DescribeDBEngineVersions)
-> Lens
     DescribeDBEngineVersions
     DescribeDBEngineVersions
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBEngineVersions' {Maybe Bool
listSupportedCharacterSets :: Maybe Bool
$sel:listSupportedCharacterSets:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Bool
listSupportedCharacterSets} -> Maybe Bool
listSupportedCharacterSets) (\s :: DescribeDBEngineVersions
s@DescribeDBEngineVersions' {} Maybe Bool
a -> DescribeDBEngineVersions
s {$sel:listSupportedCharacterSets:DescribeDBEngineVersions' :: Maybe Bool
listSupportedCharacterSets = Maybe Bool
a} :: DescribeDBEngineVersions)

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

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

instance Core.AWSPager DescribeDBEngineVersions where
  page :: DescribeDBEngineVersions
-> AWSResponse DescribeDBEngineVersions
-> Maybe DescribeDBEngineVersions
page DescribeDBEngineVersions
rq AWSResponse DescribeDBEngineVersions
rs
    | Maybe Text -> Bool
forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeDBEngineVersions
DescribeDBEngineVersionsResponse
rs
            DescribeDBEngineVersionsResponse
-> Getting (First Text) DescribeDBEngineVersionsResponse Text
-> Maybe Text
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe Text -> Const (First Text) (Maybe Text))
-> DescribeDBEngineVersionsResponse
-> Const (First Text) DescribeDBEngineVersionsResponse
Lens' DescribeDBEngineVersionsResponse (Maybe Text)
describeDBEngineVersionsResponse_marker
              ((Maybe Text -> Const (First Text) (Maybe Text))
 -> DescribeDBEngineVersionsResponse
 -> Const (First Text) DescribeDBEngineVersionsResponse)
-> ((Text -> Const (First Text) Text)
    -> Maybe Text -> Const (First Text) (Maybe Text))
-> Getting (First Text) DescribeDBEngineVersionsResponse Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Text -> Const (First Text) Text)
-> Maybe Text -> Const (First Text) (Maybe Text)
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
      Maybe DescribeDBEngineVersions
forall a. Maybe a
Prelude.Nothing
    | Maybe [DBEngineVersion] -> Bool
forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeDBEngineVersions
DescribeDBEngineVersionsResponse
rs
            DescribeDBEngineVersionsResponse
-> Getting
     (First [DBEngineVersion])
     DescribeDBEngineVersionsResponse
     [DBEngineVersion]
-> Maybe [DBEngineVersion]
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe [DBEngineVersion]
 -> Const (First [DBEngineVersion]) (Maybe [DBEngineVersion]))
-> DescribeDBEngineVersionsResponse
-> Const (First [DBEngineVersion]) DescribeDBEngineVersionsResponse
Lens' DescribeDBEngineVersionsResponse (Maybe [DBEngineVersion])
describeDBEngineVersionsResponse_dbEngineVersions
              ((Maybe [DBEngineVersion]
  -> Const (First [DBEngineVersion]) (Maybe [DBEngineVersion]))
 -> DescribeDBEngineVersionsResponse
 -> Const
      (First [DBEngineVersion]) DescribeDBEngineVersionsResponse)
-> (([DBEngineVersion]
     -> Const (First [DBEngineVersion]) [DBEngineVersion])
    -> Maybe [DBEngineVersion]
    -> Const (First [DBEngineVersion]) (Maybe [DBEngineVersion]))
-> Getting
     (First [DBEngineVersion])
     DescribeDBEngineVersionsResponse
     [DBEngineVersion]
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. ([DBEngineVersion]
 -> Const (First [DBEngineVersion]) [DBEngineVersion])
-> Maybe [DBEngineVersion]
-> Const (First [DBEngineVersion]) (Maybe [DBEngineVersion])
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
      Maybe DescribeDBEngineVersions
forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
      DescribeDBEngineVersions -> Maybe DescribeDBEngineVersions
forall a. a -> Maybe a
Prelude.Just (DescribeDBEngineVersions -> Maybe DescribeDBEngineVersions)
-> DescribeDBEngineVersions -> Maybe DescribeDBEngineVersions
forall a b. (a -> b) -> a -> b
Prelude.$
        DescribeDBEngineVersions
rq
          DescribeDBEngineVersions
-> (DescribeDBEngineVersions -> DescribeDBEngineVersions)
-> DescribeDBEngineVersions
forall a b. a -> (a -> b) -> b
Prelude.& (Maybe Text -> Identity (Maybe Text))
-> DescribeDBEngineVersions -> Identity DescribeDBEngineVersions
Lens
  DescribeDBEngineVersions
  DescribeDBEngineVersions
  (Maybe Text)
  (Maybe Text)
describeDBEngineVersions_marker
          ((Maybe Text -> Identity (Maybe Text))
 -> DescribeDBEngineVersions -> Identity DescribeDBEngineVersions)
-> Maybe Text
-> DescribeDBEngineVersions
-> DescribeDBEngineVersions
forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeDBEngineVersions
DescribeDBEngineVersionsResponse
rs
          DescribeDBEngineVersionsResponse
-> Getting (First Text) DescribeDBEngineVersionsResponse Text
-> Maybe Text
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe Text -> Const (First Text) (Maybe Text))
-> DescribeDBEngineVersionsResponse
-> Const (First Text) DescribeDBEngineVersionsResponse
Lens' DescribeDBEngineVersionsResponse (Maybe Text)
describeDBEngineVersionsResponse_marker
            ((Maybe Text -> Const (First Text) (Maybe Text))
 -> DescribeDBEngineVersionsResponse
 -> Const (First Text) DescribeDBEngineVersionsResponse)
-> ((Text -> Const (First Text) Text)
    -> Maybe Text -> Const (First Text) (Maybe Text))
-> Getting (First Text) DescribeDBEngineVersionsResponse Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Text -> Const (First Text) Text)
-> Maybe Text -> Const (First Text) (Maybe Text)
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeDBEngineVersions where
  type
    AWSResponse DescribeDBEngineVersions =
      DescribeDBEngineVersionsResponse
  request :: DescribeDBEngineVersions -> Request DescribeDBEngineVersions
request = Service
-> DescribeDBEngineVersions -> Request DescribeDBEngineVersions
forall a. ToRequest a => Service -> a -> Request a
Request.postQuery Service
defaultService
  response :: Logger
-> Service
-> Proxy DescribeDBEngineVersions
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeDBEngineVersions)))
response =
    Text
-> (Int
    -> ResponseHeaders
    -> [Node]
    -> Either String (AWSResponse DescribeDBEngineVersions))
-> Logger
-> Service
-> Proxy DescribeDBEngineVersions
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeDBEngineVersions)))
forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"DescribeDBEngineVersionsResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe [DBEngineVersion]
-> Int
-> DescribeDBEngineVersionsResponse
DescribeDBEngineVersionsResponse'
            (Maybe Text
 -> Maybe [DBEngineVersion]
 -> Int
 -> DescribeDBEngineVersionsResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [DBEngineVersion]
      -> Int -> DescribeDBEngineVersionsResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Marker")
            Either
  String
  (Maybe [DBEngineVersion]
   -> Int -> DescribeDBEngineVersionsResponse)
-> Either String (Maybe [DBEngineVersion])
-> Either String (Int -> DescribeDBEngineVersionsResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DBEngineVersions"
                            Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                            Either String [Node]
-> ([Node] -> Either String (Maybe [DBEngineVersion]))
-> Either String (Maybe [DBEngineVersion])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [DBEngineVersion])
-> [Node] -> Either String (Maybe [DBEngineVersion])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [DBEngineVersion]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"DBEngineVersion")
                        )
            Either String (Int -> DescribeDBEngineVersionsResponse)
-> Either String Int
-> Either String DescribeDBEngineVersionsResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeDBEngineVersions

instance Prelude.NFData DescribeDBEngineVersions

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

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

instance Core.ToQuery DescribeDBEngineVersions where
  toQuery :: DescribeDBEngineVersions -> QueryString
toQuery DescribeDBEngineVersions' {Maybe Bool
Maybe Int
Maybe [Filter]
Maybe Text
maxRecords :: Maybe Int
marker :: Maybe Text
listSupportedCharacterSets :: Maybe Bool
dbParameterGroupFamily :: Maybe Text
engine :: Maybe Text
filters :: Maybe [Filter]
defaultOnly :: Maybe Bool
listSupportedTimezones :: Maybe Bool
engineVersion :: Maybe Text
$sel:maxRecords:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Int
$sel:marker:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Text
$sel:listSupportedCharacterSets:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Bool
$sel:dbParameterGroupFamily:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Text
$sel:engine:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Text
$sel:filters:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe [Filter]
$sel:defaultOnly:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Bool
$sel:listSupportedTimezones:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Bool
$sel:engineVersion:DescribeDBEngineVersions' :: DescribeDBEngineVersions -> Maybe Text
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"DescribeDBEngineVersions" :: Prelude.ByteString),
        ByteString
"Version"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"2014-10-31" :: Prelude.ByteString),
        ByteString
"EngineVersion" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
engineVersion,
        ByteString
"ListSupportedTimezones"
          ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
listSupportedTimezones,
        ByteString
"DefaultOnly" ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
defaultOnly,
        ByteString
"Filters"
          ByteString -> QueryString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe QueryString -> QueryString
forall a. ToQuery a => a -> QueryString
Core.toQuery
            (ByteString -> [Filter] -> QueryString
forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Core.toQueryList ByteString
"Filter" ([Filter] -> QueryString) -> Maybe [Filter] -> Maybe QueryString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Filter]
filters),
        ByteString
"Engine" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
engine,
        ByteString
"DBParameterGroupFamily"
          ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
dbParameterGroupFamily,
        ByteString
"ListSupportedCharacterSets"
          ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
listSupportedCharacterSets,
        ByteString
"Marker" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
marker,
        ByteString
"MaxRecords" ByteString -> Maybe Int -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Int
maxRecords
      ]

-- | Represents the output of DescribeDBEngineVersions.
--
-- /See:/ 'newDescribeDBEngineVersionsResponse' smart constructor.
data DescribeDBEngineVersionsResponse = DescribeDBEngineVersionsResponse'
  { -- | An optional pagination token provided by a previous request. If this
    -- parameter is specified, the response includes only records beyond the
    -- marker, up to the value specified by @MaxRecords@.
    DescribeDBEngineVersionsResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | Detailed information about one or more engine versions.
    DescribeDBEngineVersionsResponse -> Maybe [DBEngineVersion]
dbEngineVersions :: Prelude.Maybe [DBEngineVersion],
    -- | The response's http status code.
    DescribeDBEngineVersionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeDBEngineVersionsResponse
-> DescribeDBEngineVersionsResponse -> Bool
(DescribeDBEngineVersionsResponse
 -> DescribeDBEngineVersionsResponse -> Bool)
-> (DescribeDBEngineVersionsResponse
    -> DescribeDBEngineVersionsResponse -> Bool)
-> Eq DescribeDBEngineVersionsResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDBEngineVersionsResponse
-> DescribeDBEngineVersionsResponse -> Bool
$c/= :: DescribeDBEngineVersionsResponse
-> DescribeDBEngineVersionsResponse -> Bool
== :: DescribeDBEngineVersionsResponse
-> DescribeDBEngineVersionsResponse -> Bool
$c== :: DescribeDBEngineVersionsResponse
-> DescribeDBEngineVersionsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeDBEngineVersionsResponse]
ReadPrec DescribeDBEngineVersionsResponse
Int -> ReadS DescribeDBEngineVersionsResponse
ReadS [DescribeDBEngineVersionsResponse]
(Int -> ReadS DescribeDBEngineVersionsResponse)
-> ReadS [DescribeDBEngineVersionsResponse]
-> ReadPrec DescribeDBEngineVersionsResponse
-> ReadPrec [DescribeDBEngineVersionsResponse]
-> Read DescribeDBEngineVersionsResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDBEngineVersionsResponse]
$creadListPrec :: ReadPrec [DescribeDBEngineVersionsResponse]
readPrec :: ReadPrec DescribeDBEngineVersionsResponse
$creadPrec :: ReadPrec DescribeDBEngineVersionsResponse
readList :: ReadS [DescribeDBEngineVersionsResponse]
$creadList :: ReadS [DescribeDBEngineVersionsResponse]
readsPrec :: Int -> ReadS DescribeDBEngineVersionsResponse
$creadsPrec :: Int -> ReadS DescribeDBEngineVersionsResponse
Prelude.Read, Int -> DescribeDBEngineVersionsResponse -> ShowS
[DescribeDBEngineVersionsResponse] -> ShowS
DescribeDBEngineVersionsResponse -> String
(Int -> DescribeDBEngineVersionsResponse -> ShowS)
-> (DescribeDBEngineVersionsResponse -> String)
-> ([DescribeDBEngineVersionsResponse] -> ShowS)
-> Show DescribeDBEngineVersionsResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDBEngineVersionsResponse] -> ShowS
$cshowList :: [DescribeDBEngineVersionsResponse] -> ShowS
show :: DescribeDBEngineVersionsResponse -> String
$cshow :: DescribeDBEngineVersionsResponse -> String
showsPrec :: Int -> DescribeDBEngineVersionsResponse -> ShowS
$cshowsPrec :: Int -> DescribeDBEngineVersionsResponse -> ShowS
Prelude.Show, (forall x.
 DescribeDBEngineVersionsResponse
 -> Rep DescribeDBEngineVersionsResponse x)
-> (forall x.
    Rep DescribeDBEngineVersionsResponse x
    -> DescribeDBEngineVersionsResponse)
-> Generic DescribeDBEngineVersionsResponse
forall x.
Rep DescribeDBEngineVersionsResponse x
-> DescribeDBEngineVersionsResponse
forall x.
DescribeDBEngineVersionsResponse
-> Rep DescribeDBEngineVersionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDBEngineVersionsResponse x
-> DescribeDBEngineVersionsResponse
$cfrom :: forall x.
DescribeDBEngineVersionsResponse
-> Rep DescribeDBEngineVersionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDBEngineVersionsResponse' 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:
--
-- 'marker', 'describeDBEngineVersionsResponse_marker' - An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the
-- marker, up to the value specified by @MaxRecords@.
--
-- 'dbEngineVersions', 'describeDBEngineVersionsResponse_dbEngineVersions' - Detailed information about one or more engine versions.
--
-- 'httpStatus', 'describeDBEngineVersionsResponse_httpStatus' - The response's http status code.
newDescribeDBEngineVersionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeDBEngineVersionsResponse
newDescribeDBEngineVersionsResponse :: Int -> DescribeDBEngineVersionsResponse
newDescribeDBEngineVersionsResponse Int
pHttpStatus_ =
  DescribeDBEngineVersionsResponse' :: Maybe Text
-> Maybe [DBEngineVersion]
-> Int
-> DescribeDBEngineVersionsResponse
DescribeDBEngineVersionsResponse'
    { $sel:marker:DescribeDBEngineVersionsResponse' :: Maybe Text
marker =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dbEngineVersions:DescribeDBEngineVersionsResponse' :: Maybe [DBEngineVersion]
dbEngineVersions = Maybe [DBEngineVersion]
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeDBEngineVersionsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

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

-- | Detailed information about one or more engine versions.
describeDBEngineVersionsResponse_dbEngineVersions :: Lens.Lens' DescribeDBEngineVersionsResponse (Prelude.Maybe [DBEngineVersion])
describeDBEngineVersionsResponse_dbEngineVersions :: (Maybe [DBEngineVersion] -> f (Maybe [DBEngineVersion]))
-> DescribeDBEngineVersionsResponse
-> f DescribeDBEngineVersionsResponse
describeDBEngineVersionsResponse_dbEngineVersions = (DescribeDBEngineVersionsResponse -> Maybe [DBEngineVersion])
-> (DescribeDBEngineVersionsResponse
    -> Maybe [DBEngineVersion] -> DescribeDBEngineVersionsResponse)
-> Lens' DescribeDBEngineVersionsResponse (Maybe [DBEngineVersion])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDBEngineVersionsResponse' {Maybe [DBEngineVersion]
dbEngineVersions :: Maybe [DBEngineVersion]
$sel:dbEngineVersions:DescribeDBEngineVersionsResponse' :: DescribeDBEngineVersionsResponse -> Maybe [DBEngineVersion]
dbEngineVersions} -> Maybe [DBEngineVersion]
dbEngineVersions) (\s :: DescribeDBEngineVersionsResponse
s@DescribeDBEngineVersionsResponse' {} Maybe [DBEngineVersion]
a -> DescribeDBEngineVersionsResponse
s {$sel:dbEngineVersions:DescribeDBEngineVersionsResponse' :: Maybe [DBEngineVersion]
dbEngineVersions = Maybe [DBEngineVersion]
a} :: DescribeDBEngineVersionsResponse) ((Maybe [DBEngineVersion] -> f (Maybe [DBEngineVersion]))
 -> DescribeDBEngineVersionsResponse
 -> f DescribeDBEngineVersionsResponse)
-> ((Maybe [DBEngineVersion] -> f (Maybe [DBEngineVersion]))
    -> Maybe [DBEngineVersion] -> f (Maybe [DBEngineVersion]))
-> (Maybe [DBEngineVersion] -> f (Maybe [DBEngineVersion]))
-> DescribeDBEngineVersionsResponse
-> f DescribeDBEngineVersionsResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [DBEngineVersion]
  [DBEngineVersion]
  [DBEngineVersion]
  [DBEngineVersion]
-> Iso
     (Maybe [DBEngineVersion])
     (Maybe [DBEngineVersion])
     (Maybe [DBEngineVersion])
     (Maybe [DBEngineVersion])
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 AnIso
  [DBEngineVersion]
  [DBEngineVersion]
  [DBEngineVersion]
  [DBEngineVersion]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance
  Prelude.NFData
    DescribeDBEngineVersionsResponse