{-# 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.Personalize.DescribeDatasetImportJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the dataset import job created by
-- <https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDatasetImportJob.html CreateDatasetImportJob>,
-- including the import job status.
module Amazonka.Personalize.DescribeDatasetImportJob
  ( -- * Creating a Request
    DescribeDatasetImportJob (..),
    newDescribeDatasetImportJob,

    -- * Request Lenses
    describeDatasetImportJob_datasetImportJobArn,

    -- * Destructuring the Response
    DescribeDatasetImportJobResponse (..),
    newDescribeDatasetImportJobResponse,

    -- * Response Lenses
    describeDatasetImportJobResponse_datasetImportJob,
    describeDatasetImportJobResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeDatasetImportJob' smart constructor.
data DescribeDatasetImportJob = DescribeDatasetImportJob'
  { -- | The Amazon Resource Name (ARN) of the dataset import job to describe.
    DescribeDatasetImportJob -> Text
datasetImportJobArn :: Prelude.Text
  }
  deriving (DescribeDatasetImportJob -> DescribeDatasetImportJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDatasetImportJob -> DescribeDatasetImportJob -> Bool
$c/= :: DescribeDatasetImportJob -> DescribeDatasetImportJob -> Bool
== :: DescribeDatasetImportJob -> DescribeDatasetImportJob -> Bool
$c== :: DescribeDatasetImportJob -> DescribeDatasetImportJob -> Bool
Prelude.Eq, ReadPrec [DescribeDatasetImportJob]
ReadPrec DescribeDatasetImportJob
Int -> ReadS DescribeDatasetImportJob
ReadS [DescribeDatasetImportJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDatasetImportJob]
$creadListPrec :: ReadPrec [DescribeDatasetImportJob]
readPrec :: ReadPrec DescribeDatasetImportJob
$creadPrec :: ReadPrec DescribeDatasetImportJob
readList :: ReadS [DescribeDatasetImportJob]
$creadList :: ReadS [DescribeDatasetImportJob]
readsPrec :: Int -> ReadS DescribeDatasetImportJob
$creadsPrec :: Int -> ReadS DescribeDatasetImportJob
Prelude.Read, Int -> DescribeDatasetImportJob -> ShowS
[DescribeDatasetImportJob] -> ShowS
DescribeDatasetImportJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDatasetImportJob] -> ShowS
$cshowList :: [DescribeDatasetImportJob] -> ShowS
show :: DescribeDatasetImportJob -> String
$cshow :: DescribeDatasetImportJob -> String
showsPrec :: Int -> DescribeDatasetImportJob -> ShowS
$cshowsPrec :: Int -> DescribeDatasetImportJob -> ShowS
Prelude.Show, forall x.
Rep DescribeDatasetImportJob x -> DescribeDatasetImportJob
forall x.
DescribeDatasetImportJob -> Rep DescribeDatasetImportJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDatasetImportJob x -> DescribeDatasetImportJob
$cfrom :: forall x.
DescribeDatasetImportJob -> Rep DescribeDatasetImportJob x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDatasetImportJob' 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:
--
-- 'datasetImportJobArn', 'describeDatasetImportJob_datasetImportJobArn' - The Amazon Resource Name (ARN) of the dataset import job to describe.
newDescribeDatasetImportJob ::
  -- | 'datasetImportJobArn'
  Prelude.Text ->
  DescribeDatasetImportJob
newDescribeDatasetImportJob :: Text -> DescribeDatasetImportJob
newDescribeDatasetImportJob Text
pDatasetImportJobArn_ =
  DescribeDatasetImportJob'
    { $sel:datasetImportJobArn:DescribeDatasetImportJob' :: Text
datasetImportJobArn =
        Text
pDatasetImportJobArn_
    }

-- | The Amazon Resource Name (ARN) of the dataset import job to describe.
describeDatasetImportJob_datasetImportJobArn :: Lens.Lens' DescribeDatasetImportJob Prelude.Text
describeDatasetImportJob_datasetImportJobArn :: Lens' DescribeDatasetImportJob Text
describeDatasetImportJob_datasetImportJobArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDatasetImportJob' {Text
datasetImportJobArn :: Text
$sel:datasetImportJobArn:DescribeDatasetImportJob' :: DescribeDatasetImportJob -> Text
datasetImportJobArn} -> Text
datasetImportJobArn) (\s :: DescribeDatasetImportJob
s@DescribeDatasetImportJob' {} Text
a -> DescribeDatasetImportJob
s {$sel:datasetImportJobArn:DescribeDatasetImportJob' :: Text
datasetImportJobArn = Text
a} :: DescribeDatasetImportJob)

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

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

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

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

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

-- | /See:/ 'newDescribeDatasetImportJobResponse' smart constructor.
data DescribeDatasetImportJobResponse = DescribeDatasetImportJobResponse'
  { -- | Information about the dataset import job, including the status.
    --
    -- The status is one of the following values:
    --
    -- -   CREATE PENDING
    --
    -- -   CREATE IN_PROGRESS
    --
    -- -   ACTIVE
    --
    -- -   CREATE FAILED
    DescribeDatasetImportJobResponse -> Maybe DatasetImportJob
datasetImportJob :: Prelude.Maybe DatasetImportJob,
    -- | The response's http status code.
    DescribeDatasetImportJobResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeDatasetImportJobResponse
-> DescribeDatasetImportJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDatasetImportJobResponse
-> DescribeDatasetImportJobResponse -> Bool
$c/= :: DescribeDatasetImportJobResponse
-> DescribeDatasetImportJobResponse -> Bool
== :: DescribeDatasetImportJobResponse
-> DescribeDatasetImportJobResponse -> Bool
$c== :: DescribeDatasetImportJobResponse
-> DescribeDatasetImportJobResponse -> Bool
Prelude.Eq, ReadPrec [DescribeDatasetImportJobResponse]
ReadPrec DescribeDatasetImportJobResponse
Int -> ReadS DescribeDatasetImportJobResponse
ReadS [DescribeDatasetImportJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDatasetImportJobResponse]
$creadListPrec :: ReadPrec [DescribeDatasetImportJobResponse]
readPrec :: ReadPrec DescribeDatasetImportJobResponse
$creadPrec :: ReadPrec DescribeDatasetImportJobResponse
readList :: ReadS [DescribeDatasetImportJobResponse]
$creadList :: ReadS [DescribeDatasetImportJobResponse]
readsPrec :: Int -> ReadS DescribeDatasetImportJobResponse
$creadsPrec :: Int -> ReadS DescribeDatasetImportJobResponse
Prelude.Read, Int -> DescribeDatasetImportJobResponse -> ShowS
[DescribeDatasetImportJobResponse] -> ShowS
DescribeDatasetImportJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDatasetImportJobResponse] -> ShowS
$cshowList :: [DescribeDatasetImportJobResponse] -> ShowS
show :: DescribeDatasetImportJobResponse -> String
$cshow :: DescribeDatasetImportJobResponse -> String
showsPrec :: Int -> DescribeDatasetImportJobResponse -> ShowS
$cshowsPrec :: Int -> DescribeDatasetImportJobResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeDatasetImportJobResponse x
-> DescribeDatasetImportJobResponse
forall x.
DescribeDatasetImportJobResponse
-> Rep DescribeDatasetImportJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDatasetImportJobResponse x
-> DescribeDatasetImportJobResponse
$cfrom :: forall x.
DescribeDatasetImportJobResponse
-> Rep DescribeDatasetImportJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDatasetImportJobResponse' 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:
--
-- 'datasetImportJob', 'describeDatasetImportJobResponse_datasetImportJob' - Information about the dataset import job, including the status.
--
-- The status is one of the following values:
--
-- -   CREATE PENDING
--
-- -   CREATE IN_PROGRESS
--
-- -   ACTIVE
--
-- -   CREATE FAILED
--
-- 'httpStatus', 'describeDatasetImportJobResponse_httpStatus' - The response's http status code.
newDescribeDatasetImportJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeDatasetImportJobResponse
newDescribeDatasetImportJobResponse :: Int -> DescribeDatasetImportJobResponse
newDescribeDatasetImportJobResponse Int
pHttpStatus_ =
  DescribeDatasetImportJobResponse'
    { $sel:datasetImportJob:DescribeDatasetImportJobResponse' :: Maybe DatasetImportJob
datasetImportJob =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeDatasetImportJobResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the dataset import job, including the status.
--
-- The status is one of the following values:
--
-- -   CREATE PENDING
--
-- -   CREATE IN_PROGRESS
--
-- -   ACTIVE
--
-- -   CREATE FAILED
describeDatasetImportJobResponse_datasetImportJob :: Lens.Lens' DescribeDatasetImportJobResponse (Prelude.Maybe DatasetImportJob)
describeDatasetImportJobResponse_datasetImportJob :: Lens' DescribeDatasetImportJobResponse (Maybe DatasetImportJob)
describeDatasetImportJobResponse_datasetImportJob = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDatasetImportJobResponse' {Maybe DatasetImportJob
datasetImportJob :: Maybe DatasetImportJob
$sel:datasetImportJob:DescribeDatasetImportJobResponse' :: DescribeDatasetImportJobResponse -> Maybe DatasetImportJob
datasetImportJob} -> Maybe DatasetImportJob
datasetImportJob) (\s :: DescribeDatasetImportJobResponse
s@DescribeDatasetImportJobResponse' {} Maybe DatasetImportJob
a -> DescribeDatasetImportJobResponse
s {$sel:datasetImportJob:DescribeDatasetImportJobResponse' :: Maybe DatasetImportJob
datasetImportJob = Maybe DatasetImportJob
a} :: DescribeDatasetImportJobResponse)

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

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