{-# 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.CloudSearch.DeleteSuggester
-- 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 a suggester. For more information, see
-- <http://docs.aws.amazon.com/cloudsearch/latest/developerguide/getting-suggestions.html Getting Search Suggestions>
-- in the /Amazon CloudSearch Developer Guide/.
module Amazonka.CloudSearch.DeleteSuggester
  ( -- * Creating a Request
    DeleteSuggester (..),
    newDeleteSuggester,

    -- * Request Lenses
    deleteSuggester_domainName,
    deleteSuggester_suggesterName,

    -- * Destructuring the Response
    DeleteSuggesterResponse (..),
    newDeleteSuggesterResponse,

    -- * Response Lenses
    deleteSuggesterResponse_httpStatus,
    deleteSuggesterResponse_suggester,
  )
where

import Amazonka.CloudSearch.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

-- | Container for the parameters to the @DeleteSuggester@ operation.
-- Specifies the name of the domain you want to update and name of the
-- suggester you want to delete.
--
-- /See:/ 'newDeleteSuggester' smart constructor.
data DeleteSuggester = DeleteSuggester'
  { DeleteSuggester -> Text
domainName :: Prelude.Text,
    -- | Specifies the name of the suggester you want to delete.
    DeleteSuggester -> Text
suggesterName :: Prelude.Text
  }
  deriving (DeleteSuggester -> DeleteSuggester -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteSuggester -> DeleteSuggester -> Bool
$c/= :: DeleteSuggester -> DeleteSuggester -> Bool
== :: DeleteSuggester -> DeleteSuggester -> Bool
$c== :: DeleteSuggester -> DeleteSuggester -> Bool
Prelude.Eq, ReadPrec [DeleteSuggester]
ReadPrec DeleteSuggester
Int -> ReadS DeleteSuggester
ReadS [DeleteSuggester]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteSuggester]
$creadListPrec :: ReadPrec [DeleteSuggester]
readPrec :: ReadPrec DeleteSuggester
$creadPrec :: ReadPrec DeleteSuggester
readList :: ReadS [DeleteSuggester]
$creadList :: ReadS [DeleteSuggester]
readsPrec :: Int -> ReadS DeleteSuggester
$creadsPrec :: Int -> ReadS DeleteSuggester
Prelude.Read, Int -> DeleteSuggester -> ShowS
[DeleteSuggester] -> ShowS
DeleteSuggester -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteSuggester] -> ShowS
$cshowList :: [DeleteSuggester] -> ShowS
show :: DeleteSuggester -> String
$cshow :: DeleteSuggester -> String
showsPrec :: Int -> DeleteSuggester -> ShowS
$cshowsPrec :: Int -> DeleteSuggester -> ShowS
Prelude.Show, forall x. Rep DeleteSuggester x -> DeleteSuggester
forall x. DeleteSuggester -> Rep DeleteSuggester x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteSuggester x -> DeleteSuggester
$cfrom :: forall x. DeleteSuggester -> Rep DeleteSuggester x
Prelude.Generic)

-- |
-- Create a value of 'DeleteSuggester' 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:
--
-- 'domainName', 'deleteSuggester_domainName' - Undocumented member.
--
-- 'suggesterName', 'deleteSuggester_suggesterName' - Specifies the name of the suggester you want to delete.
newDeleteSuggester ::
  -- | 'domainName'
  Prelude.Text ->
  -- | 'suggesterName'
  Prelude.Text ->
  DeleteSuggester
newDeleteSuggester :: Text -> Text -> DeleteSuggester
newDeleteSuggester Text
pDomainName_ Text
pSuggesterName_ =
  DeleteSuggester'
    { $sel:domainName:DeleteSuggester' :: Text
domainName = Text
pDomainName_,
      $sel:suggesterName:DeleteSuggester' :: Text
suggesterName = Text
pSuggesterName_
    }

-- | Undocumented member.
deleteSuggester_domainName :: Lens.Lens' DeleteSuggester Prelude.Text
deleteSuggester_domainName :: Lens' DeleteSuggester Text
deleteSuggester_domainName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteSuggester' {Text
domainName :: Text
$sel:domainName:DeleteSuggester' :: DeleteSuggester -> Text
domainName} -> Text
domainName) (\s :: DeleteSuggester
s@DeleteSuggester' {} Text
a -> DeleteSuggester
s {$sel:domainName:DeleteSuggester' :: Text
domainName = Text
a} :: DeleteSuggester)

-- | Specifies the name of the suggester you want to delete.
deleteSuggester_suggesterName :: Lens.Lens' DeleteSuggester Prelude.Text
deleteSuggester_suggesterName :: Lens' DeleteSuggester Text
deleteSuggester_suggesterName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteSuggester' {Text
suggesterName :: Text
$sel:suggesterName:DeleteSuggester' :: DeleteSuggester -> Text
suggesterName} -> Text
suggesterName) (\s :: DeleteSuggester
s@DeleteSuggester' {} Text
a -> DeleteSuggester
s {$sel:suggesterName:DeleteSuggester' :: Text
suggesterName = Text
a} :: DeleteSuggester)

instance Core.AWSRequest DeleteSuggester where
  type
    AWSResponse DeleteSuggester =
      DeleteSuggesterResponse
  request :: (Service -> Service) -> DeleteSuggester -> Request DeleteSuggester
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 DeleteSuggester
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteSuggester)))
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
"DeleteSuggesterResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Int -> SuggesterStatus -> DeleteSuggesterResponse
DeleteSuggesterResponse'
            forall (f :: * -> *) a b. Functor 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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"Suggester")
      )

instance Prelude.Hashable DeleteSuggester where
  hashWithSalt :: Int -> DeleteSuggester -> Int
hashWithSalt Int
_salt DeleteSuggester' {Text
suggesterName :: Text
domainName :: Text
$sel:suggesterName:DeleteSuggester' :: DeleteSuggester -> Text
$sel:domainName:DeleteSuggester' :: DeleteSuggester -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domainName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
suggesterName

instance Prelude.NFData DeleteSuggester where
  rnf :: DeleteSuggester -> ()
rnf DeleteSuggester' {Text
suggesterName :: Text
domainName :: Text
$sel:suggesterName:DeleteSuggester' :: DeleteSuggester -> Text
$sel:domainName:DeleteSuggester' :: DeleteSuggester -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
domainName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
suggesterName

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

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

instance Data.ToQuery DeleteSuggester where
  toQuery :: DeleteSuggester -> QueryString
toQuery DeleteSuggester' {Text
suggesterName :: Text
domainName :: Text
$sel:suggesterName:DeleteSuggester' :: DeleteSuggester -> Text
$sel:domainName:DeleteSuggester' :: DeleteSuggester -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"DeleteSuggester" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2013-01-01" :: Prelude.ByteString),
        ByteString
"DomainName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
domainName,
        ByteString
"SuggesterName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
suggesterName
      ]

-- | The result of a @DeleteSuggester@ request. Contains the status of the
-- deleted suggester.
--
-- /See:/ 'newDeleteSuggesterResponse' smart constructor.
data DeleteSuggesterResponse = DeleteSuggesterResponse'
  { -- | The response's http status code.
    DeleteSuggesterResponse -> Int
httpStatus :: Prelude.Int,
    -- | The status of the suggester being deleted.
    DeleteSuggesterResponse -> SuggesterStatus
suggester :: SuggesterStatus
  }
  deriving (DeleteSuggesterResponse -> DeleteSuggesterResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteSuggesterResponse -> DeleteSuggesterResponse -> Bool
$c/= :: DeleteSuggesterResponse -> DeleteSuggesterResponse -> Bool
== :: DeleteSuggesterResponse -> DeleteSuggesterResponse -> Bool
$c== :: DeleteSuggesterResponse -> DeleteSuggesterResponse -> Bool
Prelude.Eq, ReadPrec [DeleteSuggesterResponse]
ReadPrec DeleteSuggesterResponse
Int -> ReadS DeleteSuggesterResponse
ReadS [DeleteSuggesterResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteSuggesterResponse]
$creadListPrec :: ReadPrec [DeleteSuggesterResponse]
readPrec :: ReadPrec DeleteSuggesterResponse
$creadPrec :: ReadPrec DeleteSuggesterResponse
readList :: ReadS [DeleteSuggesterResponse]
$creadList :: ReadS [DeleteSuggesterResponse]
readsPrec :: Int -> ReadS DeleteSuggesterResponse
$creadsPrec :: Int -> ReadS DeleteSuggesterResponse
Prelude.Read, Int -> DeleteSuggesterResponse -> ShowS
[DeleteSuggesterResponse] -> ShowS
DeleteSuggesterResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteSuggesterResponse] -> ShowS
$cshowList :: [DeleteSuggesterResponse] -> ShowS
show :: DeleteSuggesterResponse -> String
$cshow :: DeleteSuggesterResponse -> String
showsPrec :: Int -> DeleteSuggesterResponse -> ShowS
$cshowsPrec :: Int -> DeleteSuggesterResponse -> ShowS
Prelude.Show, forall x. Rep DeleteSuggesterResponse x -> DeleteSuggesterResponse
forall x. DeleteSuggesterResponse -> Rep DeleteSuggesterResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteSuggesterResponse x -> DeleteSuggesterResponse
$cfrom :: forall x. DeleteSuggesterResponse -> Rep DeleteSuggesterResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteSuggesterResponse' 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:
--
-- 'httpStatus', 'deleteSuggesterResponse_httpStatus' - The response's http status code.
--
-- 'suggester', 'deleteSuggesterResponse_suggester' - The status of the suggester being deleted.
newDeleteSuggesterResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'suggester'
  SuggesterStatus ->
  DeleteSuggesterResponse
newDeleteSuggesterResponse :: Int -> SuggesterStatus -> DeleteSuggesterResponse
newDeleteSuggesterResponse Int
pHttpStatus_ SuggesterStatus
pSuggester_ =
  DeleteSuggesterResponse'
    { $sel:httpStatus:DeleteSuggesterResponse' :: Int
httpStatus = Int
pHttpStatus_,
      $sel:suggester:DeleteSuggesterResponse' :: SuggesterStatus
suggester = SuggesterStatus
pSuggester_
    }

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

-- | The status of the suggester being deleted.
deleteSuggesterResponse_suggester :: Lens.Lens' DeleteSuggesterResponse SuggesterStatus
deleteSuggesterResponse_suggester :: Lens' DeleteSuggesterResponse SuggesterStatus
deleteSuggesterResponse_suggester = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteSuggesterResponse' {SuggesterStatus
suggester :: SuggesterStatus
$sel:suggester:DeleteSuggesterResponse' :: DeleteSuggesterResponse -> SuggesterStatus
suggester} -> SuggesterStatus
suggester) (\s :: DeleteSuggesterResponse
s@DeleteSuggesterResponse' {} SuggesterStatus
a -> DeleteSuggesterResponse
s {$sel:suggester:DeleteSuggesterResponse' :: SuggesterStatus
suggester = SuggesterStatus
a} :: DeleteSuggesterResponse)

instance Prelude.NFData DeleteSuggesterResponse where
  rnf :: DeleteSuggesterResponse -> ()
rnf DeleteSuggesterResponse' {Int
SuggesterStatus
suggester :: SuggesterStatus
httpStatus :: Int
$sel:suggester:DeleteSuggesterResponse' :: DeleteSuggesterResponse -> SuggesterStatus
$sel:httpStatus:DeleteSuggesterResponse' :: DeleteSuggesterResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf SuggesterStatus
suggester