{-# 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.Forecast.DeleteWhatIfAnalysis
-- 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 what-if analysis created using the CreateWhatIfAnalysis
-- operation. You can delete only what-if analyses that have a status of
-- @ACTIVE@ or @CREATE_FAILED@. To get the status, use the
-- DescribeWhatIfAnalysis operation.
--
-- You can\'t delete a what-if analysis while any of its forecasts are
-- being exported.
module Amazonka.Forecast.DeleteWhatIfAnalysis
  ( -- * Creating a Request
    DeleteWhatIfAnalysis (..),
    newDeleteWhatIfAnalysis,

    -- * Request Lenses
    deleteWhatIfAnalysis_whatIfAnalysisArn,

    -- * Destructuring the Response
    DeleteWhatIfAnalysisResponse (..),
    newDeleteWhatIfAnalysisResponse,
  )
where

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

-- | /See:/ 'newDeleteWhatIfAnalysis' smart constructor.
data DeleteWhatIfAnalysis = DeleteWhatIfAnalysis'
  { -- | The Amazon Resource Name (ARN) of the what-if analysis that you want to
    -- delete.
    DeleteWhatIfAnalysis -> Text
whatIfAnalysisArn :: Prelude.Text
  }
  deriving (DeleteWhatIfAnalysis -> DeleteWhatIfAnalysis -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteWhatIfAnalysis -> DeleteWhatIfAnalysis -> Bool
$c/= :: DeleteWhatIfAnalysis -> DeleteWhatIfAnalysis -> Bool
== :: DeleteWhatIfAnalysis -> DeleteWhatIfAnalysis -> Bool
$c== :: DeleteWhatIfAnalysis -> DeleteWhatIfAnalysis -> Bool
Prelude.Eq, ReadPrec [DeleteWhatIfAnalysis]
ReadPrec DeleteWhatIfAnalysis
Int -> ReadS DeleteWhatIfAnalysis
ReadS [DeleteWhatIfAnalysis]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteWhatIfAnalysis]
$creadListPrec :: ReadPrec [DeleteWhatIfAnalysis]
readPrec :: ReadPrec DeleteWhatIfAnalysis
$creadPrec :: ReadPrec DeleteWhatIfAnalysis
readList :: ReadS [DeleteWhatIfAnalysis]
$creadList :: ReadS [DeleteWhatIfAnalysis]
readsPrec :: Int -> ReadS DeleteWhatIfAnalysis
$creadsPrec :: Int -> ReadS DeleteWhatIfAnalysis
Prelude.Read, Int -> DeleteWhatIfAnalysis -> ShowS
[DeleteWhatIfAnalysis] -> ShowS
DeleteWhatIfAnalysis -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteWhatIfAnalysis] -> ShowS
$cshowList :: [DeleteWhatIfAnalysis] -> ShowS
show :: DeleteWhatIfAnalysis -> String
$cshow :: DeleteWhatIfAnalysis -> String
showsPrec :: Int -> DeleteWhatIfAnalysis -> ShowS
$cshowsPrec :: Int -> DeleteWhatIfAnalysis -> ShowS
Prelude.Show, forall x. Rep DeleteWhatIfAnalysis x -> DeleteWhatIfAnalysis
forall x. DeleteWhatIfAnalysis -> Rep DeleteWhatIfAnalysis x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteWhatIfAnalysis x -> DeleteWhatIfAnalysis
$cfrom :: forall x. DeleteWhatIfAnalysis -> Rep DeleteWhatIfAnalysis x
Prelude.Generic)

-- |
-- Create a value of 'DeleteWhatIfAnalysis' 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:
--
-- 'whatIfAnalysisArn', 'deleteWhatIfAnalysis_whatIfAnalysisArn' - The Amazon Resource Name (ARN) of the what-if analysis that you want to
-- delete.
newDeleteWhatIfAnalysis ::
  -- | 'whatIfAnalysisArn'
  Prelude.Text ->
  DeleteWhatIfAnalysis
newDeleteWhatIfAnalysis :: Text -> DeleteWhatIfAnalysis
newDeleteWhatIfAnalysis Text
pWhatIfAnalysisArn_ =
  DeleteWhatIfAnalysis'
    { $sel:whatIfAnalysisArn:DeleteWhatIfAnalysis' :: Text
whatIfAnalysisArn =
        Text
pWhatIfAnalysisArn_
    }

-- | The Amazon Resource Name (ARN) of the what-if analysis that you want to
-- delete.
deleteWhatIfAnalysis_whatIfAnalysisArn :: Lens.Lens' DeleteWhatIfAnalysis Prelude.Text
deleteWhatIfAnalysis_whatIfAnalysisArn :: Lens' DeleteWhatIfAnalysis Text
deleteWhatIfAnalysis_whatIfAnalysisArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteWhatIfAnalysis' {Text
whatIfAnalysisArn :: Text
$sel:whatIfAnalysisArn:DeleteWhatIfAnalysis' :: DeleteWhatIfAnalysis -> Text
whatIfAnalysisArn} -> Text
whatIfAnalysisArn) (\s :: DeleteWhatIfAnalysis
s@DeleteWhatIfAnalysis' {} Text
a -> DeleteWhatIfAnalysis
s {$sel:whatIfAnalysisArn:DeleteWhatIfAnalysis' :: Text
whatIfAnalysisArn = Text
a} :: DeleteWhatIfAnalysis)

instance Core.AWSRequest DeleteWhatIfAnalysis where
  type
    AWSResponse DeleteWhatIfAnalysis =
      DeleteWhatIfAnalysisResponse
  request :: (Service -> Service)
-> DeleteWhatIfAnalysis -> Request DeleteWhatIfAnalysis
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 DeleteWhatIfAnalysis
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteWhatIfAnalysis)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull DeleteWhatIfAnalysisResponse
DeleteWhatIfAnalysisResponse'

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

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

instance Data.ToHeaders DeleteWhatIfAnalysis where
  toHeaders :: DeleteWhatIfAnalysis -> [Header]
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 -> [Header]
Data.=# ( ByteString
"AmazonForecast.DeleteWhatIfAnalysis" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

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

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

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

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

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

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