{-# 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.AppFlow.Types.ExecutionRecord
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.AppFlow.Types.ExecutionRecord where

import Amazonka.AppFlow.Types.ExecutionResult
import Amazonka.AppFlow.Types.ExecutionStatus
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Specifies information about the past flow run instances for a given
-- flow.
--
-- /See:/ 'newExecutionRecord' smart constructor.
data ExecutionRecord = ExecutionRecord'
  { -- | Specifies the identifier of the given flow run.
    ExecutionRecord -> Maybe Text
executionId :: Prelude.Maybe Prelude.Text,
    -- | Specifies the time of the most recent update.
    ExecutionRecord -> Maybe POSIX
lastUpdatedAt :: Prelude.Maybe Core.POSIX,
    -- | The timestamp that determines the first new or updated record to be
    -- transferred in the flow run.
    ExecutionRecord -> Maybe POSIX
dataPullStartTime :: Prelude.Maybe Core.POSIX,
    -- | Specifies the flow run status and whether it is in progress, has
    -- completed successfully, or has failed.
    ExecutionRecord -> Maybe ExecutionStatus
executionStatus :: Prelude.Maybe ExecutionStatus,
    -- | Specifies the start time of the flow run.
    ExecutionRecord -> Maybe POSIX
startedAt :: Prelude.Maybe Core.POSIX,
    -- | The timestamp that indicates the last new or updated record to be
    -- transferred in the flow run.
    ExecutionRecord -> Maybe POSIX
dataPullEndTime :: Prelude.Maybe Core.POSIX,
    -- | Describes the result of the given flow run.
    ExecutionRecord -> Maybe ExecutionResult
executionResult :: Prelude.Maybe ExecutionResult
  }
  deriving (ExecutionRecord -> ExecutionRecord -> Bool
(ExecutionRecord -> ExecutionRecord -> Bool)
-> (ExecutionRecord -> ExecutionRecord -> Bool)
-> Eq ExecutionRecord
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ExecutionRecord -> ExecutionRecord -> Bool
$c/= :: ExecutionRecord -> ExecutionRecord -> Bool
== :: ExecutionRecord -> ExecutionRecord -> Bool
$c== :: ExecutionRecord -> ExecutionRecord -> Bool
Prelude.Eq, ReadPrec [ExecutionRecord]
ReadPrec ExecutionRecord
Int -> ReadS ExecutionRecord
ReadS [ExecutionRecord]
(Int -> ReadS ExecutionRecord)
-> ReadS [ExecutionRecord]
-> ReadPrec ExecutionRecord
-> ReadPrec [ExecutionRecord]
-> Read ExecutionRecord
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ExecutionRecord]
$creadListPrec :: ReadPrec [ExecutionRecord]
readPrec :: ReadPrec ExecutionRecord
$creadPrec :: ReadPrec ExecutionRecord
readList :: ReadS [ExecutionRecord]
$creadList :: ReadS [ExecutionRecord]
readsPrec :: Int -> ReadS ExecutionRecord
$creadsPrec :: Int -> ReadS ExecutionRecord
Prelude.Read, Int -> ExecutionRecord -> ShowS
[ExecutionRecord] -> ShowS
ExecutionRecord -> String
(Int -> ExecutionRecord -> ShowS)
-> (ExecutionRecord -> String)
-> ([ExecutionRecord] -> ShowS)
-> Show ExecutionRecord
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ExecutionRecord] -> ShowS
$cshowList :: [ExecutionRecord] -> ShowS
show :: ExecutionRecord -> String
$cshow :: ExecutionRecord -> String
showsPrec :: Int -> ExecutionRecord -> ShowS
$cshowsPrec :: Int -> ExecutionRecord -> ShowS
Prelude.Show, (forall x. ExecutionRecord -> Rep ExecutionRecord x)
-> (forall x. Rep ExecutionRecord x -> ExecutionRecord)
-> Generic ExecutionRecord
forall x. Rep ExecutionRecord x -> ExecutionRecord
forall x. ExecutionRecord -> Rep ExecutionRecord x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ExecutionRecord x -> ExecutionRecord
$cfrom :: forall x. ExecutionRecord -> Rep ExecutionRecord x
Prelude.Generic)

-- |
-- Create a value of 'ExecutionRecord' 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:
--
-- 'executionId', 'executionRecord_executionId' - Specifies the identifier of the given flow run.
--
-- 'lastUpdatedAt', 'executionRecord_lastUpdatedAt' - Specifies the time of the most recent update.
--
-- 'dataPullStartTime', 'executionRecord_dataPullStartTime' - The timestamp that determines the first new or updated record to be
-- transferred in the flow run.
--
-- 'executionStatus', 'executionRecord_executionStatus' - Specifies the flow run status and whether it is in progress, has
-- completed successfully, or has failed.
--
-- 'startedAt', 'executionRecord_startedAt' - Specifies the start time of the flow run.
--
-- 'dataPullEndTime', 'executionRecord_dataPullEndTime' - The timestamp that indicates the last new or updated record to be
-- transferred in the flow run.
--
-- 'executionResult', 'executionRecord_executionResult' - Describes the result of the given flow run.
newExecutionRecord ::
  ExecutionRecord
newExecutionRecord :: ExecutionRecord
newExecutionRecord =
  ExecutionRecord' :: Maybe Text
-> Maybe POSIX
-> Maybe POSIX
-> Maybe ExecutionStatus
-> Maybe POSIX
-> Maybe POSIX
-> Maybe ExecutionResult
-> ExecutionRecord
ExecutionRecord'
    { $sel:executionId:ExecutionRecord' :: Maybe Text
executionId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedAt:ExecutionRecord' :: Maybe POSIX
lastUpdatedAt = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:dataPullStartTime:ExecutionRecord' :: Maybe POSIX
dataPullStartTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:executionStatus:ExecutionRecord' :: Maybe ExecutionStatus
executionStatus = Maybe ExecutionStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:startedAt:ExecutionRecord' :: Maybe POSIX
startedAt = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:dataPullEndTime:ExecutionRecord' :: Maybe POSIX
dataPullEndTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:executionResult:ExecutionRecord' :: Maybe ExecutionResult
executionResult = Maybe ExecutionResult
forall a. Maybe a
Prelude.Nothing
    }

-- | Specifies the identifier of the given flow run.
executionRecord_executionId :: Lens.Lens' ExecutionRecord (Prelude.Maybe Prelude.Text)
executionRecord_executionId :: (Maybe Text -> f (Maybe Text))
-> ExecutionRecord -> f ExecutionRecord
executionRecord_executionId = (ExecutionRecord -> Maybe Text)
-> (ExecutionRecord -> Maybe Text -> ExecutionRecord)
-> Lens ExecutionRecord ExecutionRecord (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ExecutionRecord' {Maybe Text
executionId :: Maybe Text
$sel:executionId:ExecutionRecord' :: ExecutionRecord -> Maybe Text
executionId} -> Maybe Text
executionId) (\s :: ExecutionRecord
s@ExecutionRecord' {} Maybe Text
a -> ExecutionRecord
s {$sel:executionId:ExecutionRecord' :: Maybe Text
executionId = Maybe Text
a} :: ExecutionRecord)

-- | Specifies the time of the most recent update.
executionRecord_lastUpdatedAt :: Lens.Lens' ExecutionRecord (Prelude.Maybe Prelude.UTCTime)
executionRecord_lastUpdatedAt :: (Maybe UTCTime -> f (Maybe UTCTime))
-> ExecutionRecord -> f ExecutionRecord
executionRecord_lastUpdatedAt = (ExecutionRecord -> Maybe POSIX)
-> (ExecutionRecord -> Maybe POSIX -> ExecutionRecord)
-> Lens ExecutionRecord ExecutionRecord (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ExecutionRecord' {Maybe POSIX
lastUpdatedAt :: Maybe POSIX
$sel:lastUpdatedAt:ExecutionRecord' :: ExecutionRecord -> Maybe POSIX
lastUpdatedAt} -> Maybe POSIX
lastUpdatedAt) (\s :: ExecutionRecord
s@ExecutionRecord' {} Maybe POSIX
a -> ExecutionRecord
s {$sel:lastUpdatedAt:ExecutionRecord' :: Maybe POSIX
lastUpdatedAt = Maybe POSIX
a} :: ExecutionRecord) ((Maybe POSIX -> f (Maybe POSIX))
 -> ExecutionRecord -> f ExecutionRecord)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> ExecutionRecord
-> f ExecutionRecord
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The timestamp that determines the first new or updated record to be
-- transferred in the flow run.
executionRecord_dataPullStartTime :: Lens.Lens' ExecutionRecord (Prelude.Maybe Prelude.UTCTime)
executionRecord_dataPullStartTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> ExecutionRecord -> f ExecutionRecord
executionRecord_dataPullStartTime = (ExecutionRecord -> Maybe POSIX)
-> (ExecutionRecord -> Maybe POSIX -> ExecutionRecord)
-> Lens ExecutionRecord ExecutionRecord (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ExecutionRecord' {Maybe POSIX
dataPullStartTime :: Maybe POSIX
$sel:dataPullStartTime:ExecutionRecord' :: ExecutionRecord -> Maybe POSIX
dataPullStartTime} -> Maybe POSIX
dataPullStartTime) (\s :: ExecutionRecord
s@ExecutionRecord' {} Maybe POSIX
a -> ExecutionRecord
s {$sel:dataPullStartTime:ExecutionRecord' :: Maybe POSIX
dataPullStartTime = Maybe POSIX
a} :: ExecutionRecord) ((Maybe POSIX -> f (Maybe POSIX))
 -> ExecutionRecord -> f ExecutionRecord)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> ExecutionRecord
-> f ExecutionRecord
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Specifies the flow run status and whether it is in progress, has
-- completed successfully, or has failed.
executionRecord_executionStatus :: Lens.Lens' ExecutionRecord (Prelude.Maybe ExecutionStatus)
executionRecord_executionStatus :: (Maybe ExecutionStatus -> f (Maybe ExecutionStatus))
-> ExecutionRecord -> f ExecutionRecord
executionRecord_executionStatus = (ExecutionRecord -> Maybe ExecutionStatus)
-> (ExecutionRecord -> Maybe ExecutionStatus -> ExecutionRecord)
-> Lens
     ExecutionRecord
     ExecutionRecord
     (Maybe ExecutionStatus)
     (Maybe ExecutionStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ExecutionRecord' {Maybe ExecutionStatus
executionStatus :: Maybe ExecutionStatus
$sel:executionStatus:ExecutionRecord' :: ExecutionRecord -> Maybe ExecutionStatus
executionStatus} -> Maybe ExecutionStatus
executionStatus) (\s :: ExecutionRecord
s@ExecutionRecord' {} Maybe ExecutionStatus
a -> ExecutionRecord
s {$sel:executionStatus:ExecutionRecord' :: Maybe ExecutionStatus
executionStatus = Maybe ExecutionStatus
a} :: ExecutionRecord)

-- | Specifies the start time of the flow run.
executionRecord_startedAt :: Lens.Lens' ExecutionRecord (Prelude.Maybe Prelude.UTCTime)
executionRecord_startedAt :: (Maybe UTCTime -> f (Maybe UTCTime))
-> ExecutionRecord -> f ExecutionRecord
executionRecord_startedAt = (ExecutionRecord -> Maybe POSIX)
-> (ExecutionRecord -> Maybe POSIX -> ExecutionRecord)
-> Lens ExecutionRecord ExecutionRecord (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ExecutionRecord' {Maybe POSIX
startedAt :: Maybe POSIX
$sel:startedAt:ExecutionRecord' :: ExecutionRecord -> Maybe POSIX
startedAt} -> Maybe POSIX
startedAt) (\s :: ExecutionRecord
s@ExecutionRecord' {} Maybe POSIX
a -> ExecutionRecord
s {$sel:startedAt:ExecutionRecord' :: Maybe POSIX
startedAt = Maybe POSIX
a} :: ExecutionRecord) ((Maybe POSIX -> f (Maybe POSIX))
 -> ExecutionRecord -> f ExecutionRecord)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> ExecutionRecord
-> f ExecutionRecord
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The timestamp that indicates the last new or updated record to be
-- transferred in the flow run.
executionRecord_dataPullEndTime :: Lens.Lens' ExecutionRecord (Prelude.Maybe Prelude.UTCTime)
executionRecord_dataPullEndTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> ExecutionRecord -> f ExecutionRecord
executionRecord_dataPullEndTime = (ExecutionRecord -> Maybe POSIX)
-> (ExecutionRecord -> Maybe POSIX -> ExecutionRecord)
-> Lens ExecutionRecord ExecutionRecord (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ExecutionRecord' {Maybe POSIX
dataPullEndTime :: Maybe POSIX
$sel:dataPullEndTime:ExecutionRecord' :: ExecutionRecord -> Maybe POSIX
dataPullEndTime} -> Maybe POSIX
dataPullEndTime) (\s :: ExecutionRecord
s@ExecutionRecord' {} Maybe POSIX
a -> ExecutionRecord
s {$sel:dataPullEndTime:ExecutionRecord' :: Maybe POSIX
dataPullEndTime = Maybe POSIX
a} :: ExecutionRecord) ((Maybe POSIX -> f (Maybe POSIX))
 -> ExecutionRecord -> f ExecutionRecord)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> ExecutionRecord
-> f ExecutionRecord
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Describes the result of the given flow run.
executionRecord_executionResult :: Lens.Lens' ExecutionRecord (Prelude.Maybe ExecutionResult)
executionRecord_executionResult :: (Maybe ExecutionResult -> f (Maybe ExecutionResult))
-> ExecutionRecord -> f ExecutionRecord
executionRecord_executionResult = (ExecutionRecord -> Maybe ExecutionResult)
-> (ExecutionRecord -> Maybe ExecutionResult -> ExecutionRecord)
-> Lens
     ExecutionRecord
     ExecutionRecord
     (Maybe ExecutionResult)
     (Maybe ExecutionResult)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ExecutionRecord' {Maybe ExecutionResult
executionResult :: Maybe ExecutionResult
$sel:executionResult:ExecutionRecord' :: ExecutionRecord -> Maybe ExecutionResult
executionResult} -> Maybe ExecutionResult
executionResult) (\s :: ExecutionRecord
s@ExecutionRecord' {} Maybe ExecutionResult
a -> ExecutionRecord
s {$sel:executionResult:ExecutionRecord' :: Maybe ExecutionResult
executionResult = Maybe ExecutionResult
a} :: ExecutionRecord)

instance Core.FromJSON ExecutionRecord where
  parseJSON :: Value -> Parser ExecutionRecord
parseJSON =
    String
-> (Object -> Parser ExecutionRecord)
-> Value
-> Parser ExecutionRecord
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"ExecutionRecord"
      ( \Object
x ->
          Maybe Text
-> Maybe POSIX
-> Maybe POSIX
-> Maybe ExecutionStatus
-> Maybe POSIX
-> Maybe POSIX
-> Maybe ExecutionResult
-> ExecutionRecord
ExecutionRecord'
            (Maybe Text
 -> Maybe POSIX
 -> Maybe POSIX
 -> Maybe ExecutionStatus
 -> Maybe POSIX
 -> Maybe POSIX
 -> Maybe ExecutionResult
 -> ExecutionRecord)
-> Parser (Maybe Text)
-> Parser
     (Maybe POSIX
      -> Maybe POSIX
      -> Maybe ExecutionStatus
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> ExecutionRecord)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"executionId")
            Parser
  (Maybe POSIX
   -> Maybe POSIX
   -> Maybe ExecutionStatus
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> ExecutionRecord)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe POSIX
      -> Maybe ExecutionStatus
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> ExecutionRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"lastUpdatedAt")
            Parser
  (Maybe POSIX
   -> Maybe ExecutionStatus
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> ExecutionRecord)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe ExecutionStatus
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> ExecutionRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dataPullStartTime")
            Parser
  (Maybe ExecutionStatus
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> ExecutionRecord)
-> Parser (Maybe ExecutionStatus)
-> Parser
     (Maybe POSIX
      -> Maybe POSIX -> Maybe ExecutionResult -> ExecutionRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ExecutionStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"executionStatus")
            Parser
  (Maybe POSIX
   -> Maybe POSIX -> Maybe ExecutionResult -> ExecutionRecord)
-> Parser (Maybe POSIX)
-> Parser (Maybe POSIX -> Maybe ExecutionResult -> ExecutionRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"startedAt")
            Parser (Maybe POSIX -> Maybe ExecutionResult -> ExecutionRecord)
-> Parser (Maybe POSIX)
-> Parser (Maybe ExecutionResult -> ExecutionRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dataPullEndTime")
            Parser (Maybe ExecutionResult -> ExecutionRecord)
-> Parser (Maybe ExecutionResult) -> Parser ExecutionRecord
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ExecutionResult)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"executionResult")
      )

instance Prelude.Hashable ExecutionRecord

instance Prelude.NFData ExecutionRecord