{-# 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.SageMaker.DeleteTrial
-- 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 specified trial. All trial components that make up the trial
-- must be deleted first. Use the DescribeTrialComponent API to get the
-- list of trial components.
module Amazonka.SageMaker.DeleteTrial
  ( -- * Creating a Request
    DeleteTrial (..),
    newDeleteTrial,

    -- * Request Lenses
    deleteTrial_trialName,

    -- * Destructuring the Response
    DeleteTrialResponse (..),
    newDeleteTrialResponse,

    -- * Response Lenses
    deleteTrialResponse_trialArn,
    deleteTrialResponse_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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.SageMaker.Types

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

-- |
-- Create a value of 'DeleteTrial' 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:
--
-- 'trialName', 'deleteTrial_trialName' - The name of the trial to delete.
newDeleteTrial ::
  -- | 'trialName'
  Prelude.Text ->
  DeleteTrial
newDeleteTrial :: Text -> DeleteTrial
newDeleteTrial Text
pTrialName_ =
  DeleteTrial' {$sel:trialName:DeleteTrial' :: Text
trialName = Text
pTrialName_}

-- | The name of the trial to delete.
deleteTrial_trialName :: Lens.Lens' DeleteTrial Prelude.Text
deleteTrial_trialName :: Lens' DeleteTrial Text
deleteTrial_trialName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteTrial' {Text
trialName :: Text
$sel:trialName:DeleteTrial' :: DeleteTrial -> Text
trialName} -> Text
trialName) (\s :: DeleteTrial
s@DeleteTrial' {} Text
a -> DeleteTrial
s {$sel:trialName:DeleteTrial' :: Text
trialName = Text
a} :: DeleteTrial)

instance Core.AWSRequest DeleteTrial where
  type AWSResponse DeleteTrial = DeleteTrialResponse
  request :: (Service -> Service) -> DeleteTrial -> Request DeleteTrial
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 DeleteTrial
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteTrial)))
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 -> DeleteTrialResponse
DeleteTrialResponse'
            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
"TrialArn")
            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 DeleteTrial where
  hashWithSalt :: Int -> DeleteTrial -> Int
hashWithSalt Int
_salt DeleteTrial' {Text
trialName :: Text
$sel:trialName:DeleteTrial' :: DeleteTrial -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
trialName

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

instance Data.ToHeaders DeleteTrial where
  toHeaders :: DeleteTrial -> 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
"SageMaker.DeleteTrial" :: 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 DeleteTrial where
  toJSON :: DeleteTrial -> Value
toJSON DeleteTrial' {Text
trialName :: Text
$sel:trialName:DeleteTrial' :: DeleteTrial -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [forall a. a -> Maybe a
Prelude.Just (Key
"TrialName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
trialName)]
      )

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

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

-- | /See:/ 'newDeleteTrialResponse' smart constructor.
data DeleteTrialResponse = DeleteTrialResponse'
  { -- | The Amazon Resource Name (ARN) of the trial that is being deleted.
    DeleteTrialResponse -> Maybe Text
trialArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DeleteTrialResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DeleteTrialResponse -> DeleteTrialResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteTrialResponse -> DeleteTrialResponse -> Bool
$c/= :: DeleteTrialResponse -> DeleteTrialResponse -> Bool
== :: DeleteTrialResponse -> DeleteTrialResponse -> Bool
$c== :: DeleteTrialResponse -> DeleteTrialResponse -> Bool
Prelude.Eq, ReadPrec [DeleteTrialResponse]
ReadPrec DeleteTrialResponse
Int -> ReadS DeleteTrialResponse
ReadS [DeleteTrialResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteTrialResponse]
$creadListPrec :: ReadPrec [DeleteTrialResponse]
readPrec :: ReadPrec DeleteTrialResponse
$creadPrec :: ReadPrec DeleteTrialResponse
readList :: ReadS [DeleteTrialResponse]
$creadList :: ReadS [DeleteTrialResponse]
readsPrec :: Int -> ReadS DeleteTrialResponse
$creadsPrec :: Int -> ReadS DeleteTrialResponse
Prelude.Read, Int -> DeleteTrialResponse -> ShowS
[DeleteTrialResponse] -> ShowS
DeleteTrialResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteTrialResponse] -> ShowS
$cshowList :: [DeleteTrialResponse] -> ShowS
show :: DeleteTrialResponse -> String
$cshow :: DeleteTrialResponse -> String
showsPrec :: Int -> DeleteTrialResponse -> ShowS
$cshowsPrec :: Int -> DeleteTrialResponse -> ShowS
Prelude.Show, forall x. Rep DeleteTrialResponse x -> DeleteTrialResponse
forall x. DeleteTrialResponse -> Rep DeleteTrialResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteTrialResponse x -> DeleteTrialResponse
$cfrom :: forall x. DeleteTrialResponse -> Rep DeleteTrialResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteTrialResponse' 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:
--
-- 'trialArn', 'deleteTrialResponse_trialArn' - The Amazon Resource Name (ARN) of the trial that is being deleted.
--
-- 'httpStatus', 'deleteTrialResponse_httpStatus' - The response's http status code.
newDeleteTrialResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteTrialResponse
newDeleteTrialResponse :: Int -> DeleteTrialResponse
newDeleteTrialResponse Int
pHttpStatus_ =
  DeleteTrialResponse'
    { $sel:trialArn:DeleteTrialResponse' :: Maybe Text
trialArn = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeleteTrialResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The Amazon Resource Name (ARN) of the trial that is being deleted.
deleteTrialResponse_trialArn :: Lens.Lens' DeleteTrialResponse (Prelude.Maybe Prelude.Text)
deleteTrialResponse_trialArn :: Lens' DeleteTrialResponse (Maybe Text)
deleteTrialResponse_trialArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteTrialResponse' {Maybe Text
trialArn :: Maybe Text
$sel:trialArn:DeleteTrialResponse' :: DeleteTrialResponse -> Maybe Text
trialArn} -> Maybe Text
trialArn) (\s :: DeleteTrialResponse
s@DeleteTrialResponse' {} Maybe Text
a -> DeleteTrialResponse
s {$sel:trialArn:DeleteTrialResponse' :: Maybe Text
trialArn = Maybe Text
a} :: DeleteTrialResponse)

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

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