packages feed

amazonka-timestream-write-2.0: gen/Amazonka/TimeStreamWrite/DeleteDatabase.hs

{-# 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.TimeStreamWrite.DeleteDatabase
-- 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 given Timestream database. /This is an irreversible operation.
-- After a database is deleted, the time series data from its tables cannot
-- be recovered./
--
-- All tables in the database must be deleted first, or a
-- ValidationException error will be thrown.
--
-- Due to the nature of distributed retries, the operation can return
-- either success or a ResourceNotFoundException. Clients should consider
-- them equivalent.
--
-- See
-- <https://docs.aws.amazon.com/timestream/latest/developerguide/code-samples.delete-db.html code sample>
-- for details.
module Amazonka.TimeStreamWrite.DeleteDatabase
  ( -- * Creating a Request
    DeleteDatabase (..),
    newDeleteDatabase,

    -- * Request Lenses
    deleteDatabase_databaseName,

    -- * Destructuring the Response
    DeleteDatabaseResponse (..),
    newDeleteDatabaseResponse,
  )
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.TimeStreamWrite.Types

-- | /See:/ 'newDeleteDatabase' smart constructor.
data DeleteDatabase = DeleteDatabase'
  { -- | The name of the Timestream database to be deleted.
    databaseName :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DeleteDatabase' 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:
--
-- 'databaseName', 'deleteDatabase_databaseName' - The name of the Timestream database to be deleted.
newDeleteDatabase ::
  -- | 'databaseName'
  Prelude.Text ->
  DeleteDatabase
newDeleteDatabase pDatabaseName_ =
  DeleteDatabase' {databaseName = pDatabaseName_}

-- | The name of the Timestream database to be deleted.
deleteDatabase_databaseName :: Lens.Lens' DeleteDatabase Prelude.Text
deleteDatabase_databaseName = Lens.lens (\DeleteDatabase' {databaseName} -> databaseName) (\s@DeleteDatabase' {} a -> s {databaseName = a} :: DeleteDatabase)

instance Core.AWSRequest DeleteDatabase where
  type
    AWSResponse DeleteDatabase =
      DeleteDatabaseResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveNull DeleteDatabaseResponse'

instance Prelude.Hashable DeleteDatabase where
  hashWithSalt _salt DeleteDatabase' {..} =
    _salt `Prelude.hashWithSalt` databaseName

instance Prelude.NFData DeleteDatabase where
  rnf DeleteDatabase' {..} = Prelude.rnf databaseName

instance Data.ToHeaders DeleteDatabase where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "Timestream_20181101.DeleteDatabase" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DeleteDatabase where
  toJSON DeleteDatabase' {..} =
    Data.object
      ( Prelude.catMaybes
          [Prelude.Just ("DatabaseName" Data..= databaseName)]
      )

instance Data.ToPath DeleteDatabase where
  toPath = Prelude.const "/"

instance Data.ToQuery DeleteDatabase where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newDeleteDatabaseResponse' smart constructor.
data DeleteDatabaseResponse = DeleteDatabaseResponse'
  {
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

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

instance Prelude.NFData DeleteDatabaseResponse where
  rnf _ = ()