{-# 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.Glue.ListDataQualityResults
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns all data quality execution results for your account.
module Amazonka.Glue.ListDataQualityResults
  ( -- * Creating a Request
    ListDataQualityResults (..),
    newListDataQualityResults,

    -- * Request Lenses
    listDataQualityResults_filter,
    listDataQualityResults_maxResults,
    listDataQualityResults_nextToken,

    -- * Destructuring the Response
    ListDataQualityResultsResponse (..),
    newListDataQualityResultsResponse,

    -- * Response Lenses
    listDataQualityResultsResponse_nextToken,
    listDataQualityResultsResponse_httpStatus,
    listDataQualityResultsResponse_results,
  )
where

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

-- | /See:/ 'newListDataQualityResults' smart constructor.
data ListDataQualityResults = ListDataQualityResults'
  { -- | The filter criteria.
    ListDataQualityResults -> Maybe DataQualityResultFilterCriteria
filter' :: Prelude.Maybe DataQualityResultFilterCriteria,
    -- | The maximum number of results to return.
    ListDataQualityResults -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | A paginated token to offset the results.
    ListDataQualityResults -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (ListDataQualityResults -> ListDataQualityResults -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListDataQualityResults -> ListDataQualityResults -> Bool
$c/= :: ListDataQualityResults -> ListDataQualityResults -> Bool
== :: ListDataQualityResults -> ListDataQualityResults -> Bool
$c== :: ListDataQualityResults -> ListDataQualityResults -> Bool
Prelude.Eq, ReadPrec [ListDataQualityResults]
ReadPrec ListDataQualityResults
Int -> ReadS ListDataQualityResults
ReadS [ListDataQualityResults]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListDataQualityResults]
$creadListPrec :: ReadPrec [ListDataQualityResults]
readPrec :: ReadPrec ListDataQualityResults
$creadPrec :: ReadPrec ListDataQualityResults
readList :: ReadS [ListDataQualityResults]
$creadList :: ReadS [ListDataQualityResults]
readsPrec :: Int -> ReadS ListDataQualityResults
$creadsPrec :: Int -> ReadS ListDataQualityResults
Prelude.Read, Int -> ListDataQualityResults -> ShowS
[ListDataQualityResults] -> ShowS
ListDataQualityResults -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListDataQualityResults] -> ShowS
$cshowList :: [ListDataQualityResults] -> ShowS
show :: ListDataQualityResults -> String
$cshow :: ListDataQualityResults -> String
showsPrec :: Int -> ListDataQualityResults -> ShowS
$cshowsPrec :: Int -> ListDataQualityResults -> ShowS
Prelude.Show, forall x. Rep ListDataQualityResults x -> ListDataQualityResults
forall x. ListDataQualityResults -> Rep ListDataQualityResults x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListDataQualityResults x -> ListDataQualityResults
$cfrom :: forall x. ListDataQualityResults -> Rep ListDataQualityResults x
Prelude.Generic)

-- |
-- Create a value of 'ListDataQualityResults' 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:
--
-- 'filter'', 'listDataQualityResults_filter' - The filter criteria.
--
-- 'maxResults', 'listDataQualityResults_maxResults' - The maximum number of results to return.
--
-- 'nextToken', 'listDataQualityResults_nextToken' - A paginated token to offset the results.
newListDataQualityResults ::
  ListDataQualityResults
newListDataQualityResults :: ListDataQualityResults
newListDataQualityResults =
  ListDataQualityResults'
    { $sel:filter':ListDataQualityResults' :: Maybe DataQualityResultFilterCriteria
filter' = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:ListDataQualityResults' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListDataQualityResults' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | The filter criteria.
listDataQualityResults_filter :: Lens.Lens' ListDataQualityResults (Prelude.Maybe DataQualityResultFilterCriteria)
listDataQualityResults_filter :: Lens'
  ListDataQualityResults (Maybe DataQualityResultFilterCriteria)
listDataQualityResults_filter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDataQualityResults' {Maybe DataQualityResultFilterCriteria
filter' :: Maybe DataQualityResultFilterCriteria
$sel:filter':ListDataQualityResults' :: ListDataQualityResults -> Maybe DataQualityResultFilterCriteria
filter'} -> Maybe DataQualityResultFilterCriteria
filter') (\s :: ListDataQualityResults
s@ListDataQualityResults' {} Maybe DataQualityResultFilterCriteria
a -> ListDataQualityResults
s {$sel:filter':ListDataQualityResults' :: Maybe DataQualityResultFilterCriteria
filter' = Maybe DataQualityResultFilterCriteria
a} :: ListDataQualityResults)

-- | The maximum number of results to return.
listDataQualityResults_maxResults :: Lens.Lens' ListDataQualityResults (Prelude.Maybe Prelude.Natural)
listDataQualityResults_maxResults :: Lens' ListDataQualityResults (Maybe Natural)
listDataQualityResults_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDataQualityResults' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListDataQualityResults' :: ListDataQualityResults -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListDataQualityResults
s@ListDataQualityResults' {} Maybe Natural
a -> ListDataQualityResults
s {$sel:maxResults:ListDataQualityResults' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListDataQualityResults)

-- | A paginated token to offset the results.
listDataQualityResults_nextToken :: Lens.Lens' ListDataQualityResults (Prelude.Maybe Prelude.Text)
listDataQualityResults_nextToken :: Lens' ListDataQualityResults (Maybe Text)
listDataQualityResults_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDataQualityResults' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListDataQualityResults' :: ListDataQualityResults -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListDataQualityResults
s@ListDataQualityResults' {} Maybe Text
a -> ListDataQualityResults
s {$sel:nextToken:ListDataQualityResults' :: Maybe Text
nextToken = Maybe Text
a} :: ListDataQualityResults)

instance Core.AWSRequest ListDataQualityResults where
  type
    AWSResponse ListDataQualityResults =
      ListDataQualityResultsResponse
  request :: (Service -> Service)
-> ListDataQualityResults -> Request ListDataQualityResults
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 ListDataQualityResults
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListDataQualityResults)))
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
-> [DataQualityResultDescription]
-> ListDataQualityResultsResponse
ListDataQualityResultsResponse'
            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
"NextToken")
            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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Results" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable ListDataQualityResults where
  hashWithSalt :: Int -> ListDataQualityResults -> Int
hashWithSalt Int
_salt ListDataQualityResults' {Maybe Natural
Maybe Text
Maybe DataQualityResultFilterCriteria
nextToken :: Maybe Text
maxResults :: Maybe Natural
filter' :: Maybe DataQualityResultFilterCriteria
$sel:nextToken:ListDataQualityResults' :: ListDataQualityResults -> Maybe Text
$sel:maxResults:ListDataQualityResults' :: ListDataQualityResults -> Maybe Natural
$sel:filter':ListDataQualityResults' :: ListDataQualityResults -> Maybe DataQualityResultFilterCriteria
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataQualityResultFilterCriteria
filter'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken

instance Prelude.NFData ListDataQualityResults where
  rnf :: ListDataQualityResults -> ()
rnf ListDataQualityResults' {Maybe Natural
Maybe Text
Maybe DataQualityResultFilterCriteria
nextToken :: Maybe Text
maxResults :: Maybe Natural
filter' :: Maybe DataQualityResultFilterCriteria
$sel:nextToken:ListDataQualityResults' :: ListDataQualityResults -> Maybe Text
$sel:maxResults:ListDataQualityResults' :: ListDataQualityResults -> Maybe Natural
$sel:filter':ListDataQualityResults' :: ListDataQualityResults -> Maybe DataQualityResultFilterCriteria
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DataQualityResultFilterCriteria
filter'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken

instance Data.ToHeaders ListDataQualityResults where
  toHeaders :: ListDataQualityResults -> 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
"AWSGlue.ListDataQualityResults" ::
                          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 ListDataQualityResults where
  toJSON :: ListDataQualityResults -> Value
toJSON ListDataQualityResults' {Maybe Natural
Maybe Text
Maybe DataQualityResultFilterCriteria
nextToken :: Maybe Text
maxResults :: Maybe Natural
filter' :: Maybe DataQualityResultFilterCriteria
$sel:nextToken:ListDataQualityResults' :: ListDataQualityResults -> Maybe Text
$sel:maxResults:ListDataQualityResults' :: ListDataQualityResults -> Maybe Natural
$sel:filter':ListDataQualityResults' :: ListDataQualityResults -> Maybe DataQualityResultFilterCriteria
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Filter" 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 DataQualityResultFilterCriteria
filter',
            (Key
"MaxResults" 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 Natural
maxResults,
            (Key
"NextToken" 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
nextToken
          ]
      )

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

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

-- | /See:/ 'newListDataQualityResultsResponse' smart constructor.
data ListDataQualityResultsResponse = ListDataQualityResultsResponse'
  { -- | A pagination token, if more results are available.
    ListDataQualityResultsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListDataQualityResultsResponse -> Int
httpStatus :: Prelude.Int,
    -- | A list of @DataQualityResultDescription@ objects.
    ListDataQualityResultsResponse -> [DataQualityResultDescription]
results :: [DataQualityResultDescription]
  }
  deriving (ListDataQualityResultsResponse
-> ListDataQualityResultsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListDataQualityResultsResponse
-> ListDataQualityResultsResponse -> Bool
$c/= :: ListDataQualityResultsResponse
-> ListDataQualityResultsResponse -> Bool
== :: ListDataQualityResultsResponse
-> ListDataQualityResultsResponse -> Bool
$c== :: ListDataQualityResultsResponse
-> ListDataQualityResultsResponse -> Bool
Prelude.Eq, ReadPrec [ListDataQualityResultsResponse]
ReadPrec ListDataQualityResultsResponse
Int -> ReadS ListDataQualityResultsResponse
ReadS [ListDataQualityResultsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListDataQualityResultsResponse]
$creadListPrec :: ReadPrec [ListDataQualityResultsResponse]
readPrec :: ReadPrec ListDataQualityResultsResponse
$creadPrec :: ReadPrec ListDataQualityResultsResponse
readList :: ReadS [ListDataQualityResultsResponse]
$creadList :: ReadS [ListDataQualityResultsResponse]
readsPrec :: Int -> ReadS ListDataQualityResultsResponse
$creadsPrec :: Int -> ReadS ListDataQualityResultsResponse
Prelude.Read, Int -> ListDataQualityResultsResponse -> ShowS
[ListDataQualityResultsResponse] -> ShowS
ListDataQualityResultsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListDataQualityResultsResponse] -> ShowS
$cshowList :: [ListDataQualityResultsResponse] -> ShowS
show :: ListDataQualityResultsResponse -> String
$cshow :: ListDataQualityResultsResponse -> String
showsPrec :: Int -> ListDataQualityResultsResponse -> ShowS
$cshowsPrec :: Int -> ListDataQualityResultsResponse -> ShowS
Prelude.Show, forall x.
Rep ListDataQualityResultsResponse x
-> ListDataQualityResultsResponse
forall x.
ListDataQualityResultsResponse
-> Rep ListDataQualityResultsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListDataQualityResultsResponse x
-> ListDataQualityResultsResponse
$cfrom :: forall x.
ListDataQualityResultsResponse
-> Rep ListDataQualityResultsResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListDataQualityResultsResponse' 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:
--
-- 'nextToken', 'listDataQualityResultsResponse_nextToken' - A pagination token, if more results are available.
--
-- 'httpStatus', 'listDataQualityResultsResponse_httpStatus' - The response's http status code.
--
-- 'results', 'listDataQualityResultsResponse_results' - A list of @DataQualityResultDescription@ objects.
newListDataQualityResultsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListDataQualityResultsResponse
newListDataQualityResultsResponse :: Int -> ListDataQualityResultsResponse
newListDataQualityResultsResponse Int
pHttpStatus_ =
  ListDataQualityResultsResponse'
    { $sel:nextToken:ListDataQualityResultsResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListDataQualityResultsResponse' :: Int
httpStatus = Int
pHttpStatus_,
      $sel:results:ListDataQualityResultsResponse' :: [DataQualityResultDescription]
results = forall a. Monoid a => a
Prelude.mempty
    }

-- | A pagination token, if more results are available.
listDataQualityResultsResponse_nextToken :: Lens.Lens' ListDataQualityResultsResponse (Prelude.Maybe Prelude.Text)
listDataQualityResultsResponse_nextToken :: Lens' ListDataQualityResultsResponse (Maybe Text)
listDataQualityResultsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDataQualityResultsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListDataQualityResultsResponse' :: ListDataQualityResultsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListDataQualityResultsResponse
s@ListDataQualityResultsResponse' {} Maybe Text
a -> ListDataQualityResultsResponse
s {$sel:nextToken:ListDataQualityResultsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListDataQualityResultsResponse)

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

-- | A list of @DataQualityResultDescription@ objects.
listDataQualityResultsResponse_results :: Lens.Lens' ListDataQualityResultsResponse [DataQualityResultDescription]
listDataQualityResultsResponse_results :: Lens' ListDataQualityResultsResponse [DataQualityResultDescription]
listDataQualityResultsResponse_results = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDataQualityResultsResponse' {[DataQualityResultDescription]
results :: [DataQualityResultDescription]
$sel:results:ListDataQualityResultsResponse' :: ListDataQualityResultsResponse -> [DataQualityResultDescription]
results} -> [DataQualityResultDescription]
results) (\s :: ListDataQualityResultsResponse
s@ListDataQualityResultsResponse' {} [DataQualityResultDescription]
a -> ListDataQualityResultsResponse
s {$sel:results:ListDataQualityResultsResponse' :: [DataQualityResultDescription]
results = [DataQualityResultDescription]
a} :: ListDataQualityResultsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance
  Prelude.NFData
    ListDataQualityResultsResponse
  where
  rnf :: ListDataQualityResultsResponse -> ()
rnf ListDataQualityResultsResponse' {Int
[DataQualityResultDescription]
Maybe Text
results :: [DataQualityResultDescription]
httpStatus :: Int
nextToken :: Maybe Text
$sel:results:ListDataQualityResultsResponse' :: ListDataQualityResultsResponse -> [DataQualityResultDescription]
$sel:httpStatus:ListDataQualityResultsResponse' :: ListDataQualityResultsResponse -> Int
$sel:nextToken:ListDataQualityResultsResponse' :: ListDataQualityResultsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [DataQualityResultDescription]
results