{-# 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.Backup.DeleteBackupSelection
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes the resource selection associated with a backup plan that is
-- specified by the @SelectionId@.
module Amazonka.Backup.DeleteBackupSelection
  ( -- * Creating a Request
    DeleteBackupSelection (..),
    newDeleteBackupSelection,

    -- * Request Lenses
    deleteBackupSelection_backupPlanId,
    deleteBackupSelection_selectionId,

    -- * Destructuring the Response
    DeleteBackupSelectionResponse (..),
    newDeleteBackupSelectionResponse,
  )
where

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

-- | /See:/ 'newDeleteBackupSelection' smart constructor.
data DeleteBackupSelection = DeleteBackupSelection'
  { -- | Uniquely identifies a backup plan.
    DeleteBackupSelection -> Text
backupPlanId :: Prelude.Text,
    -- | Uniquely identifies the body of a request to assign a set of resources
    -- to a backup plan.
    DeleteBackupSelection -> Text
selectionId :: Prelude.Text
  }
  deriving (DeleteBackupSelection -> DeleteBackupSelection -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteBackupSelection -> DeleteBackupSelection -> Bool
$c/= :: DeleteBackupSelection -> DeleteBackupSelection -> Bool
== :: DeleteBackupSelection -> DeleteBackupSelection -> Bool
$c== :: DeleteBackupSelection -> DeleteBackupSelection -> Bool
Prelude.Eq, ReadPrec [DeleteBackupSelection]
ReadPrec DeleteBackupSelection
Int -> ReadS DeleteBackupSelection
ReadS [DeleteBackupSelection]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteBackupSelection]
$creadListPrec :: ReadPrec [DeleteBackupSelection]
readPrec :: ReadPrec DeleteBackupSelection
$creadPrec :: ReadPrec DeleteBackupSelection
readList :: ReadS [DeleteBackupSelection]
$creadList :: ReadS [DeleteBackupSelection]
readsPrec :: Int -> ReadS DeleteBackupSelection
$creadsPrec :: Int -> ReadS DeleteBackupSelection
Prelude.Read, Int -> DeleteBackupSelection -> ShowS
[DeleteBackupSelection] -> ShowS
DeleteBackupSelection -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteBackupSelection] -> ShowS
$cshowList :: [DeleteBackupSelection] -> ShowS
show :: DeleteBackupSelection -> String
$cshow :: DeleteBackupSelection -> String
showsPrec :: Int -> DeleteBackupSelection -> ShowS
$cshowsPrec :: Int -> DeleteBackupSelection -> ShowS
Prelude.Show, forall x. Rep DeleteBackupSelection x -> DeleteBackupSelection
forall x. DeleteBackupSelection -> Rep DeleteBackupSelection x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteBackupSelection x -> DeleteBackupSelection
$cfrom :: forall x. DeleteBackupSelection -> Rep DeleteBackupSelection x
Prelude.Generic)

-- |
-- Create a value of 'DeleteBackupSelection' 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:
--
-- 'backupPlanId', 'deleteBackupSelection_backupPlanId' - Uniquely identifies a backup plan.
--
-- 'selectionId', 'deleteBackupSelection_selectionId' - Uniquely identifies the body of a request to assign a set of resources
-- to a backup plan.
newDeleteBackupSelection ::
  -- | 'backupPlanId'
  Prelude.Text ->
  -- | 'selectionId'
  Prelude.Text ->
  DeleteBackupSelection
newDeleteBackupSelection :: Text -> Text -> DeleteBackupSelection
newDeleteBackupSelection Text
pBackupPlanId_ Text
pSelectionId_ =
  DeleteBackupSelection'
    { $sel:backupPlanId:DeleteBackupSelection' :: Text
backupPlanId =
        Text
pBackupPlanId_,
      $sel:selectionId:DeleteBackupSelection' :: Text
selectionId = Text
pSelectionId_
    }

-- | Uniquely identifies a backup plan.
deleteBackupSelection_backupPlanId :: Lens.Lens' DeleteBackupSelection Prelude.Text
deleteBackupSelection_backupPlanId :: Lens' DeleteBackupSelection Text
deleteBackupSelection_backupPlanId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteBackupSelection' {Text
backupPlanId :: Text
$sel:backupPlanId:DeleteBackupSelection' :: DeleteBackupSelection -> Text
backupPlanId} -> Text
backupPlanId) (\s :: DeleteBackupSelection
s@DeleteBackupSelection' {} Text
a -> DeleteBackupSelection
s {$sel:backupPlanId:DeleteBackupSelection' :: Text
backupPlanId = Text
a} :: DeleteBackupSelection)

-- | Uniquely identifies the body of a request to assign a set of resources
-- to a backup plan.
deleteBackupSelection_selectionId :: Lens.Lens' DeleteBackupSelection Prelude.Text
deleteBackupSelection_selectionId :: Lens' DeleteBackupSelection Text
deleteBackupSelection_selectionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteBackupSelection' {Text
selectionId :: Text
$sel:selectionId:DeleteBackupSelection' :: DeleteBackupSelection -> Text
selectionId} -> Text
selectionId) (\s :: DeleteBackupSelection
s@DeleteBackupSelection' {} Text
a -> DeleteBackupSelection
s {$sel:selectionId:DeleteBackupSelection' :: Text
selectionId = Text
a} :: DeleteBackupSelection)

instance Core.AWSRequest DeleteBackupSelection where
  type
    AWSResponse DeleteBackupSelection =
      DeleteBackupSelectionResponse
  request :: (Service -> Service)
-> DeleteBackupSelection -> Request DeleteBackupSelection
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteBackupSelection
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteBackupSelection)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull DeleteBackupSelectionResponse
DeleteBackupSelectionResponse'

instance Prelude.Hashable DeleteBackupSelection where
  hashWithSalt :: Int -> DeleteBackupSelection -> Int
hashWithSalt Int
_salt DeleteBackupSelection' {Text
selectionId :: Text
backupPlanId :: Text
$sel:selectionId:DeleteBackupSelection' :: DeleteBackupSelection -> Text
$sel:backupPlanId:DeleteBackupSelection' :: DeleteBackupSelection -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
backupPlanId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
selectionId

instance Prelude.NFData DeleteBackupSelection where
  rnf :: DeleteBackupSelection -> ()
rnf DeleteBackupSelection' {Text
selectionId :: Text
backupPlanId :: Text
$sel:selectionId:DeleteBackupSelection' :: DeleteBackupSelection -> Text
$sel:backupPlanId:DeleteBackupSelection' :: DeleteBackupSelection -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
backupPlanId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
selectionId

instance Data.ToHeaders DeleteBackupSelection where
  toHeaders :: DeleteBackupSelection -> [Header]
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DeleteBackupSelection where
  toPath :: DeleteBackupSelection -> ByteString
toPath DeleteBackupSelection' {Text
selectionId :: Text
backupPlanId :: Text
$sel:selectionId:DeleteBackupSelection' :: DeleteBackupSelection -> Text
$sel:backupPlanId:DeleteBackupSelection' :: DeleteBackupSelection -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/backup/plans/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
backupPlanId,
        ByteString
"/selections/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
selectionId
      ]

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

-- | /See:/ 'newDeleteBackupSelectionResponse' smart constructor.
data DeleteBackupSelectionResponse = DeleteBackupSelectionResponse'
  {
  }
  deriving (DeleteBackupSelectionResponse
-> DeleteBackupSelectionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteBackupSelectionResponse
-> DeleteBackupSelectionResponse -> Bool
$c/= :: DeleteBackupSelectionResponse
-> DeleteBackupSelectionResponse -> Bool
== :: DeleteBackupSelectionResponse
-> DeleteBackupSelectionResponse -> Bool
$c== :: DeleteBackupSelectionResponse
-> DeleteBackupSelectionResponse -> Bool
Prelude.Eq, ReadPrec [DeleteBackupSelectionResponse]
ReadPrec DeleteBackupSelectionResponse
Int -> ReadS DeleteBackupSelectionResponse
ReadS [DeleteBackupSelectionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteBackupSelectionResponse]
$creadListPrec :: ReadPrec [DeleteBackupSelectionResponse]
readPrec :: ReadPrec DeleteBackupSelectionResponse
$creadPrec :: ReadPrec DeleteBackupSelectionResponse
readList :: ReadS [DeleteBackupSelectionResponse]
$creadList :: ReadS [DeleteBackupSelectionResponse]
readsPrec :: Int -> ReadS DeleteBackupSelectionResponse
$creadsPrec :: Int -> ReadS DeleteBackupSelectionResponse
Prelude.Read, Int -> DeleteBackupSelectionResponse -> ShowS
[DeleteBackupSelectionResponse] -> ShowS
DeleteBackupSelectionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteBackupSelectionResponse] -> ShowS
$cshowList :: [DeleteBackupSelectionResponse] -> ShowS
show :: DeleteBackupSelectionResponse -> String
$cshow :: DeleteBackupSelectionResponse -> String
showsPrec :: Int -> DeleteBackupSelectionResponse -> ShowS
$cshowsPrec :: Int -> DeleteBackupSelectionResponse -> ShowS
Prelude.Show, forall x.
Rep DeleteBackupSelectionResponse x
-> DeleteBackupSelectionResponse
forall x.
DeleteBackupSelectionResponse
-> Rep DeleteBackupSelectionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteBackupSelectionResponse x
-> DeleteBackupSelectionResponse
$cfrom :: forall x.
DeleteBackupSelectionResponse
-> Rep DeleteBackupSelectionResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteBackupSelectionResponse' 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.
newDeleteBackupSelectionResponse ::
  DeleteBackupSelectionResponse
newDeleteBackupSelectionResponse :: DeleteBackupSelectionResponse
newDeleteBackupSelectionResponse =
  DeleteBackupSelectionResponse
DeleteBackupSelectionResponse'

instance Prelude.NFData DeleteBackupSelectionResponse where
  rnf :: DeleteBackupSelectionResponse -> ()
rnf DeleteBackupSelectionResponse
_ = ()