{-# 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.RedshiftServerLess.GetTableRestoreStatus
-- 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 information about a @TableRestoreStatus@ object.
module Amazonka.RedshiftServerLess.GetTableRestoreStatus
  ( -- * Creating a Request
    GetTableRestoreStatus (..),
    newGetTableRestoreStatus,

    -- * Request Lenses
    getTableRestoreStatus_tableRestoreRequestId,

    -- * Destructuring the Response
    GetTableRestoreStatusResponse (..),
    newGetTableRestoreStatusResponse,

    -- * Response Lenses
    getTableRestoreStatusResponse_tableRestoreStatus,
    getTableRestoreStatusResponse_httpStatus,
  )
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 Amazonka.RedshiftServerLess.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newGetTableRestoreStatus' smart constructor.
data GetTableRestoreStatus = GetTableRestoreStatus'
  { -- | The ID of the @RestoreTableFromSnapshot@ request to return status for.
    GetTableRestoreStatus -> Text
tableRestoreRequestId :: Prelude.Text
  }
  deriving (GetTableRestoreStatus -> GetTableRestoreStatus -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetTableRestoreStatus -> GetTableRestoreStatus -> Bool
$c/= :: GetTableRestoreStatus -> GetTableRestoreStatus -> Bool
== :: GetTableRestoreStatus -> GetTableRestoreStatus -> Bool
$c== :: GetTableRestoreStatus -> GetTableRestoreStatus -> Bool
Prelude.Eq, ReadPrec [GetTableRestoreStatus]
ReadPrec GetTableRestoreStatus
Int -> ReadS GetTableRestoreStatus
ReadS [GetTableRestoreStatus]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetTableRestoreStatus]
$creadListPrec :: ReadPrec [GetTableRestoreStatus]
readPrec :: ReadPrec GetTableRestoreStatus
$creadPrec :: ReadPrec GetTableRestoreStatus
readList :: ReadS [GetTableRestoreStatus]
$creadList :: ReadS [GetTableRestoreStatus]
readsPrec :: Int -> ReadS GetTableRestoreStatus
$creadsPrec :: Int -> ReadS GetTableRestoreStatus
Prelude.Read, Int -> GetTableRestoreStatus -> ShowS
[GetTableRestoreStatus] -> ShowS
GetTableRestoreStatus -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetTableRestoreStatus] -> ShowS
$cshowList :: [GetTableRestoreStatus] -> ShowS
show :: GetTableRestoreStatus -> String
$cshow :: GetTableRestoreStatus -> String
showsPrec :: Int -> GetTableRestoreStatus -> ShowS
$cshowsPrec :: Int -> GetTableRestoreStatus -> ShowS
Prelude.Show, forall x. Rep GetTableRestoreStatus x -> GetTableRestoreStatus
forall x. GetTableRestoreStatus -> Rep GetTableRestoreStatus x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetTableRestoreStatus x -> GetTableRestoreStatus
$cfrom :: forall x. GetTableRestoreStatus -> Rep GetTableRestoreStatus x
Prelude.Generic)

-- |
-- Create a value of 'GetTableRestoreStatus' 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:
--
-- 'tableRestoreRequestId', 'getTableRestoreStatus_tableRestoreRequestId' - The ID of the @RestoreTableFromSnapshot@ request to return status for.
newGetTableRestoreStatus ::
  -- | 'tableRestoreRequestId'
  Prelude.Text ->
  GetTableRestoreStatus
newGetTableRestoreStatus :: Text -> GetTableRestoreStatus
newGetTableRestoreStatus Text
pTableRestoreRequestId_ =
  GetTableRestoreStatus'
    { $sel:tableRestoreRequestId:GetTableRestoreStatus' :: Text
tableRestoreRequestId =
        Text
pTableRestoreRequestId_
    }

-- | The ID of the @RestoreTableFromSnapshot@ request to return status for.
getTableRestoreStatus_tableRestoreRequestId :: Lens.Lens' GetTableRestoreStatus Prelude.Text
getTableRestoreStatus_tableRestoreRequestId :: Lens' GetTableRestoreStatus Text
getTableRestoreStatus_tableRestoreRequestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTableRestoreStatus' {Text
tableRestoreRequestId :: Text
$sel:tableRestoreRequestId:GetTableRestoreStatus' :: GetTableRestoreStatus -> Text
tableRestoreRequestId} -> Text
tableRestoreRequestId) (\s :: GetTableRestoreStatus
s@GetTableRestoreStatus' {} Text
a -> GetTableRestoreStatus
s {$sel:tableRestoreRequestId:GetTableRestoreStatus' :: Text
tableRestoreRequestId = Text
a} :: GetTableRestoreStatus)

instance Core.AWSRequest GetTableRestoreStatus where
  type
    AWSResponse GetTableRestoreStatus =
      GetTableRestoreStatusResponse
  request :: (Service -> Service)
-> GetTableRestoreStatus -> Request GetTableRestoreStatus
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 GetTableRestoreStatus
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetTableRestoreStatus)))
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 TableRestoreStatus -> Int -> GetTableRestoreStatusResponse
GetTableRestoreStatusResponse'
            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
"tableRestoreStatus")
            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 GetTableRestoreStatus where
  hashWithSalt :: Int -> GetTableRestoreStatus -> Int
hashWithSalt Int
_salt GetTableRestoreStatus' {Text
tableRestoreRequestId :: Text
$sel:tableRestoreRequestId:GetTableRestoreStatus' :: GetTableRestoreStatus -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
tableRestoreRequestId

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

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

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

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

-- | /See:/ 'newGetTableRestoreStatusResponse' smart constructor.
data GetTableRestoreStatusResponse = GetTableRestoreStatusResponse'
  { -- | The returned @TableRestoreStatus@ object that contains information about
    -- the status of your @RestoreTableFromSnapshot@ request.
    GetTableRestoreStatusResponse -> Maybe TableRestoreStatus
tableRestoreStatus :: Prelude.Maybe TableRestoreStatus,
    -- | The response's http status code.
    GetTableRestoreStatusResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetTableRestoreStatusResponse
-> GetTableRestoreStatusResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetTableRestoreStatusResponse
-> GetTableRestoreStatusResponse -> Bool
$c/= :: GetTableRestoreStatusResponse
-> GetTableRestoreStatusResponse -> Bool
== :: GetTableRestoreStatusResponse
-> GetTableRestoreStatusResponse -> Bool
$c== :: GetTableRestoreStatusResponse
-> GetTableRestoreStatusResponse -> Bool
Prelude.Eq, ReadPrec [GetTableRestoreStatusResponse]
ReadPrec GetTableRestoreStatusResponse
Int -> ReadS GetTableRestoreStatusResponse
ReadS [GetTableRestoreStatusResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetTableRestoreStatusResponse]
$creadListPrec :: ReadPrec [GetTableRestoreStatusResponse]
readPrec :: ReadPrec GetTableRestoreStatusResponse
$creadPrec :: ReadPrec GetTableRestoreStatusResponse
readList :: ReadS [GetTableRestoreStatusResponse]
$creadList :: ReadS [GetTableRestoreStatusResponse]
readsPrec :: Int -> ReadS GetTableRestoreStatusResponse
$creadsPrec :: Int -> ReadS GetTableRestoreStatusResponse
Prelude.Read, Int -> GetTableRestoreStatusResponse -> ShowS
[GetTableRestoreStatusResponse] -> ShowS
GetTableRestoreStatusResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetTableRestoreStatusResponse] -> ShowS
$cshowList :: [GetTableRestoreStatusResponse] -> ShowS
show :: GetTableRestoreStatusResponse -> String
$cshow :: GetTableRestoreStatusResponse -> String
showsPrec :: Int -> GetTableRestoreStatusResponse -> ShowS
$cshowsPrec :: Int -> GetTableRestoreStatusResponse -> ShowS
Prelude.Show, forall x.
Rep GetTableRestoreStatusResponse x
-> GetTableRestoreStatusResponse
forall x.
GetTableRestoreStatusResponse
-> Rep GetTableRestoreStatusResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetTableRestoreStatusResponse x
-> GetTableRestoreStatusResponse
$cfrom :: forall x.
GetTableRestoreStatusResponse
-> Rep GetTableRestoreStatusResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetTableRestoreStatusResponse' 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:
--
-- 'tableRestoreStatus', 'getTableRestoreStatusResponse_tableRestoreStatus' - The returned @TableRestoreStatus@ object that contains information about
-- the status of your @RestoreTableFromSnapshot@ request.
--
-- 'httpStatus', 'getTableRestoreStatusResponse_httpStatus' - The response's http status code.
newGetTableRestoreStatusResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetTableRestoreStatusResponse
newGetTableRestoreStatusResponse :: Int -> GetTableRestoreStatusResponse
newGetTableRestoreStatusResponse Int
pHttpStatus_ =
  GetTableRestoreStatusResponse'
    { $sel:tableRestoreStatus:GetTableRestoreStatusResponse' :: Maybe TableRestoreStatus
tableRestoreStatus =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetTableRestoreStatusResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The returned @TableRestoreStatus@ object that contains information about
-- the status of your @RestoreTableFromSnapshot@ request.
getTableRestoreStatusResponse_tableRestoreStatus :: Lens.Lens' GetTableRestoreStatusResponse (Prelude.Maybe TableRestoreStatus)
getTableRestoreStatusResponse_tableRestoreStatus :: Lens' GetTableRestoreStatusResponse (Maybe TableRestoreStatus)
getTableRestoreStatusResponse_tableRestoreStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTableRestoreStatusResponse' {Maybe TableRestoreStatus
tableRestoreStatus :: Maybe TableRestoreStatus
$sel:tableRestoreStatus:GetTableRestoreStatusResponse' :: GetTableRestoreStatusResponse -> Maybe TableRestoreStatus
tableRestoreStatus} -> Maybe TableRestoreStatus
tableRestoreStatus) (\s :: GetTableRestoreStatusResponse
s@GetTableRestoreStatusResponse' {} Maybe TableRestoreStatus
a -> GetTableRestoreStatusResponse
s {$sel:tableRestoreStatus:GetTableRestoreStatusResponse' :: Maybe TableRestoreStatus
tableRestoreStatus = Maybe TableRestoreStatus
a} :: GetTableRestoreStatusResponse)

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

instance Prelude.NFData GetTableRestoreStatusResponse where
  rnf :: GetTableRestoreStatusResponse -> ()
rnf GetTableRestoreStatusResponse' {Int
Maybe TableRestoreStatus
httpStatus :: Int
tableRestoreStatus :: Maybe TableRestoreStatus
$sel:httpStatus:GetTableRestoreStatusResponse' :: GetTableRestoreStatusResponse -> Int
$sel:tableRestoreStatus:GetTableRestoreStatusResponse' :: GetTableRestoreStatusResponse -> Maybe TableRestoreStatus
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe TableRestoreStatus
tableRestoreStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus