{-# 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.PurchaseReservedDBInstancesOffering
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Purchases a reserved DB instance offering.
module Amazonka.RDS.PurchaseReservedDBInstancesOffering
  ( -- * Creating a Request
    PurchaseReservedDBInstancesOffering (..),
    newPurchaseReservedDBInstancesOffering,

    -- * Request Lenses
    purchaseReservedDBInstancesOffering_dbInstanceCount,
    purchaseReservedDBInstancesOffering_reservedDBInstanceId,
    purchaseReservedDBInstancesOffering_tags,
    purchaseReservedDBInstancesOffering_reservedDBInstancesOfferingId,

    -- * Destructuring the Response
    PurchaseReservedDBInstancesOfferingResponse (..),
    newPurchaseReservedDBInstancesOfferingResponse,

    -- * Response Lenses
    purchaseReservedDBInstancesOfferingResponse_reservedDBInstance,
    purchaseReservedDBInstancesOfferingResponse_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:/ 'newPurchaseReservedDBInstancesOffering' smart constructor.
data PurchaseReservedDBInstancesOffering = PurchaseReservedDBInstancesOffering'
  { -- | The number of instances to reserve.
    --
    -- Default: @1@
    PurchaseReservedDBInstancesOffering -> Maybe Int
dbInstanceCount :: Prelude.Maybe Prelude.Int,
    -- | Customer-specified identifier to track this reservation.
    --
    -- Example: myreservationID
    PurchaseReservedDBInstancesOffering -> Maybe Text
reservedDBInstanceId :: Prelude.Maybe Prelude.Text,
    PurchaseReservedDBInstancesOffering -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The ID of the Reserved DB instance offering to purchase.
    --
    -- Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
    PurchaseReservedDBInstancesOffering -> Text
reservedDBInstancesOfferingId :: Prelude.Text
  }
  deriving (PurchaseReservedDBInstancesOffering
-> PurchaseReservedDBInstancesOffering -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PurchaseReservedDBInstancesOffering
-> PurchaseReservedDBInstancesOffering -> Bool
$c/= :: PurchaseReservedDBInstancesOffering
-> PurchaseReservedDBInstancesOffering -> Bool
== :: PurchaseReservedDBInstancesOffering
-> PurchaseReservedDBInstancesOffering -> Bool
$c== :: PurchaseReservedDBInstancesOffering
-> PurchaseReservedDBInstancesOffering -> Bool
Prelude.Eq, ReadPrec [PurchaseReservedDBInstancesOffering]
ReadPrec PurchaseReservedDBInstancesOffering
Int -> ReadS PurchaseReservedDBInstancesOffering
ReadS [PurchaseReservedDBInstancesOffering]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PurchaseReservedDBInstancesOffering]
$creadListPrec :: ReadPrec [PurchaseReservedDBInstancesOffering]
readPrec :: ReadPrec PurchaseReservedDBInstancesOffering
$creadPrec :: ReadPrec PurchaseReservedDBInstancesOffering
readList :: ReadS [PurchaseReservedDBInstancesOffering]
$creadList :: ReadS [PurchaseReservedDBInstancesOffering]
readsPrec :: Int -> ReadS PurchaseReservedDBInstancesOffering
$creadsPrec :: Int -> ReadS PurchaseReservedDBInstancesOffering
Prelude.Read, Int -> PurchaseReservedDBInstancesOffering -> ShowS
[PurchaseReservedDBInstancesOffering] -> ShowS
PurchaseReservedDBInstancesOffering -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PurchaseReservedDBInstancesOffering] -> ShowS
$cshowList :: [PurchaseReservedDBInstancesOffering] -> ShowS
show :: PurchaseReservedDBInstancesOffering -> String
$cshow :: PurchaseReservedDBInstancesOffering -> String
showsPrec :: Int -> PurchaseReservedDBInstancesOffering -> ShowS
$cshowsPrec :: Int -> PurchaseReservedDBInstancesOffering -> ShowS
Prelude.Show, forall x.
Rep PurchaseReservedDBInstancesOffering x
-> PurchaseReservedDBInstancesOffering
forall x.
PurchaseReservedDBInstancesOffering
-> Rep PurchaseReservedDBInstancesOffering x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PurchaseReservedDBInstancesOffering x
-> PurchaseReservedDBInstancesOffering
$cfrom :: forall x.
PurchaseReservedDBInstancesOffering
-> Rep PurchaseReservedDBInstancesOffering x
Prelude.Generic)

-- |
-- Create a value of 'PurchaseReservedDBInstancesOffering' 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:
--
-- 'dbInstanceCount', 'purchaseReservedDBInstancesOffering_dbInstanceCount' - The number of instances to reserve.
--
-- Default: @1@
--
-- 'reservedDBInstanceId', 'purchaseReservedDBInstancesOffering_reservedDBInstanceId' - Customer-specified identifier to track this reservation.
--
-- Example: myreservationID
--
-- 'tags', 'purchaseReservedDBInstancesOffering_tags' - Undocumented member.
--
-- 'reservedDBInstancesOfferingId', 'purchaseReservedDBInstancesOffering_reservedDBInstancesOfferingId' - The ID of the Reserved DB instance offering to purchase.
--
-- Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
newPurchaseReservedDBInstancesOffering ::
  -- | 'reservedDBInstancesOfferingId'
  Prelude.Text ->
  PurchaseReservedDBInstancesOffering
newPurchaseReservedDBInstancesOffering :: Text -> PurchaseReservedDBInstancesOffering
newPurchaseReservedDBInstancesOffering
  Text
pReservedDBInstancesOfferingId_ =
    PurchaseReservedDBInstancesOffering'
      { $sel:dbInstanceCount:PurchaseReservedDBInstancesOffering' :: Maybe Int
dbInstanceCount =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservedDBInstanceId:PurchaseReservedDBInstancesOffering' :: Maybe Text
reservedDBInstanceId = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:PurchaseReservedDBInstancesOffering' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:reservedDBInstancesOfferingId:PurchaseReservedDBInstancesOffering' :: Text
reservedDBInstancesOfferingId =
          Text
pReservedDBInstancesOfferingId_
      }

-- | The number of instances to reserve.
--
-- Default: @1@
purchaseReservedDBInstancesOffering_dbInstanceCount :: Lens.Lens' PurchaseReservedDBInstancesOffering (Prelude.Maybe Prelude.Int)
purchaseReservedDBInstancesOffering_dbInstanceCount :: Lens' PurchaseReservedDBInstancesOffering (Maybe Int)
purchaseReservedDBInstancesOffering_dbInstanceCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedDBInstancesOffering' {Maybe Int
dbInstanceCount :: Maybe Int
$sel:dbInstanceCount:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe Int
dbInstanceCount} -> Maybe Int
dbInstanceCount) (\s :: PurchaseReservedDBInstancesOffering
s@PurchaseReservedDBInstancesOffering' {} Maybe Int
a -> PurchaseReservedDBInstancesOffering
s {$sel:dbInstanceCount:PurchaseReservedDBInstancesOffering' :: Maybe Int
dbInstanceCount = Maybe Int
a} :: PurchaseReservedDBInstancesOffering)

-- | Customer-specified identifier to track this reservation.
--
-- Example: myreservationID
purchaseReservedDBInstancesOffering_reservedDBInstanceId :: Lens.Lens' PurchaseReservedDBInstancesOffering (Prelude.Maybe Prelude.Text)
purchaseReservedDBInstancesOffering_reservedDBInstanceId :: Lens' PurchaseReservedDBInstancesOffering (Maybe Text)
purchaseReservedDBInstancesOffering_reservedDBInstanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedDBInstancesOffering' {Maybe Text
reservedDBInstanceId :: Maybe Text
$sel:reservedDBInstanceId:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe Text
reservedDBInstanceId} -> Maybe Text
reservedDBInstanceId) (\s :: PurchaseReservedDBInstancesOffering
s@PurchaseReservedDBInstancesOffering' {} Maybe Text
a -> PurchaseReservedDBInstancesOffering
s {$sel:reservedDBInstanceId:PurchaseReservedDBInstancesOffering' :: Maybe Text
reservedDBInstanceId = Maybe Text
a} :: PurchaseReservedDBInstancesOffering)

-- | Undocumented member.
purchaseReservedDBInstancesOffering_tags :: Lens.Lens' PurchaseReservedDBInstancesOffering (Prelude.Maybe [Tag])
purchaseReservedDBInstancesOffering_tags :: Lens' PurchaseReservedDBInstancesOffering (Maybe [Tag])
purchaseReservedDBInstancesOffering_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedDBInstancesOffering' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: PurchaseReservedDBInstancesOffering
s@PurchaseReservedDBInstancesOffering' {} Maybe [Tag]
a -> PurchaseReservedDBInstancesOffering
s {$sel:tags:PurchaseReservedDBInstancesOffering' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: PurchaseReservedDBInstancesOffering) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The ID of the Reserved DB instance offering to purchase.
--
-- Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
purchaseReservedDBInstancesOffering_reservedDBInstancesOfferingId :: Lens.Lens' PurchaseReservedDBInstancesOffering Prelude.Text
purchaseReservedDBInstancesOffering_reservedDBInstancesOfferingId :: Lens' PurchaseReservedDBInstancesOffering Text
purchaseReservedDBInstancesOffering_reservedDBInstancesOfferingId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedDBInstancesOffering' {Text
reservedDBInstancesOfferingId :: Text
$sel:reservedDBInstancesOfferingId:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Text
reservedDBInstancesOfferingId} -> Text
reservedDBInstancesOfferingId) (\s :: PurchaseReservedDBInstancesOffering
s@PurchaseReservedDBInstancesOffering' {} Text
a -> PurchaseReservedDBInstancesOffering
s {$sel:reservedDBInstancesOfferingId:PurchaseReservedDBInstancesOffering' :: Text
reservedDBInstancesOfferingId = Text
a} :: PurchaseReservedDBInstancesOffering)

instance
  Core.AWSRequest
    PurchaseReservedDBInstancesOffering
  where
  type
    AWSResponse PurchaseReservedDBInstancesOffering =
      PurchaseReservedDBInstancesOfferingResponse
  request :: (Service -> Service)
-> PurchaseReservedDBInstancesOffering
-> Request PurchaseReservedDBInstancesOffering
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 PurchaseReservedDBInstancesOffering
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse PurchaseReservedDBInstancesOffering)))
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
"PurchaseReservedDBInstancesOfferingResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe ReservedDBInstance
-> Int -> PurchaseReservedDBInstancesOfferingResponse
PurchaseReservedDBInstancesOfferingResponse'
            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
"ReservedDBInstance")
            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
    PurchaseReservedDBInstancesOffering
  where
  hashWithSalt :: Int -> PurchaseReservedDBInstancesOffering -> Int
hashWithSalt
    Int
_salt
    PurchaseReservedDBInstancesOffering' {Maybe Int
Maybe [Tag]
Maybe Text
Text
reservedDBInstancesOfferingId :: Text
tags :: Maybe [Tag]
reservedDBInstanceId :: Maybe Text
dbInstanceCount :: Maybe Int
$sel:reservedDBInstancesOfferingId:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Text
$sel:tags:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe [Tag]
$sel:reservedDBInstanceId:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe Text
$sel:dbInstanceCount:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe Int
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
dbInstanceCount
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reservedDBInstanceId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
reservedDBInstancesOfferingId

instance
  Prelude.NFData
    PurchaseReservedDBInstancesOffering
  where
  rnf :: PurchaseReservedDBInstancesOffering -> ()
rnf PurchaseReservedDBInstancesOffering' {Maybe Int
Maybe [Tag]
Maybe Text
Text
reservedDBInstancesOfferingId :: Text
tags :: Maybe [Tag]
reservedDBInstanceId :: Maybe Text
dbInstanceCount :: Maybe Int
$sel:reservedDBInstancesOfferingId:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Text
$sel:tags:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe [Tag]
$sel:reservedDBInstanceId:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe Text
$sel:dbInstanceCount:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
dbInstanceCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
reservedDBInstanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
reservedDBInstancesOfferingId

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

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

instance
  Data.ToQuery
    PurchaseReservedDBInstancesOffering
  where
  toQuery :: PurchaseReservedDBInstancesOffering -> QueryString
toQuery PurchaseReservedDBInstancesOffering' {Maybe Int
Maybe [Tag]
Maybe Text
Text
reservedDBInstancesOfferingId :: Text
tags :: Maybe [Tag]
reservedDBInstanceId :: Maybe Text
dbInstanceCount :: Maybe Int
$sel:reservedDBInstancesOfferingId:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Text
$sel:tags:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe [Tag]
$sel:reservedDBInstanceId:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe Text
$sel:dbInstanceCount:PurchaseReservedDBInstancesOffering' :: PurchaseReservedDBInstancesOffering -> Maybe Int
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"PurchaseReservedDBInstancesOffering" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2014-10-31" :: Prelude.ByteString),
        ByteString
"DBInstanceCount" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
dbInstanceCount,
        ByteString
"ReservedDBInstanceId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
reservedDBInstanceId,
        ByteString
"Tags"
          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
"Tag" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Tag]
tags),
        ByteString
"ReservedDBInstancesOfferingId"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
reservedDBInstancesOfferingId
      ]

-- | /See:/ 'newPurchaseReservedDBInstancesOfferingResponse' smart constructor.
data PurchaseReservedDBInstancesOfferingResponse = PurchaseReservedDBInstancesOfferingResponse'
  { PurchaseReservedDBInstancesOfferingResponse
-> Maybe ReservedDBInstance
reservedDBInstance :: Prelude.Maybe ReservedDBInstance,
    -- | The response's http status code.
    PurchaseReservedDBInstancesOfferingResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (PurchaseReservedDBInstancesOfferingResponse
-> PurchaseReservedDBInstancesOfferingResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PurchaseReservedDBInstancesOfferingResponse
-> PurchaseReservedDBInstancesOfferingResponse -> Bool
$c/= :: PurchaseReservedDBInstancesOfferingResponse
-> PurchaseReservedDBInstancesOfferingResponse -> Bool
== :: PurchaseReservedDBInstancesOfferingResponse
-> PurchaseReservedDBInstancesOfferingResponse -> Bool
$c== :: PurchaseReservedDBInstancesOfferingResponse
-> PurchaseReservedDBInstancesOfferingResponse -> Bool
Prelude.Eq, ReadPrec [PurchaseReservedDBInstancesOfferingResponse]
ReadPrec PurchaseReservedDBInstancesOfferingResponse
Int -> ReadS PurchaseReservedDBInstancesOfferingResponse
ReadS [PurchaseReservedDBInstancesOfferingResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PurchaseReservedDBInstancesOfferingResponse]
$creadListPrec :: ReadPrec [PurchaseReservedDBInstancesOfferingResponse]
readPrec :: ReadPrec PurchaseReservedDBInstancesOfferingResponse
$creadPrec :: ReadPrec PurchaseReservedDBInstancesOfferingResponse
readList :: ReadS [PurchaseReservedDBInstancesOfferingResponse]
$creadList :: ReadS [PurchaseReservedDBInstancesOfferingResponse]
readsPrec :: Int -> ReadS PurchaseReservedDBInstancesOfferingResponse
$creadsPrec :: Int -> ReadS PurchaseReservedDBInstancesOfferingResponse
Prelude.Read, Int -> PurchaseReservedDBInstancesOfferingResponse -> ShowS
[PurchaseReservedDBInstancesOfferingResponse] -> ShowS
PurchaseReservedDBInstancesOfferingResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PurchaseReservedDBInstancesOfferingResponse] -> ShowS
$cshowList :: [PurchaseReservedDBInstancesOfferingResponse] -> ShowS
show :: PurchaseReservedDBInstancesOfferingResponse -> String
$cshow :: PurchaseReservedDBInstancesOfferingResponse -> String
showsPrec :: Int -> PurchaseReservedDBInstancesOfferingResponse -> ShowS
$cshowsPrec :: Int -> PurchaseReservedDBInstancesOfferingResponse -> ShowS
Prelude.Show, forall x.
Rep PurchaseReservedDBInstancesOfferingResponse x
-> PurchaseReservedDBInstancesOfferingResponse
forall x.
PurchaseReservedDBInstancesOfferingResponse
-> Rep PurchaseReservedDBInstancesOfferingResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PurchaseReservedDBInstancesOfferingResponse x
-> PurchaseReservedDBInstancesOfferingResponse
$cfrom :: forall x.
PurchaseReservedDBInstancesOfferingResponse
-> Rep PurchaseReservedDBInstancesOfferingResponse x
Prelude.Generic)

-- |
-- Create a value of 'PurchaseReservedDBInstancesOfferingResponse' 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:
--
-- 'reservedDBInstance', 'purchaseReservedDBInstancesOfferingResponse_reservedDBInstance' - Undocumented member.
--
-- 'httpStatus', 'purchaseReservedDBInstancesOfferingResponse_httpStatus' - The response's http status code.
newPurchaseReservedDBInstancesOfferingResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  PurchaseReservedDBInstancesOfferingResponse
newPurchaseReservedDBInstancesOfferingResponse :: Int -> PurchaseReservedDBInstancesOfferingResponse
newPurchaseReservedDBInstancesOfferingResponse
  Int
pHttpStatus_ =
    PurchaseReservedDBInstancesOfferingResponse'
      { $sel:reservedDBInstance:PurchaseReservedDBInstancesOfferingResponse' :: Maybe ReservedDBInstance
reservedDBInstance =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:PurchaseReservedDBInstancesOfferingResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Undocumented member.
purchaseReservedDBInstancesOfferingResponse_reservedDBInstance :: Lens.Lens' PurchaseReservedDBInstancesOfferingResponse (Prelude.Maybe ReservedDBInstance)
purchaseReservedDBInstancesOfferingResponse_reservedDBInstance :: Lens'
  PurchaseReservedDBInstancesOfferingResponse
  (Maybe ReservedDBInstance)
purchaseReservedDBInstancesOfferingResponse_reservedDBInstance = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedDBInstancesOfferingResponse' {Maybe ReservedDBInstance
reservedDBInstance :: Maybe ReservedDBInstance
$sel:reservedDBInstance:PurchaseReservedDBInstancesOfferingResponse' :: PurchaseReservedDBInstancesOfferingResponse
-> Maybe ReservedDBInstance
reservedDBInstance} -> Maybe ReservedDBInstance
reservedDBInstance) (\s :: PurchaseReservedDBInstancesOfferingResponse
s@PurchaseReservedDBInstancesOfferingResponse' {} Maybe ReservedDBInstance
a -> PurchaseReservedDBInstancesOfferingResponse
s {$sel:reservedDBInstance:PurchaseReservedDBInstancesOfferingResponse' :: Maybe ReservedDBInstance
reservedDBInstance = Maybe ReservedDBInstance
a} :: PurchaseReservedDBInstancesOfferingResponse)

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

instance
  Prelude.NFData
    PurchaseReservedDBInstancesOfferingResponse
  where
  rnf :: PurchaseReservedDBInstancesOfferingResponse -> ()
rnf PurchaseReservedDBInstancesOfferingResponse' {Int
Maybe ReservedDBInstance
httpStatus :: Int
reservedDBInstance :: Maybe ReservedDBInstance
$sel:httpStatus:PurchaseReservedDBInstancesOfferingResponse' :: PurchaseReservedDBInstancesOfferingResponse -> Int
$sel:reservedDBInstance:PurchaseReservedDBInstancesOfferingResponse' :: PurchaseReservedDBInstancesOfferingResponse
-> Maybe ReservedDBInstance
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ReservedDBInstance
reservedDBInstance
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus