{-# 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.CodeGuruReviewer.Types.CodeReviewSummary
-- 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.CodeGuruReviewer.Types.CodeReviewSummary where

import Amazonka.CodeGuruReviewer.Types.JobState
import Amazonka.CodeGuruReviewer.Types.MetricsSummary
import Amazonka.CodeGuruReviewer.Types.ProviderType
import Amazonka.CodeGuruReviewer.Types.SourceCodeType
import Amazonka.CodeGuruReviewer.Types.Type
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

-- | Information about the summary of the code review.
--
-- /See:/ 'newCodeReviewSummary' smart constructor.
data CodeReviewSummary = CodeReviewSummary'
  { -- | The Amazon Resource Name (ARN) of the
    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
    -- object.
    CodeReviewSummary -> Maybe Text
codeReviewArn :: Prelude.Maybe Prelude.Text,
    -- | The time, in milliseconds since the epoch, when the code review was
    -- created.
    CodeReviewSummary -> Maybe POSIX
createdTimeStamp :: Prelude.Maybe Data.POSIX,
    -- | The time, in milliseconds since the epoch, when the code review was last
    -- updated.
    CodeReviewSummary -> Maybe POSIX
lastUpdatedTimeStamp :: Prelude.Maybe Data.POSIX,
    -- | The statistics from the code review.
    CodeReviewSummary -> Maybe MetricsSummary
metricsSummary :: Prelude.Maybe MetricsSummary,
    -- | The name of the code review.
    CodeReviewSummary -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The owner of the repository. For an Amazon Web Services CodeCommit
    -- repository, this is the Amazon Web Services account ID of the account
    -- that owns the repository. For a GitHub, GitHub Enterprise Server, or
    -- Bitbucket repository, this is the username for the account that owns the
    -- repository. For an S3 repository, it can be the username or Amazon Web
    -- Services account ID.
    CodeReviewSummary -> Maybe Text
owner :: Prelude.Maybe Prelude.Text,
    -- | The provider type of the repository association.
    CodeReviewSummary -> Maybe ProviderType
providerType :: Prelude.Maybe ProviderType,
    -- | The pull request ID for the code review.
    CodeReviewSummary -> Maybe Text
pullRequestId :: Prelude.Maybe Prelude.Text,
    -- | The name of the repository.
    CodeReviewSummary -> Maybe Text
repositoryName :: Prelude.Maybe Prelude.Text,
    CodeReviewSummary -> Maybe SourceCodeType
sourceCodeType :: Prelude.Maybe SourceCodeType,
    -- | The state of the code review.
    --
    -- The valid code review states are:
    --
    -- -   @Completed@: The code review is complete.
    --
    -- -   @Pending@: The code review started and has not completed or failed.
    --
    -- -   @Failed@: The code review failed.
    --
    -- -   @Deleting@: The code review is being deleted.
    CodeReviewSummary -> Maybe JobState
state :: Prelude.Maybe JobState,
    -- | The type of the code review.
    CodeReviewSummary -> Maybe Type
type' :: Prelude.Maybe Type
  }
  deriving (CodeReviewSummary -> CodeReviewSummary -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CodeReviewSummary -> CodeReviewSummary -> Bool
$c/= :: CodeReviewSummary -> CodeReviewSummary -> Bool
== :: CodeReviewSummary -> CodeReviewSummary -> Bool
$c== :: CodeReviewSummary -> CodeReviewSummary -> Bool
Prelude.Eq, ReadPrec [CodeReviewSummary]
ReadPrec CodeReviewSummary
Int -> ReadS CodeReviewSummary
ReadS [CodeReviewSummary]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CodeReviewSummary]
$creadListPrec :: ReadPrec [CodeReviewSummary]
readPrec :: ReadPrec CodeReviewSummary
$creadPrec :: ReadPrec CodeReviewSummary
readList :: ReadS [CodeReviewSummary]
$creadList :: ReadS [CodeReviewSummary]
readsPrec :: Int -> ReadS CodeReviewSummary
$creadsPrec :: Int -> ReadS CodeReviewSummary
Prelude.Read, Int -> CodeReviewSummary -> ShowS
[CodeReviewSummary] -> ShowS
CodeReviewSummary -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CodeReviewSummary] -> ShowS
$cshowList :: [CodeReviewSummary] -> ShowS
show :: CodeReviewSummary -> String
$cshow :: CodeReviewSummary -> String
showsPrec :: Int -> CodeReviewSummary -> ShowS
$cshowsPrec :: Int -> CodeReviewSummary -> ShowS
Prelude.Show, forall x. Rep CodeReviewSummary x -> CodeReviewSummary
forall x. CodeReviewSummary -> Rep CodeReviewSummary x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CodeReviewSummary x -> CodeReviewSummary
$cfrom :: forall x. CodeReviewSummary -> Rep CodeReviewSummary x
Prelude.Generic)

-- |
-- Create a value of 'CodeReviewSummary' 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:
--
-- 'codeReviewArn', 'codeReviewSummary_codeReviewArn' - The Amazon Resource Name (ARN) of the
-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
-- object.
--
-- 'createdTimeStamp', 'codeReviewSummary_createdTimeStamp' - The time, in milliseconds since the epoch, when the code review was
-- created.
--
-- 'lastUpdatedTimeStamp', 'codeReviewSummary_lastUpdatedTimeStamp' - The time, in milliseconds since the epoch, when the code review was last
-- updated.
--
-- 'metricsSummary', 'codeReviewSummary_metricsSummary' - The statistics from the code review.
--
-- 'name', 'codeReviewSummary_name' - The name of the code review.
--
-- 'owner', 'codeReviewSummary_owner' - The owner of the repository. For an Amazon Web Services CodeCommit
-- repository, this is the Amazon Web Services account ID of the account
-- that owns the repository. For a GitHub, GitHub Enterprise Server, or
-- Bitbucket repository, this is the username for the account that owns the
-- repository. For an S3 repository, it can be the username or Amazon Web
-- Services account ID.
--
-- 'providerType', 'codeReviewSummary_providerType' - The provider type of the repository association.
--
-- 'pullRequestId', 'codeReviewSummary_pullRequestId' - The pull request ID for the code review.
--
-- 'repositoryName', 'codeReviewSummary_repositoryName' - The name of the repository.
--
-- 'sourceCodeType', 'codeReviewSummary_sourceCodeType' - Undocumented member.
--
-- 'state', 'codeReviewSummary_state' - The state of the code review.
--
-- The valid code review states are:
--
-- -   @Completed@: The code review is complete.
--
-- -   @Pending@: The code review started and has not completed or failed.
--
-- -   @Failed@: The code review failed.
--
-- -   @Deleting@: The code review is being deleted.
--
-- 'type'', 'codeReviewSummary_type' - The type of the code review.
newCodeReviewSummary ::
  CodeReviewSummary
newCodeReviewSummary :: CodeReviewSummary
newCodeReviewSummary =
  CodeReviewSummary'
    { $sel:codeReviewArn:CodeReviewSummary' :: Maybe Text
codeReviewArn = forall a. Maybe a
Prelude.Nothing,
      $sel:createdTimeStamp:CodeReviewSummary' :: Maybe POSIX
createdTimeStamp = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedTimeStamp:CodeReviewSummary' :: Maybe POSIX
lastUpdatedTimeStamp = forall a. Maybe a
Prelude.Nothing,
      $sel:metricsSummary:CodeReviewSummary' :: Maybe MetricsSummary
metricsSummary = forall a. Maybe a
Prelude.Nothing,
      $sel:name:CodeReviewSummary' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:owner:CodeReviewSummary' :: Maybe Text
owner = forall a. Maybe a
Prelude.Nothing,
      $sel:providerType:CodeReviewSummary' :: Maybe ProviderType
providerType = forall a. Maybe a
Prelude.Nothing,
      $sel:pullRequestId:CodeReviewSummary' :: Maybe Text
pullRequestId = forall a. Maybe a
Prelude.Nothing,
      $sel:repositoryName:CodeReviewSummary' :: Maybe Text
repositoryName = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceCodeType:CodeReviewSummary' :: Maybe SourceCodeType
sourceCodeType = forall a. Maybe a
Prelude.Nothing,
      $sel:state:CodeReviewSummary' :: Maybe JobState
state = forall a. Maybe a
Prelude.Nothing,
      $sel:type':CodeReviewSummary' :: Maybe Type
type' = forall a. Maybe a
Prelude.Nothing
    }

-- | The Amazon Resource Name (ARN) of the
-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
-- object.
codeReviewSummary_codeReviewArn :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.Text)
codeReviewSummary_codeReviewArn :: Lens' CodeReviewSummary (Maybe Text)
codeReviewSummary_codeReviewArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe Text
codeReviewArn :: Maybe Text
$sel:codeReviewArn:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
codeReviewArn} -> Maybe Text
codeReviewArn) (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe Text
a -> CodeReviewSummary
s {$sel:codeReviewArn:CodeReviewSummary' :: Maybe Text
codeReviewArn = Maybe Text
a} :: CodeReviewSummary)

-- | The time, in milliseconds since the epoch, when the code review was
-- created.
codeReviewSummary_createdTimeStamp :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.UTCTime)
codeReviewSummary_createdTimeStamp :: Lens' CodeReviewSummary (Maybe UTCTime)
codeReviewSummary_createdTimeStamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe POSIX
createdTimeStamp :: Maybe POSIX
$sel:createdTimeStamp:CodeReviewSummary' :: CodeReviewSummary -> Maybe POSIX
createdTimeStamp} -> Maybe POSIX
createdTimeStamp) (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe POSIX
a -> CodeReviewSummary
s {$sel:createdTimeStamp:CodeReviewSummary' :: Maybe POSIX
createdTimeStamp = Maybe POSIX
a} :: CodeReviewSummary) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The time, in milliseconds since the epoch, when the code review was last
-- updated.
codeReviewSummary_lastUpdatedTimeStamp :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.UTCTime)
codeReviewSummary_lastUpdatedTimeStamp :: Lens' CodeReviewSummary (Maybe UTCTime)
codeReviewSummary_lastUpdatedTimeStamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe POSIX
lastUpdatedTimeStamp :: Maybe POSIX
$sel:lastUpdatedTimeStamp:CodeReviewSummary' :: CodeReviewSummary -> Maybe POSIX
lastUpdatedTimeStamp} -> Maybe POSIX
lastUpdatedTimeStamp) (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe POSIX
a -> CodeReviewSummary
s {$sel:lastUpdatedTimeStamp:CodeReviewSummary' :: Maybe POSIX
lastUpdatedTimeStamp = Maybe POSIX
a} :: CodeReviewSummary) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The statistics from the code review.
codeReviewSummary_metricsSummary :: Lens.Lens' CodeReviewSummary (Prelude.Maybe MetricsSummary)
codeReviewSummary_metricsSummary :: Lens' CodeReviewSummary (Maybe MetricsSummary)
codeReviewSummary_metricsSummary = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe MetricsSummary
metricsSummary :: Maybe MetricsSummary
$sel:metricsSummary:CodeReviewSummary' :: CodeReviewSummary -> Maybe MetricsSummary
metricsSummary} -> Maybe MetricsSummary
metricsSummary) (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe MetricsSummary
a -> CodeReviewSummary
s {$sel:metricsSummary:CodeReviewSummary' :: Maybe MetricsSummary
metricsSummary = Maybe MetricsSummary
a} :: CodeReviewSummary)

-- | The name of the code review.
codeReviewSummary_name :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.Text)
codeReviewSummary_name :: Lens' CodeReviewSummary (Maybe Text)
codeReviewSummary_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe Text
name :: Maybe Text
$sel:name:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
name} -> Maybe Text
name) (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe Text
a -> CodeReviewSummary
s {$sel:name:CodeReviewSummary' :: Maybe Text
name = Maybe Text
a} :: CodeReviewSummary)

-- | The owner of the repository. For an Amazon Web Services CodeCommit
-- repository, this is the Amazon Web Services account ID of the account
-- that owns the repository. For a GitHub, GitHub Enterprise Server, or
-- Bitbucket repository, this is the username for the account that owns the
-- repository. For an S3 repository, it can be the username or Amazon Web
-- Services account ID.
codeReviewSummary_owner :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.Text)
codeReviewSummary_owner :: Lens' CodeReviewSummary (Maybe Text)
codeReviewSummary_owner = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe Text
owner :: Maybe Text
$sel:owner:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
owner} -> Maybe Text
owner) (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe Text
a -> CodeReviewSummary
s {$sel:owner:CodeReviewSummary' :: Maybe Text
owner = Maybe Text
a} :: CodeReviewSummary)

-- | The provider type of the repository association.
codeReviewSummary_providerType :: Lens.Lens' CodeReviewSummary (Prelude.Maybe ProviderType)
codeReviewSummary_providerType :: Lens' CodeReviewSummary (Maybe ProviderType)
codeReviewSummary_providerType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe ProviderType
providerType :: Maybe ProviderType
$sel:providerType:CodeReviewSummary' :: CodeReviewSummary -> Maybe ProviderType
providerType} -> Maybe ProviderType
providerType) (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe ProviderType
a -> CodeReviewSummary
s {$sel:providerType:CodeReviewSummary' :: Maybe ProviderType
providerType = Maybe ProviderType
a} :: CodeReviewSummary)

-- | The pull request ID for the code review.
codeReviewSummary_pullRequestId :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.Text)
codeReviewSummary_pullRequestId :: Lens' CodeReviewSummary (Maybe Text)
codeReviewSummary_pullRequestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe Text
pullRequestId :: Maybe Text
$sel:pullRequestId:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
pullRequestId} -> Maybe Text
pullRequestId) (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe Text
a -> CodeReviewSummary
s {$sel:pullRequestId:CodeReviewSummary' :: Maybe Text
pullRequestId = Maybe Text
a} :: CodeReviewSummary)

-- | The name of the repository.
codeReviewSummary_repositoryName :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.Text)
codeReviewSummary_repositoryName :: Lens' CodeReviewSummary (Maybe Text)
codeReviewSummary_repositoryName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe Text
repositoryName :: Maybe Text
$sel:repositoryName:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
repositoryName} -> Maybe Text
repositoryName) (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe Text
a -> CodeReviewSummary
s {$sel:repositoryName:CodeReviewSummary' :: Maybe Text
repositoryName = Maybe Text
a} :: CodeReviewSummary)

-- | Undocumented member.
codeReviewSummary_sourceCodeType :: Lens.Lens' CodeReviewSummary (Prelude.Maybe SourceCodeType)
codeReviewSummary_sourceCodeType :: Lens' CodeReviewSummary (Maybe SourceCodeType)
codeReviewSummary_sourceCodeType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe SourceCodeType
sourceCodeType :: Maybe SourceCodeType
$sel:sourceCodeType:CodeReviewSummary' :: CodeReviewSummary -> Maybe SourceCodeType
sourceCodeType} -> Maybe SourceCodeType
sourceCodeType) (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe SourceCodeType
a -> CodeReviewSummary
s {$sel:sourceCodeType:CodeReviewSummary' :: Maybe SourceCodeType
sourceCodeType = Maybe SourceCodeType
a} :: CodeReviewSummary)

-- | The state of the code review.
--
-- The valid code review states are:
--
-- -   @Completed@: The code review is complete.
--
-- -   @Pending@: The code review started and has not completed or failed.
--
-- -   @Failed@: The code review failed.
--
-- -   @Deleting@: The code review is being deleted.
codeReviewSummary_state :: Lens.Lens' CodeReviewSummary (Prelude.Maybe JobState)
codeReviewSummary_state :: Lens' CodeReviewSummary (Maybe JobState)
codeReviewSummary_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe JobState
state :: Maybe JobState
$sel:state:CodeReviewSummary' :: CodeReviewSummary -> Maybe JobState
state} -> Maybe JobState
state) (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe JobState
a -> CodeReviewSummary
s {$sel:state:CodeReviewSummary' :: Maybe JobState
state = Maybe JobState
a} :: CodeReviewSummary)

-- | The type of the code review.
codeReviewSummary_type :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Type)
codeReviewSummary_type :: Lens' CodeReviewSummary (Maybe Type)
codeReviewSummary_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CodeReviewSummary' {Maybe Type
type' :: Maybe Type
$sel:type':CodeReviewSummary' :: CodeReviewSummary -> Maybe Type
type'} -> Maybe Type
type') (\s :: CodeReviewSummary
s@CodeReviewSummary' {} Maybe Type
a -> CodeReviewSummary
s {$sel:type':CodeReviewSummary' :: Maybe Type
type' = Maybe Type
a} :: CodeReviewSummary)

instance Data.FromJSON CodeReviewSummary where
  parseJSON :: Value -> Parser CodeReviewSummary
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"CodeReviewSummary"
      ( \Object
x ->
          Maybe Text
-> Maybe POSIX
-> Maybe POSIX
-> Maybe MetricsSummary
-> Maybe Text
-> Maybe Text
-> Maybe ProviderType
-> Maybe Text
-> Maybe Text
-> Maybe SourceCodeType
-> Maybe JobState
-> Maybe Type
-> CodeReviewSummary
CodeReviewSummary'
            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
"CodeReviewArn")
            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
"CreatedTimeStamp")
            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
"LastUpdatedTimeStamp")
            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
"MetricsSummary")
            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
"Name")
            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
"Owner")
            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
"ProviderType")
            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
"PullRequestId")
            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
"RepositoryName")
            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
"SourceCodeType")
            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
"State")
            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
"Type")
      )

instance Prelude.Hashable CodeReviewSummary where
  hashWithSalt :: Int -> CodeReviewSummary -> Int
hashWithSalt Int
_salt CodeReviewSummary' {Maybe Text
Maybe POSIX
Maybe JobState
Maybe MetricsSummary
Maybe ProviderType
Maybe Type
Maybe SourceCodeType
type' :: Maybe Type
state :: Maybe JobState
sourceCodeType :: Maybe SourceCodeType
repositoryName :: Maybe Text
pullRequestId :: Maybe Text
providerType :: Maybe ProviderType
owner :: Maybe Text
name :: Maybe Text
metricsSummary :: Maybe MetricsSummary
lastUpdatedTimeStamp :: Maybe POSIX
createdTimeStamp :: Maybe POSIX
codeReviewArn :: Maybe Text
$sel:type':CodeReviewSummary' :: CodeReviewSummary -> Maybe Type
$sel:state:CodeReviewSummary' :: CodeReviewSummary -> Maybe JobState
$sel:sourceCodeType:CodeReviewSummary' :: CodeReviewSummary -> Maybe SourceCodeType
$sel:repositoryName:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
$sel:pullRequestId:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
$sel:providerType:CodeReviewSummary' :: CodeReviewSummary -> Maybe ProviderType
$sel:owner:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
$sel:name:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
$sel:metricsSummary:CodeReviewSummary' :: CodeReviewSummary -> Maybe MetricsSummary
$sel:lastUpdatedTimeStamp:CodeReviewSummary' :: CodeReviewSummary -> Maybe POSIX
$sel:createdTimeStamp:CodeReviewSummary' :: CodeReviewSummary -> Maybe POSIX
$sel:codeReviewArn:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
codeReviewArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdTimeStamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastUpdatedTimeStamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MetricsSummary
metricsSummary
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
owner
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProviderType
providerType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
pullRequestId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
repositoryName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SourceCodeType
sourceCodeType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe JobState
state
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Type
type'

instance Prelude.NFData CodeReviewSummary where
  rnf :: CodeReviewSummary -> ()
rnf CodeReviewSummary' {Maybe Text
Maybe POSIX
Maybe JobState
Maybe MetricsSummary
Maybe ProviderType
Maybe Type
Maybe SourceCodeType
type' :: Maybe Type
state :: Maybe JobState
sourceCodeType :: Maybe SourceCodeType
repositoryName :: Maybe Text
pullRequestId :: Maybe Text
providerType :: Maybe ProviderType
owner :: Maybe Text
name :: Maybe Text
metricsSummary :: Maybe MetricsSummary
lastUpdatedTimeStamp :: Maybe POSIX
createdTimeStamp :: Maybe POSIX
codeReviewArn :: Maybe Text
$sel:type':CodeReviewSummary' :: CodeReviewSummary -> Maybe Type
$sel:state:CodeReviewSummary' :: CodeReviewSummary -> Maybe JobState
$sel:sourceCodeType:CodeReviewSummary' :: CodeReviewSummary -> Maybe SourceCodeType
$sel:repositoryName:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
$sel:pullRequestId:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
$sel:providerType:CodeReviewSummary' :: CodeReviewSummary -> Maybe ProviderType
$sel:owner:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
$sel:name:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
$sel:metricsSummary:CodeReviewSummary' :: CodeReviewSummary -> Maybe MetricsSummary
$sel:lastUpdatedTimeStamp:CodeReviewSummary' :: CodeReviewSummary -> Maybe POSIX
$sel:createdTimeStamp:CodeReviewSummary' :: CodeReviewSummary -> Maybe POSIX
$sel:codeReviewArn:CodeReviewSummary' :: CodeReviewSummary -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
codeReviewArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdTimeStamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastUpdatedTimeStamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MetricsSummary
metricsSummary
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
owner
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProviderType
providerType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
pullRequestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
repositoryName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SourceCodeType
sourceCodeType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe JobState
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Type
type'