{-# 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.LakeFormation.DeleteDataCellsFilter
-- 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 data cell filter.
module Amazonka.LakeFormation.DeleteDataCellsFilter
  ( -- * Creating a Request
    DeleteDataCellsFilter (..),
    newDeleteDataCellsFilter,

    -- * Request Lenses
    deleteDataCellsFilter_databaseName,
    deleteDataCellsFilter_name,
    deleteDataCellsFilter_tableCatalogId,
    deleteDataCellsFilter_tableName,

    -- * Destructuring the Response
    DeleteDataCellsFilterResponse (..),
    newDeleteDataCellsFilterResponse,

    -- * Response Lenses
    deleteDataCellsFilterResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDeleteDataCellsFilter' smart constructor.
data DeleteDataCellsFilter = DeleteDataCellsFilter'
  { -- | A database in the Glue Data Catalog.
    DeleteDataCellsFilter -> Maybe Text
databaseName :: Prelude.Maybe Prelude.Text,
    -- | The name given by the user to the data filter cell.
    DeleteDataCellsFilter -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The ID of the catalog to which the table belongs.
    DeleteDataCellsFilter -> Maybe Text
tableCatalogId :: Prelude.Maybe Prelude.Text,
    -- | A table in the database.
    DeleteDataCellsFilter -> Maybe Text
tableName :: Prelude.Maybe Prelude.Text
  }
  deriving (DeleteDataCellsFilter -> DeleteDataCellsFilter -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteDataCellsFilter -> DeleteDataCellsFilter -> Bool
$c/= :: DeleteDataCellsFilter -> DeleteDataCellsFilter -> Bool
== :: DeleteDataCellsFilter -> DeleteDataCellsFilter -> Bool
$c== :: DeleteDataCellsFilter -> DeleteDataCellsFilter -> Bool
Prelude.Eq, ReadPrec [DeleteDataCellsFilter]
ReadPrec DeleteDataCellsFilter
Int -> ReadS DeleteDataCellsFilter
ReadS [DeleteDataCellsFilter]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteDataCellsFilter]
$creadListPrec :: ReadPrec [DeleteDataCellsFilter]
readPrec :: ReadPrec DeleteDataCellsFilter
$creadPrec :: ReadPrec DeleteDataCellsFilter
readList :: ReadS [DeleteDataCellsFilter]
$creadList :: ReadS [DeleteDataCellsFilter]
readsPrec :: Int -> ReadS DeleteDataCellsFilter
$creadsPrec :: Int -> ReadS DeleteDataCellsFilter
Prelude.Read, Int -> DeleteDataCellsFilter -> ShowS
[DeleteDataCellsFilter] -> ShowS
DeleteDataCellsFilter -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteDataCellsFilter] -> ShowS
$cshowList :: [DeleteDataCellsFilter] -> ShowS
show :: DeleteDataCellsFilter -> String
$cshow :: DeleteDataCellsFilter -> String
showsPrec :: Int -> DeleteDataCellsFilter -> ShowS
$cshowsPrec :: Int -> DeleteDataCellsFilter -> ShowS
Prelude.Show, forall x. Rep DeleteDataCellsFilter x -> DeleteDataCellsFilter
forall x. DeleteDataCellsFilter -> Rep DeleteDataCellsFilter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteDataCellsFilter x -> DeleteDataCellsFilter
$cfrom :: forall x. DeleteDataCellsFilter -> Rep DeleteDataCellsFilter x
Prelude.Generic)

-- |
-- Create a value of 'DeleteDataCellsFilter' 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', 'deleteDataCellsFilter_databaseName' - A database in the Glue Data Catalog.
--
-- 'name', 'deleteDataCellsFilter_name' - The name given by the user to the data filter cell.
--
-- 'tableCatalogId', 'deleteDataCellsFilter_tableCatalogId' - The ID of the catalog to which the table belongs.
--
-- 'tableName', 'deleteDataCellsFilter_tableName' - A table in the database.
newDeleteDataCellsFilter ::
  DeleteDataCellsFilter
newDeleteDataCellsFilter :: DeleteDataCellsFilter
newDeleteDataCellsFilter =
  DeleteDataCellsFilter'
    { $sel:databaseName:DeleteDataCellsFilter' :: Maybe Text
databaseName =
        forall a. Maybe a
Prelude.Nothing,
      $sel:name:DeleteDataCellsFilter' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:tableCatalogId:DeleteDataCellsFilter' :: Maybe Text
tableCatalogId = forall a. Maybe a
Prelude.Nothing,
      $sel:tableName:DeleteDataCellsFilter' :: Maybe Text
tableName = forall a. Maybe a
Prelude.Nothing
    }

-- | A database in the Glue Data Catalog.
deleteDataCellsFilter_databaseName :: Lens.Lens' DeleteDataCellsFilter (Prelude.Maybe Prelude.Text)
deleteDataCellsFilter_databaseName :: Lens' DeleteDataCellsFilter (Maybe Text)
deleteDataCellsFilter_databaseName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteDataCellsFilter' {Maybe Text
databaseName :: Maybe Text
$sel:databaseName:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
databaseName} -> Maybe Text
databaseName) (\s :: DeleteDataCellsFilter
s@DeleteDataCellsFilter' {} Maybe Text
a -> DeleteDataCellsFilter
s {$sel:databaseName:DeleteDataCellsFilter' :: Maybe Text
databaseName = Maybe Text
a} :: DeleteDataCellsFilter)

-- | The name given by the user to the data filter cell.
deleteDataCellsFilter_name :: Lens.Lens' DeleteDataCellsFilter (Prelude.Maybe Prelude.Text)
deleteDataCellsFilter_name :: Lens' DeleteDataCellsFilter (Maybe Text)
deleteDataCellsFilter_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteDataCellsFilter' {Maybe Text
name :: Maybe Text
$sel:name:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
name} -> Maybe Text
name) (\s :: DeleteDataCellsFilter
s@DeleteDataCellsFilter' {} Maybe Text
a -> DeleteDataCellsFilter
s {$sel:name:DeleteDataCellsFilter' :: Maybe Text
name = Maybe Text
a} :: DeleteDataCellsFilter)

-- | The ID of the catalog to which the table belongs.
deleteDataCellsFilter_tableCatalogId :: Lens.Lens' DeleteDataCellsFilter (Prelude.Maybe Prelude.Text)
deleteDataCellsFilter_tableCatalogId :: Lens' DeleteDataCellsFilter (Maybe Text)
deleteDataCellsFilter_tableCatalogId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteDataCellsFilter' {Maybe Text
tableCatalogId :: Maybe Text
$sel:tableCatalogId:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
tableCatalogId} -> Maybe Text
tableCatalogId) (\s :: DeleteDataCellsFilter
s@DeleteDataCellsFilter' {} Maybe Text
a -> DeleteDataCellsFilter
s {$sel:tableCatalogId:DeleteDataCellsFilter' :: Maybe Text
tableCatalogId = Maybe Text
a} :: DeleteDataCellsFilter)

-- | A table in the database.
deleteDataCellsFilter_tableName :: Lens.Lens' DeleteDataCellsFilter (Prelude.Maybe Prelude.Text)
deleteDataCellsFilter_tableName :: Lens' DeleteDataCellsFilter (Maybe Text)
deleteDataCellsFilter_tableName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteDataCellsFilter' {Maybe Text
tableName :: Maybe Text
$sel:tableName:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
tableName} -> Maybe Text
tableName) (\s :: DeleteDataCellsFilter
s@DeleteDataCellsFilter' {} Maybe Text
a -> DeleteDataCellsFilter
s {$sel:tableName:DeleteDataCellsFilter' :: Maybe Text
tableName = Maybe Text
a} :: DeleteDataCellsFilter)

instance Core.AWSRequest DeleteDataCellsFilter where
  type
    AWSResponse DeleteDataCellsFilter =
      DeleteDataCellsFilterResponse
  request :: (Service -> Service)
-> DeleteDataCellsFilter -> Request DeleteDataCellsFilter
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 DeleteDataCellsFilter
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteDataCellsFilter)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> DeleteDataCellsFilterResponse
DeleteDataCellsFilterResponse'
            forall (f :: * -> *) a b. Functor 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 DeleteDataCellsFilter where
  hashWithSalt :: Int -> DeleteDataCellsFilter -> Int
hashWithSalt Int
_salt DeleteDataCellsFilter' {Maybe Text
tableName :: Maybe Text
tableCatalogId :: Maybe Text
name :: Maybe Text
databaseName :: Maybe Text
$sel:tableName:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
$sel:tableCatalogId:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
$sel:name:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
$sel:databaseName:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
databaseName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
tableCatalogId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
tableName

instance Prelude.NFData DeleteDataCellsFilter where
  rnf :: DeleteDataCellsFilter -> ()
rnf DeleteDataCellsFilter' {Maybe Text
tableName :: Maybe Text
tableCatalogId :: Maybe Text
name :: Maybe Text
databaseName :: Maybe Text
$sel:tableName:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
$sel:tableCatalogId:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
$sel:name:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
$sel:databaseName:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
databaseName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
tableCatalogId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
tableName

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

instance Data.ToJSON DeleteDataCellsFilter where
  toJSON :: DeleteDataCellsFilter -> Value
toJSON DeleteDataCellsFilter' {Maybe Text
tableName :: Maybe Text
tableCatalogId :: Maybe Text
name :: Maybe Text
databaseName :: Maybe Text
$sel:tableName:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
$sel:tableCatalogId:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
$sel:name:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
$sel:databaseName:DeleteDataCellsFilter' :: DeleteDataCellsFilter -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"DatabaseName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
databaseName,
            (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
name,
            (Key
"TableCatalogId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
tableCatalogId,
            (Key
"TableName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
tableName
          ]
      )

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

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

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

-- |
-- Create a value of 'DeleteDataCellsFilterResponse' 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:
--
-- 'httpStatus', 'deleteDataCellsFilterResponse_httpStatus' - The response's http status code.
newDeleteDataCellsFilterResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteDataCellsFilterResponse
newDeleteDataCellsFilterResponse :: Int -> DeleteDataCellsFilterResponse
newDeleteDataCellsFilterResponse Int
pHttpStatus_ =
  DeleteDataCellsFilterResponse'
    { $sel:httpStatus:DeleteDataCellsFilterResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

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

instance Prelude.NFData DeleteDataCellsFilterResponse where
  rnf :: DeleteDataCellsFilterResponse -> ()
rnf DeleteDataCellsFilterResponse' {Int
httpStatus :: Int
$sel:httpStatus:DeleteDataCellsFilterResponse' :: DeleteDataCellsFilterResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus