{-# 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.CloudTrail.DescribeQuery
-- 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 metadata about a query, including query run time in
-- milliseconds, number of events scanned and matched, and query status.
-- You must specify an ARN for @EventDataStore@, and a value for @QueryID@.
module Amazonka.CloudTrail.DescribeQuery
  ( -- * Creating a Request
    DescribeQuery (..),
    newDescribeQuery,

    -- * Request Lenses
    describeQuery_eventDataStore,
    describeQuery_queryId,

    -- * Destructuring the Response
    DescribeQueryResponse (..),
    newDescribeQueryResponse,

    -- * Response Lenses
    describeQueryResponse_deliveryS3Uri,
    describeQueryResponse_deliveryStatus,
    describeQueryResponse_errorMessage,
    describeQueryResponse_queryId,
    describeQueryResponse_queryStatistics,
    describeQueryResponse_queryStatus,
    describeQueryResponse_queryString,
    describeQueryResponse_httpStatus,
  )
where

import Amazonka.CloudTrail.Types
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

-- | /See:/ 'newDescribeQuery' smart constructor.
data DescribeQuery = DescribeQuery'
  { -- | The ARN (or the ID suffix of the ARN) of an event data store on which
    -- the specified query was run.
    DescribeQuery -> Maybe Text
eventDataStore :: Prelude.Maybe Prelude.Text,
    -- | The query ID.
    DescribeQuery -> Text
queryId :: Prelude.Text
  }
  deriving (DescribeQuery -> DescribeQuery -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeQuery -> DescribeQuery -> Bool
$c/= :: DescribeQuery -> DescribeQuery -> Bool
== :: DescribeQuery -> DescribeQuery -> Bool
$c== :: DescribeQuery -> DescribeQuery -> Bool
Prelude.Eq, ReadPrec [DescribeQuery]
ReadPrec DescribeQuery
Int -> ReadS DescribeQuery
ReadS [DescribeQuery]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeQuery]
$creadListPrec :: ReadPrec [DescribeQuery]
readPrec :: ReadPrec DescribeQuery
$creadPrec :: ReadPrec DescribeQuery
readList :: ReadS [DescribeQuery]
$creadList :: ReadS [DescribeQuery]
readsPrec :: Int -> ReadS DescribeQuery
$creadsPrec :: Int -> ReadS DescribeQuery
Prelude.Read, Int -> DescribeQuery -> ShowS
[DescribeQuery] -> ShowS
DescribeQuery -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeQuery] -> ShowS
$cshowList :: [DescribeQuery] -> ShowS
show :: DescribeQuery -> String
$cshow :: DescribeQuery -> String
showsPrec :: Int -> DescribeQuery -> ShowS
$cshowsPrec :: Int -> DescribeQuery -> ShowS
Prelude.Show, forall x. Rep DescribeQuery x -> DescribeQuery
forall x. DescribeQuery -> Rep DescribeQuery x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeQuery x -> DescribeQuery
$cfrom :: forall x. DescribeQuery -> Rep DescribeQuery x
Prelude.Generic)

-- |
-- Create a value of 'DescribeQuery' 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:
--
-- 'eventDataStore', 'describeQuery_eventDataStore' - The ARN (or the ID suffix of the ARN) of an event data store on which
-- the specified query was run.
--
-- 'queryId', 'describeQuery_queryId' - The query ID.
newDescribeQuery ::
  -- | 'queryId'
  Prelude.Text ->
  DescribeQuery
newDescribeQuery :: Text -> DescribeQuery
newDescribeQuery Text
pQueryId_ =
  DescribeQuery'
    { $sel:eventDataStore:DescribeQuery' :: Maybe Text
eventDataStore = forall a. Maybe a
Prelude.Nothing,
      $sel:queryId:DescribeQuery' :: Text
queryId = Text
pQueryId_
    }

-- | The ARN (or the ID suffix of the ARN) of an event data store on which
-- the specified query was run.
describeQuery_eventDataStore :: Lens.Lens' DescribeQuery (Prelude.Maybe Prelude.Text)
describeQuery_eventDataStore :: Lens' DescribeQuery (Maybe Text)
describeQuery_eventDataStore = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuery' {Maybe Text
eventDataStore :: Maybe Text
$sel:eventDataStore:DescribeQuery' :: DescribeQuery -> Maybe Text
eventDataStore} -> Maybe Text
eventDataStore) (\s :: DescribeQuery
s@DescribeQuery' {} Maybe Text
a -> DescribeQuery
s {$sel:eventDataStore:DescribeQuery' :: Maybe Text
eventDataStore = Maybe Text
a} :: DescribeQuery)

-- | The query ID.
describeQuery_queryId :: Lens.Lens' DescribeQuery Prelude.Text
describeQuery_queryId :: Lens' DescribeQuery Text
describeQuery_queryId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuery' {Text
queryId :: Text
$sel:queryId:DescribeQuery' :: DescribeQuery -> Text
queryId} -> Text
queryId) (\s :: DescribeQuery
s@DescribeQuery' {} Text
a -> DescribeQuery
s {$sel:queryId:DescribeQuery' :: Text
queryId = Text
a} :: DescribeQuery)

instance Core.AWSRequest DescribeQuery where
  type
    AWSResponse DescribeQuery =
      DescribeQueryResponse
  request :: (Service -> Service) -> DescribeQuery -> Request DescribeQuery
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 DescribeQuery
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeQuery)))
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
-> Maybe DeliveryStatus
-> Maybe Text
-> Maybe Text
-> Maybe QueryStatisticsForDescribeQuery
-> Maybe QueryStatus
-> Maybe Text
-> Int
-> DescribeQueryResponse
DescribeQueryResponse'
            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
"DeliveryS3Uri")
            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
"DeliveryStatus")
            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
"ErrorMessage")
            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
"QueryId")
            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
"QueryStatistics")
            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
"QueryStatus")
            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
"QueryString")
            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))
      )

instance Prelude.Hashable DescribeQuery where
  hashWithSalt :: Int -> DescribeQuery -> Int
hashWithSalt Int
_salt DescribeQuery' {Maybe Text
Text
queryId :: Text
eventDataStore :: Maybe Text
$sel:queryId:DescribeQuery' :: DescribeQuery -> Text
$sel:eventDataStore:DescribeQuery' :: DescribeQuery -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
eventDataStore
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
queryId

instance Prelude.NFData DescribeQuery where
  rnf :: DescribeQuery -> ()
rnf DescribeQuery' {Maybe Text
Text
queryId :: Text
eventDataStore :: Maybe Text
$sel:queryId:DescribeQuery' :: DescribeQuery -> Text
$sel:eventDataStore:DescribeQuery' :: DescribeQuery -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
eventDataStore
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
queryId

instance Data.ToHeaders DescribeQuery where
  toHeaders :: DescribeQuery -> 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
"com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101.DescribeQuery" ::
                          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 DescribeQuery where
  toJSON :: DescribeQuery -> Value
toJSON DescribeQuery' {Maybe Text
Text
queryId :: Text
eventDataStore :: Maybe Text
$sel:queryId:DescribeQuery' :: DescribeQuery -> Text
$sel:eventDataStore:DescribeQuery' :: DescribeQuery -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"EventDataStore" 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
eventDataStore,
            forall a. a -> Maybe a
Prelude.Just (Key
"QueryId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
queryId)
          ]
      )

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

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

-- | /See:/ 'newDescribeQueryResponse' smart constructor.
data DescribeQueryResponse = DescribeQueryResponse'
  { -- | The URI for the S3 bucket where CloudTrail delivered query results, if
    -- applicable.
    DescribeQueryResponse -> Maybe Text
deliveryS3Uri :: Prelude.Maybe Prelude.Text,
    -- | The delivery status.
    DescribeQueryResponse -> Maybe DeliveryStatus
deliveryStatus :: Prelude.Maybe DeliveryStatus,
    -- | The error message returned if a query failed.
    DescribeQueryResponse -> Maybe Text
errorMessage :: Prelude.Maybe Prelude.Text,
    -- | The ID of the query.
    DescribeQueryResponse -> Maybe Text
queryId :: Prelude.Maybe Prelude.Text,
    -- | Metadata about a query, including the number of events that were
    -- matched, the total number of events scanned, the query run time in
    -- milliseconds, and the query\'s creation time.
    DescribeQueryResponse -> Maybe QueryStatisticsForDescribeQuery
queryStatistics :: Prelude.Maybe QueryStatisticsForDescribeQuery,
    -- | The status of a query. Values for @QueryStatus@ include @QUEUED@,
    -- @RUNNING@, @FINISHED@, @FAILED@, @TIMED_OUT@, or @CANCELLED@
    DescribeQueryResponse -> Maybe QueryStatus
queryStatus :: Prelude.Maybe QueryStatus,
    -- | The SQL code of a query.
    DescribeQueryResponse -> Maybe Text
queryString :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeQueryResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeQueryResponse -> DescribeQueryResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeQueryResponse -> DescribeQueryResponse -> Bool
$c/= :: DescribeQueryResponse -> DescribeQueryResponse -> Bool
== :: DescribeQueryResponse -> DescribeQueryResponse -> Bool
$c== :: DescribeQueryResponse -> DescribeQueryResponse -> Bool
Prelude.Eq, ReadPrec [DescribeQueryResponse]
ReadPrec DescribeQueryResponse
Int -> ReadS DescribeQueryResponse
ReadS [DescribeQueryResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeQueryResponse]
$creadListPrec :: ReadPrec [DescribeQueryResponse]
readPrec :: ReadPrec DescribeQueryResponse
$creadPrec :: ReadPrec DescribeQueryResponse
readList :: ReadS [DescribeQueryResponse]
$creadList :: ReadS [DescribeQueryResponse]
readsPrec :: Int -> ReadS DescribeQueryResponse
$creadsPrec :: Int -> ReadS DescribeQueryResponse
Prelude.Read, Int -> DescribeQueryResponse -> ShowS
[DescribeQueryResponse] -> ShowS
DescribeQueryResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeQueryResponse] -> ShowS
$cshowList :: [DescribeQueryResponse] -> ShowS
show :: DescribeQueryResponse -> String
$cshow :: DescribeQueryResponse -> String
showsPrec :: Int -> DescribeQueryResponse -> ShowS
$cshowsPrec :: Int -> DescribeQueryResponse -> ShowS
Prelude.Show, forall x. Rep DescribeQueryResponse x -> DescribeQueryResponse
forall x. DescribeQueryResponse -> Rep DescribeQueryResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeQueryResponse x -> DescribeQueryResponse
$cfrom :: forall x. DescribeQueryResponse -> Rep DescribeQueryResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeQueryResponse' 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:
--
-- 'deliveryS3Uri', 'describeQueryResponse_deliveryS3Uri' - The URI for the S3 bucket where CloudTrail delivered query results, if
-- applicable.
--
-- 'deliveryStatus', 'describeQueryResponse_deliveryStatus' - The delivery status.
--
-- 'errorMessage', 'describeQueryResponse_errorMessage' - The error message returned if a query failed.
--
-- 'queryId', 'describeQueryResponse_queryId' - The ID of the query.
--
-- 'queryStatistics', 'describeQueryResponse_queryStatistics' - Metadata about a query, including the number of events that were
-- matched, the total number of events scanned, the query run time in
-- milliseconds, and the query\'s creation time.
--
-- 'queryStatus', 'describeQueryResponse_queryStatus' - The status of a query. Values for @QueryStatus@ include @QUEUED@,
-- @RUNNING@, @FINISHED@, @FAILED@, @TIMED_OUT@, or @CANCELLED@
--
-- 'queryString', 'describeQueryResponse_queryString' - The SQL code of a query.
--
-- 'httpStatus', 'describeQueryResponse_httpStatus' - The response's http status code.
newDescribeQueryResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeQueryResponse
newDescribeQueryResponse :: Int -> DescribeQueryResponse
newDescribeQueryResponse Int
pHttpStatus_ =
  DescribeQueryResponse'
    { $sel:deliveryS3Uri:DescribeQueryResponse' :: Maybe Text
deliveryS3Uri =
        forall a. Maybe a
Prelude.Nothing,
      $sel:deliveryStatus:DescribeQueryResponse' :: Maybe DeliveryStatus
deliveryStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:errorMessage:DescribeQueryResponse' :: Maybe Text
errorMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:queryId:DescribeQueryResponse' :: Maybe Text
queryId = forall a. Maybe a
Prelude.Nothing,
      $sel:queryStatistics:DescribeQueryResponse' :: Maybe QueryStatisticsForDescribeQuery
queryStatistics = forall a. Maybe a
Prelude.Nothing,
      $sel:queryStatus:DescribeQueryResponse' :: Maybe QueryStatus
queryStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:queryString:DescribeQueryResponse' :: Maybe Text
queryString = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeQueryResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The URI for the S3 bucket where CloudTrail delivered query results, if
-- applicable.
describeQueryResponse_deliveryS3Uri :: Lens.Lens' DescribeQueryResponse (Prelude.Maybe Prelude.Text)
describeQueryResponse_deliveryS3Uri :: Lens' DescribeQueryResponse (Maybe Text)
describeQueryResponse_deliveryS3Uri = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQueryResponse' {Maybe Text
deliveryS3Uri :: Maybe Text
$sel:deliveryS3Uri:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe Text
deliveryS3Uri} -> Maybe Text
deliveryS3Uri) (\s :: DescribeQueryResponse
s@DescribeQueryResponse' {} Maybe Text
a -> DescribeQueryResponse
s {$sel:deliveryS3Uri:DescribeQueryResponse' :: Maybe Text
deliveryS3Uri = Maybe Text
a} :: DescribeQueryResponse)

-- | The delivery status.
describeQueryResponse_deliveryStatus :: Lens.Lens' DescribeQueryResponse (Prelude.Maybe DeliveryStatus)
describeQueryResponse_deliveryStatus :: Lens' DescribeQueryResponse (Maybe DeliveryStatus)
describeQueryResponse_deliveryStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQueryResponse' {Maybe DeliveryStatus
deliveryStatus :: Maybe DeliveryStatus
$sel:deliveryStatus:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe DeliveryStatus
deliveryStatus} -> Maybe DeliveryStatus
deliveryStatus) (\s :: DescribeQueryResponse
s@DescribeQueryResponse' {} Maybe DeliveryStatus
a -> DescribeQueryResponse
s {$sel:deliveryStatus:DescribeQueryResponse' :: Maybe DeliveryStatus
deliveryStatus = Maybe DeliveryStatus
a} :: DescribeQueryResponse)

-- | The error message returned if a query failed.
describeQueryResponse_errorMessage :: Lens.Lens' DescribeQueryResponse (Prelude.Maybe Prelude.Text)
describeQueryResponse_errorMessage :: Lens' DescribeQueryResponse (Maybe Text)
describeQueryResponse_errorMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQueryResponse' {Maybe Text
errorMessage :: Maybe Text
$sel:errorMessage:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe Text
errorMessage} -> Maybe Text
errorMessage) (\s :: DescribeQueryResponse
s@DescribeQueryResponse' {} Maybe Text
a -> DescribeQueryResponse
s {$sel:errorMessage:DescribeQueryResponse' :: Maybe Text
errorMessage = Maybe Text
a} :: DescribeQueryResponse)

-- | The ID of the query.
describeQueryResponse_queryId :: Lens.Lens' DescribeQueryResponse (Prelude.Maybe Prelude.Text)
describeQueryResponse_queryId :: Lens' DescribeQueryResponse (Maybe Text)
describeQueryResponse_queryId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQueryResponse' {Maybe Text
queryId :: Maybe Text
$sel:queryId:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe Text
queryId} -> Maybe Text
queryId) (\s :: DescribeQueryResponse
s@DescribeQueryResponse' {} Maybe Text
a -> DescribeQueryResponse
s {$sel:queryId:DescribeQueryResponse' :: Maybe Text
queryId = Maybe Text
a} :: DescribeQueryResponse)

-- | Metadata about a query, including the number of events that were
-- matched, the total number of events scanned, the query run time in
-- milliseconds, and the query\'s creation time.
describeQueryResponse_queryStatistics :: Lens.Lens' DescribeQueryResponse (Prelude.Maybe QueryStatisticsForDescribeQuery)
describeQueryResponse_queryStatistics :: Lens' DescribeQueryResponse (Maybe QueryStatisticsForDescribeQuery)
describeQueryResponse_queryStatistics = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQueryResponse' {Maybe QueryStatisticsForDescribeQuery
queryStatistics :: Maybe QueryStatisticsForDescribeQuery
$sel:queryStatistics:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe QueryStatisticsForDescribeQuery
queryStatistics} -> Maybe QueryStatisticsForDescribeQuery
queryStatistics) (\s :: DescribeQueryResponse
s@DescribeQueryResponse' {} Maybe QueryStatisticsForDescribeQuery
a -> DescribeQueryResponse
s {$sel:queryStatistics:DescribeQueryResponse' :: Maybe QueryStatisticsForDescribeQuery
queryStatistics = Maybe QueryStatisticsForDescribeQuery
a} :: DescribeQueryResponse)

-- | The status of a query. Values for @QueryStatus@ include @QUEUED@,
-- @RUNNING@, @FINISHED@, @FAILED@, @TIMED_OUT@, or @CANCELLED@
describeQueryResponse_queryStatus :: Lens.Lens' DescribeQueryResponse (Prelude.Maybe QueryStatus)
describeQueryResponse_queryStatus :: Lens' DescribeQueryResponse (Maybe QueryStatus)
describeQueryResponse_queryStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQueryResponse' {Maybe QueryStatus
queryStatus :: Maybe QueryStatus
$sel:queryStatus:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe QueryStatus
queryStatus} -> Maybe QueryStatus
queryStatus) (\s :: DescribeQueryResponse
s@DescribeQueryResponse' {} Maybe QueryStatus
a -> DescribeQueryResponse
s {$sel:queryStatus:DescribeQueryResponse' :: Maybe QueryStatus
queryStatus = Maybe QueryStatus
a} :: DescribeQueryResponse)

-- | The SQL code of a query.
describeQueryResponse_queryString :: Lens.Lens' DescribeQueryResponse (Prelude.Maybe Prelude.Text)
describeQueryResponse_queryString :: Lens' DescribeQueryResponse (Maybe Text)
describeQueryResponse_queryString = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQueryResponse' {Maybe Text
queryString :: Maybe Text
$sel:queryString:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe Text
queryString} -> Maybe Text
queryString) (\s :: DescribeQueryResponse
s@DescribeQueryResponse' {} Maybe Text
a -> DescribeQueryResponse
s {$sel:queryString:DescribeQueryResponse' :: Maybe Text
queryString = Maybe Text
a} :: DescribeQueryResponse)

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

instance Prelude.NFData DescribeQueryResponse where
  rnf :: DescribeQueryResponse -> ()
rnf DescribeQueryResponse' {Int
Maybe Text
Maybe DeliveryStatus
Maybe QueryStatisticsForDescribeQuery
Maybe QueryStatus
httpStatus :: Int
queryString :: Maybe Text
queryStatus :: Maybe QueryStatus
queryStatistics :: Maybe QueryStatisticsForDescribeQuery
queryId :: Maybe Text
errorMessage :: Maybe Text
deliveryStatus :: Maybe DeliveryStatus
deliveryS3Uri :: Maybe Text
$sel:httpStatus:DescribeQueryResponse' :: DescribeQueryResponse -> Int
$sel:queryString:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe Text
$sel:queryStatus:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe QueryStatus
$sel:queryStatistics:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe QueryStatisticsForDescribeQuery
$sel:queryId:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe Text
$sel:errorMessage:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe Text
$sel:deliveryStatus:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe DeliveryStatus
$sel:deliveryS3Uri:DescribeQueryResponse' :: DescribeQueryResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
deliveryS3Uri
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeliveryStatus
deliveryStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
errorMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
queryId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe QueryStatisticsForDescribeQuery
queryStatistics
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe QueryStatus
queryStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
queryString
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus