{-# 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.Glue.DeleteMLTransform
-- 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 an Glue machine learning transform. Machine learning transforms
-- are a special type of transform that use machine learning to learn the
-- details of the transformation to be performed by learning from examples
-- provided by humans. These transformations are then saved by Glue. If you
-- no longer need a transform, you can delete it by calling
-- @DeleteMLTransforms@. However, any Glue jobs that still reference the
-- deleted transform will no longer succeed.
module Amazonka.Glue.DeleteMLTransform
  ( -- * Creating a Request
    DeleteMLTransform (..),
    newDeleteMLTransform,

    -- * Request Lenses
    deleteMLTransform_transformId,

    -- * Destructuring the Response
    DeleteMLTransformResponse (..),
    newDeleteMLTransformResponse,

    -- * Response Lenses
    deleteMLTransformResponse_transformId,
    deleteMLTransformResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDeleteMLTransform' smart constructor.
data DeleteMLTransform = DeleteMLTransform'
  { -- | The unique identifier of the transform to delete.
    DeleteMLTransform -> Text
transformId :: Prelude.Text
  }
  deriving (DeleteMLTransform -> DeleteMLTransform -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteMLTransform -> DeleteMLTransform -> Bool
$c/= :: DeleteMLTransform -> DeleteMLTransform -> Bool
== :: DeleteMLTransform -> DeleteMLTransform -> Bool
$c== :: DeleteMLTransform -> DeleteMLTransform -> Bool
Prelude.Eq, ReadPrec [DeleteMLTransform]
ReadPrec DeleteMLTransform
Int -> ReadS DeleteMLTransform
ReadS [DeleteMLTransform]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteMLTransform]
$creadListPrec :: ReadPrec [DeleteMLTransform]
readPrec :: ReadPrec DeleteMLTransform
$creadPrec :: ReadPrec DeleteMLTransform
readList :: ReadS [DeleteMLTransform]
$creadList :: ReadS [DeleteMLTransform]
readsPrec :: Int -> ReadS DeleteMLTransform
$creadsPrec :: Int -> ReadS DeleteMLTransform
Prelude.Read, Int -> DeleteMLTransform -> ShowS
[DeleteMLTransform] -> ShowS
DeleteMLTransform -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteMLTransform] -> ShowS
$cshowList :: [DeleteMLTransform] -> ShowS
show :: DeleteMLTransform -> String
$cshow :: DeleteMLTransform -> String
showsPrec :: Int -> DeleteMLTransform -> ShowS
$cshowsPrec :: Int -> DeleteMLTransform -> ShowS
Prelude.Show, forall x. Rep DeleteMLTransform x -> DeleteMLTransform
forall x. DeleteMLTransform -> Rep DeleteMLTransform x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteMLTransform x -> DeleteMLTransform
$cfrom :: forall x. DeleteMLTransform -> Rep DeleteMLTransform x
Prelude.Generic)

-- |
-- Create a value of 'DeleteMLTransform' 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:
--
-- 'transformId', 'deleteMLTransform_transformId' - The unique identifier of the transform to delete.
newDeleteMLTransform ::
  -- | 'transformId'
  Prelude.Text ->
  DeleteMLTransform
newDeleteMLTransform :: Text -> DeleteMLTransform
newDeleteMLTransform Text
pTransformId_ =
  DeleteMLTransform' {$sel:transformId:DeleteMLTransform' :: Text
transformId = Text
pTransformId_}

-- | The unique identifier of the transform to delete.
deleteMLTransform_transformId :: Lens.Lens' DeleteMLTransform Prelude.Text
deleteMLTransform_transformId :: Lens' DeleteMLTransform Text
deleteMLTransform_transformId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteMLTransform' {Text
transformId :: Text
$sel:transformId:DeleteMLTransform' :: DeleteMLTransform -> Text
transformId} -> Text
transformId) (\s :: DeleteMLTransform
s@DeleteMLTransform' {} Text
a -> DeleteMLTransform
s {$sel:transformId:DeleteMLTransform' :: Text
transformId = Text
a} :: DeleteMLTransform)

instance Core.AWSRequest DeleteMLTransform where
  type
    AWSResponse DeleteMLTransform =
      DeleteMLTransformResponse
  request :: (Service -> Service)
-> DeleteMLTransform -> Request DeleteMLTransform
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteMLTransform
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteMLTransform)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Int -> DeleteMLTransformResponse
DeleteMLTransformResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"TransformId")
            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 DeleteMLTransform where
  hashWithSalt :: Int -> DeleteMLTransform -> Int
hashWithSalt Int
_salt DeleteMLTransform' {Text
transformId :: Text
$sel:transformId:DeleteMLTransform' :: DeleteMLTransform -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
transformId

instance Prelude.NFData DeleteMLTransform where
  rnf :: DeleteMLTransform -> ()
rnf DeleteMLTransform' {Text
transformId :: Text
$sel:transformId:DeleteMLTransform' :: DeleteMLTransform -> Text
..} = forall a. NFData a => a -> ()
Prelude.rnf Text
transformId

instance Data.ToHeaders DeleteMLTransform where
  toHeaders :: DeleteMLTransform -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# (ByteString
"AWSGlue.DeleteMLTransform" :: Prelude.ByteString),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DeleteMLTransform where
  toJSON :: DeleteMLTransform -> Value
toJSON DeleteMLTransform' {Text
transformId :: Text
$sel:transformId:DeleteMLTransform' :: DeleteMLTransform -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [forall a. a -> Maybe a
Prelude.Just (Key
"TransformId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
transformId)]
      )

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

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

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

-- |
-- Create a value of 'DeleteMLTransformResponse' 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:
--
-- 'transformId', 'deleteMLTransformResponse_transformId' - The unique identifier of the transform that was deleted.
--
-- 'httpStatus', 'deleteMLTransformResponse_httpStatus' - The response's http status code.
newDeleteMLTransformResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteMLTransformResponse
newDeleteMLTransformResponse :: Int -> DeleteMLTransformResponse
newDeleteMLTransformResponse Int
pHttpStatus_ =
  DeleteMLTransformResponse'
    { $sel:transformId:DeleteMLTransformResponse' :: Maybe Text
transformId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeleteMLTransformResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The unique identifier of the transform that was deleted.
deleteMLTransformResponse_transformId :: Lens.Lens' DeleteMLTransformResponse (Prelude.Maybe Prelude.Text)
deleteMLTransformResponse_transformId :: Lens' DeleteMLTransformResponse (Maybe Text)
deleteMLTransformResponse_transformId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteMLTransformResponse' {Maybe Text
transformId :: Maybe Text
$sel:transformId:DeleteMLTransformResponse' :: DeleteMLTransformResponse -> Maybe Text
transformId} -> Maybe Text
transformId) (\s :: DeleteMLTransformResponse
s@DeleteMLTransformResponse' {} Maybe Text
a -> DeleteMLTransformResponse
s {$sel:transformId:DeleteMLTransformResponse' :: Maybe Text
transformId = Maybe Text
a} :: DeleteMLTransformResponse)

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

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