{-# 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.DeleteDatasetGroup
-- 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 dataset group created using the
-- <https://docs.aws.amazon.com/forecast/latest/dg/API_CreateDatasetGroup.html CreateDatasetGroup>
-- operation. You can only delete dataset groups that have a status of
-- @ACTIVE@, @CREATE_FAILED@, or @UPDATE_FAILED@. To get the status, use
-- the
-- <https://docs.aws.amazon.com/forecast/latest/dg/API_DescribeDatasetGroup.html DescribeDatasetGroup>
-- operation.
--
-- This operation deletes only the dataset group, not the datasets in the
-- group.
module Amazonka.Forecast.DeleteDatasetGroup
  ( -- * Creating a Request
    DeleteDatasetGroup (..),
    newDeleteDatasetGroup,

    -- * Request Lenses
    deleteDatasetGroup_datasetGroupArn,

    -- * Destructuring the Response
    DeleteDatasetGroupResponse (..),
    newDeleteDatasetGroupResponse,
  )
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:/ 'newDeleteDatasetGroup' smart constructor.
data DeleteDatasetGroup = DeleteDatasetGroup'
  { -- | The Amazon Resource Name (ARN) of the dataset group to delete.
    DeleteDatasetGroup -> Text
datasetGroupArn :: Prelude.Text
  }
  deriving (DeleteDatasetGroup -> DeleteDatasetGroup -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteDatasetGroup -> DeleteDatasetGroup -> Bool
$c/= :: DeleteDatasetGroup -> DeleteDatasetGroup -> Bool
== :: DeleteDatasetGroup -> DeleteDatasetGroup -> Bool
$c== :: DeleteDatasetGroup -> DeleteDatasetGroup -> Bool
Prelude.Eq, ReadPrec [DeleteDatasetGroup]
ReadPrec DeleteDatasetGroup
Int -> ReadS DeleteDatasetGroup
ReadS [DeleteDatasetGroup]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteDatasetGroup]
$creadListPrec :: ReadPrec [DeleteDatasetGroup]
readPrec :: ReadPrec DeleteDatasetGroup
$creadPrec :: ReadPrec DeleteDatasetGroup
readList :: ReadS [DeleteDatasetGroup]
$creadList :: ReadS [DeleteDatasetGroup]
readsPrec :: Int -> ReadS DeleteDatasetGroup
$creadsPrec :: Int -> ReadS DeleteDatasetGroup
Prelude.Read, Int -> DeleteDatasetGroup -> ShowS
[DeleteDatasetGroup] -> ShowS
DeleteDatasetGroup -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteDatasetGroup] -> ShowS
$cshowList :: [DeleteDatasetGroup] -> ShowS
show :: DeleteDatasetGroup -> String
$cshow :: DeleteDatasetGroup -> String
showsPrec :: Int -> DeleteDatasetGroup -> ShowS
$cshowsPrec :: Int -> DeleteDatasetGroup -> ShowS
Prelude.Show, forall x. Rep DeleteDatasetGroup x -> DeleteDatasetGroup
forall x. DeleteDatasetGroup -> Rep DeleteDatasetGroup x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteDatasetGroup x -> DeleteDatasetGroup
$cfrom :: forall x. DeleteDatasetGroup -> Rep DeleteDatasetGroup x
Prelude.Generic)

-- |
-- Create a value of 'DeleteDatasetGroup' 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:
--
-- 'datasetGroupArn', 'deleteDatasetGroup_datasetGroupArn' - The Amazon Resource Name (ARN) of the dataset group to delete.
newDeleteDatasetGroup ::
  -- | 'datasetGroupArn'
  Prelude.Text ->
  DeleteDatasetGroup
newDeleteDatasetGroup :: Text -> DeleteDatasetGroup
newDeleteDatasetGroup Text
pDatasetGroupArn_ =
  DeleteDatasetGroup'
    { $sel:datasetGroupArn:DeleteDatasetGroup' :: Text
datasetGroupArn =
        Text
pDatasetGroupArn_
    }

-- | The Amazon Resource Name (ARN) of the dataset group to delete.
deleteDatasetGroup_datasetGroupArn :: Lens.Lens' DeleteDatasetGroup Prelude.Text
deleteDatasetGroup_datasetGroupArn :: Lens' DeleteDatasetGroup Text
deleteDatasetGroup_datasetGroupArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteDatasetGroup' {Text
datasetGroupArn :: Text
$sel:datasetGroupArn:DeleteDatasetGroup' :: DeleteDatasetGroup -> Text
datasetGroupArn} -> Text
datasetGroupArn) (\s :: DeleteDatasetGroup
s@DeleteDatasetGroup' {} Text
a -> DeleteDatasetGroup
s {$sel:datasetGroupArn:DeleteDatasetGroup' :: Text
datasetGroupArn = Text
a} :: DeleteDatasetGroup)

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

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

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

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

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

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

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

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

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