{-# 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.AppSync.DeleteResolver
-- 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 @Resolver@ object.
module Amazonka.AppSync.DeleteResolver
  ( -- * Creating a Request
    DeleteResolver (..),
    newDeleteResolver,

    -- * Request Lenses
    deleteResolver_apiId,
    deleteResolver_typeName,
    deleteResolver_fieldName,

    -- * Destructuring the Response
    DeleteResolverResponse (..),
    newDeleteResolverResponse,

    -- * Response Lenses
    deleteResolverResponse_httpStatus,
  )
where

import Amazonka.AppSync.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:/ 'newDeleteResolver' smart constructor.
data DeleteResolver = DeleteResolver'
  { -- | The API ID.
    DeleteResolver -> Text
apiId :: Prelude.Text,
    -- | The name of the resolver type.
    DeleteResolver -> Text
typeName :: Prelude.Text,
    -- | The resolver field name.
    DeleteResolver -> Text
fieldName :: Prelude.Text
  }
  deriving (DeleteResolver -> DeleteResolver -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteResolver -> DeleteResolver -> Bool
$c/= :: DeleteResolver -> DeleteResolver -> Bool
== :: DeleteResolver -> DeleteResolver -> Bool
$c== :: DeleteResolver -> DeleteResolver -> Bool
Prelude.Eq, ReadPrec [DeleteResolver]
ReadPrec DeleteResolver
Int -> ReadS DeleteResolver
ReadS [DeleteResolver]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteResolver]
$creadListPrec :: ReadPrec [DeleteResolver]
readPrec :: ReadPrec DeleteResolver
$creadPrec :: ReadPrec DeleteResolver
readList :: ReadS [DeleteResolver]
$creadList :: ReadS [DeleteResolver]
readsPrec :: Int -> ReadS DeleteResolver
$creadsPrec :: Int -> ReadS DeleteResolver
Prelude.Read, Int -> DeleteResolver -> ShowS
[DeleteResolver] -> ShowS
DeleteResolver -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteResolver] -> ShowS
$cshowList :: [DeleteResolver] -> ShowS
show :: DeleteResolver -> String
$cshow :: DeleteResolver -> String
showsPrec :: Int -> DeleteResolver -> ShowS
$cshowsPrec :: Int -> DeleteResolver -> ShowS
Prelude.Show, forall x. Rep DeleteResolver x -> DeleteResolver
forall x. DeleteResolver -> Rep DeleteResolver x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteResolver x -> DeleteResolver
$cfrom :: forall x. DeleteResolver -> Rep DeleteResolver x
Prelude.Generic)

-- |
-- Create a value of 'DeleteResolver' 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:
--
-- 'apiId', 'deleteResolver_apiId' - The API ID.
--
-- 'typeName', 'deleteResolver_typeName' - The name of the resolver type.
--
-- 'fieldName', 'deleteResolver_fieldName' - The resolver field name.
newDeleteResolver ::
  -- | 'apiId'
  Prelude.Text ->
  -- | 'typeName'
  Prelude.Text ->
  -- | 'fieldName'
  Prelude.Text ->
  DeleteResolver
newDeleteResolver :: Text -> Text -> Text -> DeleteResolver
newDeleteResolver Text
pApiId_ Text
pTypeName_ Text
pFieldName_ =
  DeleteResolver'
    { $sel:apiId:DeleteResolver' :: Text
apiId = Text
pApiId_,
      $sel:typeName:DeleteResolver' :: Text
typeName = Text
pTypeName_,
      $sel:fieldName:DeleteResolver' :: Text
fieldName = Text
pFieldName_
    }

-- | The API ID.
deleteResolver_apiId :: Lens.Lens' DeleteResolver Prelude.Text
deleteResolver_apiId :: Lens' DeleteResolver Text
deleteResolver_apiId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteResolver' {Text
apiId :: Text
$sel:apiId:DeleteResolver' :: DeleteResolver -> Text
apiId} -> Text
apiId) (\s :: DeleteResolver
s@DeleteResolver' {} Text
a -> DeleteResolver
s {$sel:apiId:DeleteResolver' :: Text
apiId = Text
a} :: DeleteResolver)

-- | The name of the resolver type.
deleteResolver_typeName :: Lens.Lens' DeleteResolver Prelude.Text
deleteResolver_typeName :: Lens' DeleteResolver Text
deleteResolver_typeName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteResolver' {Text
typeName :: Text
$sel:typeName:DeleteResolver' :: DeleteResolver -> Text
typeName} -> Text
typeName) (\s :: DeleteResolver
s@DeleteResolver' {} Text
a -> DeleteResolver
s {$sel:typeName:DeleteResolver' :: Text
typeName = Text
a} :: DeleteResolver)

-- | The resolver field name.
deleteResolver_fieldName :: Lens.Lens' DeleteResolver Prelude.Text
deleteResolver_fieldName :: Lens' DeleteResolver Text
deleteResolver_fieldName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteResolver' {Text
fieldName :: Text
$sel:fieldName:DeleteResolver' :: DeleteResolver -> Text
fieldName} -> Text
fieldName) (\s :: DeleteResolver
s@DeleteResolver' {} Text
a -> DeleteResolver
s {$sel:fieldName:DeleteResolver' :: Text
fieldName = Text
a} :: DeleteResolver)

instance Core.AWSRequest DeleteResolver where
  type
    AWSResponse DeleteResolver =
      DeleteResolverResponse
  request :: (Service -> Service) -> DeleteResolver -> Request DeleteResolver
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 DeleteResolver
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteResolver)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> DeleteResolverResponse
DeleteResolverResponse'
            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))
      )

instance Prelude.Hashable DeleteResolver where
  hashWithSalt :: Int -> DeleteResolver -> Int
hashWithSalt Int
_salt DeleteResolver' {Text
fieldName :: Text
typeName :: Text
apiId :: Text
$sel:fieldName:DeleteResolver' :: DeleteResolver -> Text
$sel:typeName:DeleteResolver' :: DeleteResolver -> Text
$sel:apiId:DeleteResolver' :: DeleteResolver -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
apiId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
typeName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
fieldName

instance Prelude.NFData DeleteResolver where
  rnf :: DeleteResolver -> ()
rnf DeleteResolver' {Text
fieldName :: Text
typeName :: Text
apiId :: Text
$sel:fieldName:DeleteResolver' :: DeleteResolver -> Text
$sel:typeName:DeleteResolver' :: DeleteResolver -> Text
$sel:apiId:DeleteResolver' :: DeleteResolver -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
apiId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
typeName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
fieldName

instance Data.ToHeaders DeleteResolver where
  toHeaders :: DeleteResolver -> ResponseHeaders
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 -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DeleteResolver where
  toPath :: DeleteResolver -> ByteString
toPath DeleteResolver' {Text
fieldName :: Text
typeName :: Text
apiId :: Text
$sel:fieldName:DeleteResolver' :: DeleteResolver -> Text
$sel:typeName:DeleteResolver' :: DeleteResolver -> Text
$sel:apiId:DeleteResolver' :: DeleteResolver -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/v1/apis/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
apiId,
        ByteString
"/types/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
typeName,
        ByteString
"/resolvers/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
fieldName
      ]

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

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

-- |
-- Create a value of 'DeleteResolverResponse' 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', 'deleteResolverResponse_httpStatus' - The response's http status code.
newDeleteResolverResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteResolverResponse
newDeleteResolverResponse :: Int -> DeleteResolverResponse
newDeleteResolverResponse Int
pHttpStatus_ =
  DeleteResolverResponse' {$sel:httpStatus:DeleteResolverResponse' :: Int
httpStatus = Int
pHttpStatus_}

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

instance Prelude.NFData DeleteResolverResponse where
  rnf :: DeleteResolverResponse -> ()
rnf DeleteResolverResponse' {Int
httpStatus :: Int
$sel:httpStatus:DeleteResolverResponse' :: DeleteResolverResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus