{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# 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.Types.JobBookmarkEntry
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Glue.Types.JobBookmarkEntry 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

-- | Defines a point that a job can resume processing.
--
-- /See:/ 'newJobBookmarkEntry' smart constructor.
data JobBookmarkEntry = JobBookmarkEntry'
  { -- | The attempt ID number.
    JobBookmarkEntry -> Maybe Int
attempt :: Prelude.Maybe Prelude.Int,
    -- | The bookmark itself.
    JobBookmarkEntry -> Maybe Text
jobBookmark :: Prelude.Maybe Prelude.Text,
    -- | The name of the job in question.
    JobBookmarkEntry -> Maybe Text
jobName :: Prelude.Maybe Prelude.Text,
    -- | The unique run identifier associated with the previous job run.
    JobBookmarkEntry -> Maybe Text
previousRunId :: Prelude.Maybe Prelude.Text,
    -- | The run ID number.
    JobBookmarkEntry -> Maybe Int
run :: Prelude.Maybe Prelude.Int,
    -- | The run ID number.
    JobBookmarkEntry -> Maybe Text
runId :: Prelude.Maybe Prelude.Text,
    -- | The version of the job.
    JobBookmarkEntry -> Maybe Int
version :: Prelude.Maybe Prelude.Int
  }
  deriving (JobBookmarkEntry -> JobBookmarkEntry -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JobBookmarkEntry -> JobBookmarkEntry -> Bool
$c/= :: JobBookmarkEntry -> JobBookmarkEntry -> Bool
== :: JobBookmarkEntry -> JobBookmarkEntry -> Bool
$c== :: JobBookmarkEntry -> JobBookmarkEntry -> Bool
Prelude.Eq, ReadPrec [JobBookmarkEntry]
ReadPrec JobBookmarkEntry
Int -> ReadS JobBookmarkEntry
ReadS [JobBookmarkEntry]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [JobBookmarkEntry]
$creadListPrec :: ReadPrec [JobBookmarkEntry]
readPrec :: ReadPrec JobBookmarkEntry
$creadPrec :: ReadPrec JobBookmarkEntry
readList :: ReadS [JobBookmarkEntry]
$creadList :: ReadS [JobBookmarkEntry]
readsPrec :: Int -> ReadS JobBookmarkEntry
$creadsPrec :: Int -> ReadS JobBookmarkEntry
Prelude.Read, Int -> JobBookmarkEntry -> ShowS
[JobBookmarkEntry] -> ShowS
JobBookmarkEntry -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JobBookmarkEntry] -> ShowS
$cshowList :: [JobBookmarkEntry] -> ShowS
show :: JobBookmarkEntry -> String
$cshow :: JobBookmarkEntry -> String
showsPrec :: Int -> JobBookmarkEntry -> ShowS
$cshowsPrec :: Int -> JobBookmarkEntry -> ShowS
Prelude.Show, forall x. Rep JobBookmarkEntry x -> JobBookmarkEntry
forall x. JobBookmarkEntry -> Rep JobBookmarkEntry x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep JobBookmarkEntry x -> JobBookmarkEntry
$cfrom :: forall x. JobBookmarkEntry -> Rep JobBookmarkEntry x
Prelude.Generic)

-- |
-- Create a value of 'JobBookmarkEntry' 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:
--
-- 'attempt', 'jobBookmarkEntry_attempt' - The attempt ID number.
--
-- 'jobBookmark', 'jobBookmarkEntry_jobBookmark' - The bookmark itself.
--
-- 'jobName', 'jobBookmarkEntry_jobName' - The name of the job in question.
--
-- 'previousRunId', 'jobBookmarkEntry_previousRunId' - The unique run identifier associated with the previous job run.
--
-- 'run', 'jobBookmarkEntry_run' - The run ID number.
--
-- 'runId', 'jobBookmarkEntry_runId' - The run ID number.
--
-- 'version', 'jobBookmarkEntry_version' - The version of the job.
newJobBookmarkEntry ::
  JobBookmarkEntry
newJobBookmarkEntry :: JobBookmarkEntry
newJobBookmarkEntry =
  JobBookmarkEntry'
    { $sel:attempt:JobBookmarkEntry' :: Maybe Int
attempt = forall a. Maybe a
Prelude.Nothing,
      $sel:jobBookmark:JobBookmarkEntry' :: Maybe Text
jobBookmark = forall a. Maybe a
Prelude.Nothing,
      $sel:jobName:JobBookmarkEntry' :: Maybe Text
jobName = forall a. Maybe a
Prelude.Nothing,
      $sel:previousRunId:JobBookmarkEntry' :: Maybe Text
previousRunId = forall a. Maybe a
Prelude.Nothing,
      $sel:run:JobBookmarkEntry' :: Maybe Int
run = forall a. Maybe a
Prelude.Nothing,
      $sel:runId:JobBookmarkEntry' :: Maybe Text
runId = forall a. Maybe a
Prelude.Nothing,
      $sel:version:JobBookmarkEntry' :: Maybe Int
version = forall a. Maybe a
Prelude.Nothing
    }

-- | The attempt ID number.
jobBookmarkEntry_attempt :: Lens.Lens' JobBookmarkEntry (Prelude.Maybe Prelude.Int)
jobBookmarkEntry_attempt :: Lens' JobBookmarkEntry (Maybe Int)
jobBookmarkEntry_attempt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobBookmarkEntry' {Maybe Int
attempt :: Maybe Int
$sel:attempt:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Int
attempt} -> Maybe Int
attempt) (\s :: JobBookmarkEntry
s@JobBookmarkEntry' {} Maybe Int
a -> JobBookmarkEntry
s {$sel:attempt:JobBookmarkEntry' :: Maybe Int
attempt = Maybe Int
a} :: JobBookmarkEntry)

-- | The bookmark itself.
jobBookmarkEntry_jobBookmark :: Lens.Lens' JobBookmarkEntry (Prelude.Maybe Prelude.Text)
jobBookmarkEntry_jobBookmark :: Lens' JobBookmarkEntry (Maybe Text)
jobBookmarkEntry_jobBookmark = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobBookmarkEntry' {Maybe Text
jobBookmark :: Maybe Text
$sel:jobBookmark:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
jobBookmark} -> Maybe Text
jobBookmark) (\s :: JobBookmarkEntry
s@JobBookmarkEntry' {} Maybe Text
a -> JobBookmarkEntry
s {$sel:jobBookmark:JobBookmarkEntry' :: Maybe Text
jobBookmark = Maybe Text
a} :: JobBookmarkEntry)

-- | The name of the job in question.
jobBookmarkEntry_jobName :: Lens.Lens' JobBookmarkEntry (Prelude.Maybe Prelude.Text)
jobBookmarkEntry_jobName :: Lens' JobBookmarkEntry (Maybe Text)
jobBookmarkEntry_jobName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobBookmarkEntry' {Maybe Text
jobName :: Maybe Text
$sel:jobName:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
jobName} -> Maybe Text
jobName) (\s :: JobBookmarkEntry
s@JobBookmarkEntry' {} Maybe Text
a -> JobBookmarkEntry
s {$sel:jobName:JobBookmarkEntry' :: Maybe Text
jobName = Maybe Text
a} :: JobBookmarkEntry)

-- | The unique run identifier associated with the previous job run.
jobBookmarkEntry_previousRunId :: Lens.Lens' JobBookmarkEntry (Prelude.Maybe Prelude.Text)
jobBookmarkEntry_previousRunId :: Lens' JobBookmarkEntry (Maybe Text)
jobBookmarkEntry_previousRunId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobBookmarkEntry' {Maybe Text
previousRunId :: Maybe Text
$sel:previousRunId:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
previousRunId} -> Maybe Text
previousRunId) (\s :: JobBookmarkEntry
s@JobBookmarkEntry' {} Maybe Text
a -> JobBookmarkEntry
s {$sel:previousRunId:JobBookmarkEntry' :: Maybe Text
previousRunId = Maybe Text
a} :: JobBookmarkEntry)

-- | The run ID number.
jobBookmarkEntry_run :: Lens.Lens' JobBookmarkEntry (Prelude.Maybe Prelude.Int)
jobBookmarkEntry_run :: Lens' JobBookmarkEntry (Maybe Int)
jobBookmarkEntry_run = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobBookmarkEntry' {Maybe Int
run :: Maybe Int
$sel:run:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Int
run} -> Maybe Int
run) (\s :: JobBookmarkEntry
s@JobBookmarkEntry' {} Maybe Int
a -> JobBookmarkEntry
s {$sel:run:JobBookmarkEntry' :: Maybe Int
run = Maybe Int
a} :: JobBookmarkEntry)

-- | The run ID number.
jobBookmarkEntry_runId :: Lens.Lens' JobBookmarkEntry (Prelude.Maybe Prelude.Text)
jobBookmarkEntry_runId :: Lens' JobBookmarkEntry (Maybe Text)
jobBookmarkEntry_runId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobBookmarkEntry' {Maybe Text
runId :: Maybe Text
$sel:runId:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
runId} -> Maybe Text
runId) (\s :: JobBookmarkEntry
s@JobBookmarkEntry' {} Maybe Text
a -> JobBookmarkEntry
s {$sel:runId:JobBookmarkEntry' :: Maybe Text
runId = Maybe Text
a} :: JobBookmarkEntry)

-- | The version of the job.
jobBookmarkEntry_version :: Lens.Lens' JobBookmarkEntry (Prelude.Maybe Prelude.Int)
jobBookmarkEntry_version :: Lens' JobBookmarkEntry (Maybe Int)
jobBookmarkEntry_version = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobBookmarkEntry' {Maybe Int
version :: Maybe Int
$sel:version:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Int
version} -> Maybe Int
version) (\s :: JobBookmarkEntry
s@JobBookmarkEntry' {} Maybe Int
a -> JobBookmarkEntry
s {$sel:version:JobBookmarkEntry' :: Maybe Int
version = Maybe Int
a} :: JobBookmarkEntry)

instance Data.FromJSON JobBookmarkEntry where
  parseJSON :: Value -> Parser JobBookmarkEntry
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"JobBookmarkEntry"
      ( \Object
x ->
          Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Int
-> JobBookmarkEntry
JobBookmarkEntry'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Attempt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"JobBookmark")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"JobName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PreviousRunId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Run")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RunId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Version")
      )

instance Prelude.Hashable JobBookmarkEntry where
  hashWithSalt :: Int -> JobBookmarkEntry -> Int
hashWithSalt Int
_salt JobBookmarkEntry' {Maybe Int
Maybe Text
version :: Maybe Int
runId :: Maybe Text
run :: Maybe Int
previousRunId :: Maybe Text
jobName :: Maybe Text
jobBookmark :: Maybe Text
attempt :: Maybe Int
$sel:version:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Int
$sel:runId:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
$sel:run:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Int
$sel:previousRunId:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
$sel:jobName:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
$sel:jobBookmark:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
$sel:attempt:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Int
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
attempt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
jobBookmark
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
jobName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
previousRunId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
run
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
runId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
version

instance Prelude.NFData JobBookmarkEntry where
  rnf :: JobBookmarkEntry -> ()
rnf JobBookmarkEntry' {Maybe Int
Maybe Text
version :: Maybe Int
runId :: Maybe Text
run :: Maybe Int
previousRunId :: Maybe Text
jobName :: Maybe Text
jobBookmark :: Maybe Text
attempt :: Maybe Int
$sel:version:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Int
$sel:runId:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
$sel:run:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Int
$sel:previousRunId:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
$sel:jobName:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
$sel:jobBookmark:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Text
$sel:attempt:JobBookmarkEntry' :: JobBookmarkEntry -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
attempt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
jobBookmark
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
jobName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
previousRunId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
run
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
runId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
version