{-# 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.WellArchitected.Types.LensReview
-- 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.WellArchitected.Types.LensReview 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.WellArchitected.Types.LensStatus
import Amazonka.WellArchitected.Types.PillarReviewSummary
import Amazonka.WellArchitected.Types.Risk

-- | A lens review of a question.
--
-- /See:/ 'newLensReview' smart constructor.
data LensReview = LensReview'
  { LensReview -> Maybe Text
lensAlias :: Prelude.Maybe Prelude.Text,
    -- | The ARN for the lens.
    LensReview -> Maybe Text
lensArn :: Prelude.Maybe Prelude.Text,
    LensReview -> Maybe Text
lensName :: Prelude.Maybe Prelude.Text,
    -- | The status of the lens.
    LensReview -> Maybe LensStatus
lensStatus :: Prelude.Maybe LensStatus,
    -- | The version of the lens.
    LensReview -> Maybe Text
lensVersion :: Prelude.Maybe Prelude.Text,
    LensReview -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    LensReview -> Maybe Text
notes :: Prelude.Maybe Prelude.Text,
    LensReview -> Maybe [PillarReviewSummary]
pillarReviewSummaries :: Prelude.Maybe [PillarReviewSummary],
    LensReview -> Maybe (HashMap Risk Natural)
riskCounts :: Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural),
    LensReview -> Maybe POSIX
updatedAt :: Prelude.Maybe Data.POSIX
  }
  deriving (LensReview -> LensReview -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LensReview -> LensReview -> Bool
$c/= :: LensReview -> LensReview -> Bool
== :: LensReview -> LensReview -> Bool
$c== :: LensReview -> LensReview -> Bool
Prelude.Eq, ReadPrec [LensReview]
ReadPrec LensReview
Int -> ReadS LensReview
ReadS [LensReview]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [LensReview]
$creadListPrec :: ReadPrec [LensReview]
readPrec :: ReadPrec LensReview
$creadPrec :: ReadPrec LensReview
readList :: ReadS [LensReview]
$creadList :: ReadS [LensReview]
readsPrec :: Int -> ReadS LensReview
$creadsPrec :: Int -> ReadS LensReview
Prelude.Read, Int -> LensReview -> ShowS
[LensReview] -> ShowS
LensReview -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LensReview] -> ShowS
$cshowList :: [LensReview] -> ShowS
show :: LensReview -> String
$cshow :: LensReview -> String
showsPrec :: Int -> LensReview -> ShowS
$cshowsPrec :: Int -> LensReview -> ShowS
Prelude.Show, forall x. Rep LensReview x -> LensReview
forall x. LensReview -> Rep LensReview x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep LensReview x -> LensReview
$cfrom :: forall x. LensReview -> Rep LensReview x
Prelude.Generic)

-- |
-- Create a value of 'LensReview' 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:
--
-- 'lensAlias', 'lensReview_lensAlias' - Undocumented member.
--
-- 'lensArn', 'lensReview_lensArn' - The ARN for the lens.
--
-- 'lensName', 'lensReview_lensName' - Undocumented member.
--
-- 'lensStatus', 'lensReview_lensStatus' - The status of the lens.
--
-- 'lensVersion', 'lensReview_lensVersion' - The version of the lens.
--
-- 'nextToken', 'lensReview_nextToken' - Undocumented member.
--
-- 'notes', 'lensReview_notes' - Undocumented member.
--
-- 'pillarReviewSummaries', 'lensReview_pillarReviewSummaries' - Undocumented member.
--
-- 'riskCounts', 'lensReview_riskCounts' - Undocumented member.
--
-- 'updatedAt', 'lensReview_updatedAt' - Undocumented member.
newLensReview ::
  LensReview
newLensReview :: LensReview
newLensReview =
  LensReview'
    { $sel:lensAlias:LensReview' :: Maybe Text
lensAlias = forall a. Maybe a
Prelude.Nothing,
      $sel:lensArn:LensReview' :: Maybe Text
lensArn = forall a. Maybe a
Prelude.Nothing,
      $sel:lensName:LensReview' :: Maybe Text
lensName = forall a. Maybe a
Prelude.Nothing,
      $sel:lensStatus:LensReview' :: Maybe LensStatus
lensStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:lensVersion:LensReview' :: Maybe Text
lensVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:LensReview' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:notes:LensReview' :: Maybe Text
notes = forall a. Maybe a
Prelude.Nothing,
      $sel:pillarReviewSummaries:LensReview' :: Maybe [PillarReviewSummary]
pillarReviewSummaries = forall a. Maybe a
Prelude.Nothing,
      $sel:riskCounts:LensReview' :: Maybe (HashMap Risk Natural)
riskCounts = forall a. Maybe a
Prelude.Nothing,
      $sel:updatedAt:LensReview' :: Maybe POSIX
updatedAt = forall a. Maybe a
Prelude.Nothing
    }

-- | Undocumented member.
lensReview_lensAlias :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
lensReview_lensAlias :: Lens' LensReview (Maybe Text)
lensReview_lensAlias = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LensReview' {Maybe Text
lensAlias :: Maybe Text
$sel:lensAlias:LensReview' :: LensReview -> Maybe Text
lensAlias} -> Maybe Text
lensAlias) (\s :: LensReview
s@LensReview' {} Maybe Text
a -> LensReview
s {$sel:lensAlias:LensReview' :: Maybe Text
lensAlias = Maybe Text
a} :: LensReview)

-- | The ARN for the lens.
lensReview_lensArn :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
lensReview_lensArn :: Lens' LensReview (Maybe Text)
lensReview_lensArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LensReview' {Maybe Text
lensArn :: Maybe Text
$sel:lensArn:LensReview' :: LensReview -> Maybe Text
lensArn} -> Maybe Text
lensArn) (\s :: LensReview
s@LensReview' {} Maybe Text
a -> LensReview
s {$sel:lensArn:LensReview' :: Maybe Text
lensArn = Maybe Text
a} :: LensReview)

-- | Undocumented member.
lensReview_lensName :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
lensReview_lensName :: Lens' LensReview (Maybe Text)
lensReview_lensName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LensReview' {Maybe Text
lensName :: Maybe Text
$sel:lensName:LensReview' :: LensReview -> Maybe Text
lensName} -> Maybe Text
lensName) (\s :: LensReview
s@LensReview' {} Maybe Text
a -> LensReview
s {$sel:lensName:LensReview' :: Maybe Text
lensName = Maybe Text
a} :: LensReview)

-- | The status of the lens.
lensReview_lensStatus :: Lens.Lens' LensReview (Prelude.Maybe LensStatus)
lensReview_lensStatus :: Lens' LensReview (Maybe LensStatus)
lensReview_lensStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LensReview' {Maybe LensStatus
lensStatus :: Maybe LensStatus
$sel:lensStatus:LensReview' :: LensReview -> Maybe LensStatus
lensStatus} -> Maybe LensStatus
lensStatus) (\s :: LensReview
s@LensReview' {} Maybe LensStatus
a -> LensReview
s {$sel:lensStatus:LensReview' :: Maybe LensStatus
lensStatus = Maybe LensStatus
a} :: LensReview)

-- | The version of the lens.
lensReview_lensVersion :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
lensReview_lensVersion :: Lens' LensReview (Maybe Text)
lensReview_lensVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LensReview' {Maybe Text
lensVersion :: Maybe Text
$sel:lensVersion:LensReview' :: LensReview -> Maybe Text
lensVersion} -> Maybe Text
lensVersion) (\s :: LensReview
s@LensReview' {} Maybe Text
a -> LensReview
s {$sel:lensVersion:LensReview' :: Maybe Text
lensVersion = Maybe Text
a} :: LensReview)

-- | Undocumented member.
lensReview_nextToken :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
lensReview_nextToken :: Lens' LensReview (Maybe Text)
lensReview_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LensReview' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:LensReview' :: LensReview -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: LensReview
s@LensReview' {} Maybe Text
a -> LensReview
s {$sel:nextToken:LensReview' :: Maybe Text
nextToken = Maybe Text
a} :: LensReview)

-- | Undocumented member.
lensReview_notes :: Lens.Lens' LensReview (Prelude.Maybe Prelude.Text)
lensReview_notes :: Lens' LensReview (Maybe Text)
lensReview_notes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LensReview' {Maybe Text
notes :: Maybe Text
$sel:notes:LensReview' :: LensReview -> Maybe Text
notes} -> Maybe Text
notes) (\s :: LensReview
s@LensReview' {} Maybe Text
a -> LensReview
s {$sel:notes:LensReview' :: Maybe Text
notes = Maybe Text
a} :: LensReview)

-- | Undocumented member.
lensReview_pillarReviewSummaries :: Lens.Lens' LensReview (Prelude.Maybe [PillarReviewSummary])
lensReview_pillarReviewSummaries :: Lens' LensReview (Maybe [PillarReviewSummary])
lensReview_pillarReviewSummaries = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LensReview' {Maybe [PillarReviewSummary]
pillarReviewSummaries :: Maybe [PillarReviewSummary]
$sel:pillarReviewSummaries:LensReview' :: LensReview -> Maybe [PillarReviewSummary]
pillarReviewSummaries} -> Maybe [PillarReviewSummary]
pillarReviewSummaries) (\s :: LensReview
s@LensReview' {} Maybe [PillarReviewSummary]
a -> LensReview
s {$sel:pillarReviewSummaries:LensReview' :: Maybe [PillarReviewSummary]
pillarReviewSummaries = Maybe [PillarReviewSummary]
a} :: LensReview) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Undocumented member.
lensReview_riskCounts :: Lens.Lens' LensReview (Prelude.Maybe (Prelude.HashMap Risk Prelude.Natural))
lensReview_riskCounts :: Lens' LensReview (Maybe (HashMap Risk Natural))
lensReview_riskCounts = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LensReview' {Maybe (HashMap Risk Natural)
riskCounts :: Maybe (HashMap Risk Natural)
$sel:riskCounts:LensReview' :: LensReview -> Maybe (HashMap Risk Natural)
riskCounts} -> Maybe (HashMap Risk Natural)
riskCounts) (\s :: LensReview
s@LensReview' {} Maybe (HashMap Risk Natural)
a -> LensReview
s {$sel:riskCounts:LensReview' :: Maybe (HashMap Risk Natural)
riskCounts = Maybe (HashMap Risk Natural)
a} :: LensReview) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Undocumented member.
lensReview_updatedAt :: Lens.Lens' LensReview (Prelude.Maybe Prelude.UTCTime)
lensReview_updatedAt :: Lens' LensReview (Maybe UTCTime)
lensReview_updatedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LensReview' {Maybe POSIX
updatedAt :: Maybe POSIX
$sel:updatedAt:LensReview' :: LensReview -> Maybe POSIX
updatedAt} -> Maybe POSIX
updatedAt) (\s :: LensReview
s@LensReview' {} Maybe POSIX
a -> LensReview
s {$sel:updatedAt:LensReview' :: Maybe POSIX
updatedAt = Maybe POSIX
a} :: LensReview) 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

instance Data.FromJSON LensReview where
  parseJSON :: Value -> Parser LensReview
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"LensReview"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe LensStatus
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [PillarReviewSummary]
-> Maybe (HashMap Risk Natural)
-> Maybe POSIX
-> LensReview
LensReview'
            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
"LensAlias")
            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
"LensArn")
            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
"LensName")
            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
"LensStatus")
            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
"LensVersion")
            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
"NextToken")
            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
"Notes")
            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
"PillarReviewSummaries"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            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
"RiskCounts" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            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
"UpdatedAt")
      )

instance Prelude.Hashable LensReview where
  hashWithSalt :: Int -> LensReview -> Int
hashWithSalt Int
_salt LensReview' {Maybe [PillarReviewSummary]
Maybe Text
Maybe (HashMap Risk Natural)
Maybe POSIX
Maybe LensStatus
updatedAt :: Maybe POSIX
riskCounts :: Maybe (HashMap Risk Natural)
pillarReviewSummaries :: Maybe [PillarReviewSummary]
notes :: Maybe Text
nextToken :: Maybe Text
lensVersion :: Maybe Text
lensStatus :: Maybe LensStatus
lensName :: Maybe Text
lensArn :: Maybe Text
lensAlias :: Maybe Text
$sel:updatedAt:LensReview' :: LensReview -> Maybe POSIX
$sel:riskCounts:LensReview' :: LensReview -> Maybe (HashMap Risk Natural)
$sel:pillarReviewSummaries:LensReview' :: LensReview -> Maybe [PillarReviewSummary]
$sel:notes:LensReview' :: LensReview -> Maybe Text
$sel:nextToken:LensReview' :: LensReview -> Maybe Text
$sel:lensVersion:LensReview' :: LensReview -> Maybe Text
$sel:lensStatus:LensReview' :: LensReview -> Maybe LensStatus
$sel:lensName:LensReview' :: LensReview -> Maybe Text
$sel:lensArn:LensReview' :: LensReview -> Maybe Text
$sel:lensAlias:LensReview' :: LensReview -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lensAlias
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lensArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lensName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LensStatus
lensStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lensVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
notes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [PillarReviewSummary]
pillarReviewSummaries
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Risk Natural)
riskCounts
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
updatedAt

instance Prelude.NFData LensReview where
  rnf :: LensReview -> ()
rnf LensReview' {Maybe [PillarReviewSummary]
Maybe Text
Maybe (HashMap Risk Natural)
Maybe POSIX
Maybe LensStatus
updatedAt :: Maybe POSIX
riskCounts :: Maybe (HashMap Risk Natural)
pillarReviewSummaries :: Maybe [PillarReviewSummary]
notes :: Maybe Text
nextToken :: Maybe Text
lensVersion :: Maybe Text
lensStatus :: Maybe LensStatus
lensName :: Maybe Text
lensArn :: Maybe Text
lensAlias :: Maybe Text
$sel:updatedAt:LensReview' :: LensReview -> Maybe POSIX
$sel:riskCounts:LensReview' :: LensReview -> Maybe (HashMap Risk Natural)
$sel:pillarReviewSummaries:LensReview' :: LensReview -> Maybe [PillarReviewSummary]
$sel:notes:LensReview' :: LensReview -> Maybe Text
$sel:nextToken:LensReview' :: LensReview -> Maybe Text
$sel:lensVersion:LensReview' :: LensReview -> Maybe Text
$sel:lensStatus:LensReview' :: LensReview -> Maybe LensStatus
$sel:lensName:LensReview' :: LensReview -> Maybe Text
$sel:lensArn:LensReview' :: LensReview -> Maybe Text
$sel:lensAlias:LensReview' :: LensReview -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lensAlias
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lensArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lensName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LensStatus
lensStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lensVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
notes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [PillarReviewSummary]
pillarReviewSummaries
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Risk Natural)
riskCounts
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
updatedAt