{-# 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.DynamoDB.Types.SourceTableFeatureDetails
-- 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.DynamoDB.Types.SourceTableFeatureDetails where

import qualified Amazonka.Core as Core
import Amazonka.DynamoDB.Types.GlobalSecondaryIndexInfo
import Amazonka.DynamoDB.Types.LocalSecondaryIndexInfo
import Amazonka.DynamoDB.Types.SSEDescription
import Amazonka.DynamoDB.Types.StreamSpecification
import Amazonka.DynamoDB.Types.TimeToLiveDescription
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Contains the details of the features enabled on the table when the
-- backup was created. For example, LSIs, GSIs, streams, TTL.
--
-- /See:/ 'newSourceTableFeatureDetails' smart constructor.
data SourceTableFeatureDetails = SourceTableFeatureDetails'
  { -- | Stream settings on the table when the backup was created.
    SourceTableFeatureDetails -> Maybe StreamSpecification
streamDescription :: Prelude.Maybe StreamSpecification,
    -- | Represents the GSI properties for the table when the backup was created.
    -- It includes the IndexName, KeySchema, Projection, and
    -- ProvisionedThroughput for the GSIs on the table at the time of backup.
    SourceTableFeatureDetails -> Maybe [GlobalSecondaryIndexInfo]
globalSecondaryIndexes :: Prelude.Maybe [GlobalSecondaryIndexInfo],
    -- | Represents the LSI properties for the table when the backup was created.
    -- It includes the IndexName, KeySchema and Projection for the LSIs on the
    -- table at the time of backup.
    SourceTableFeatureDetails -> Maybe [LocalSecondaryIndexInfo]
localSecondaryIndexes :: Prelude.Maybe [LocalSecondaryIndexInfo],
    -- | The description of the server-side encryption status on the table when
    -- the backup was created.
    SourceTableFeatureDetails -> Maybe SSEDescription
sSEDescription :: Prelude.Maybe SSEDescription,
    -- | Time to Live settings on the table when the backup was created.
    SourceTableFeatureDetails -> Maybe TimeToLiveDescription
timeToLiveDescription :: Prelude.Maybe TimeToLiveDescription
  }
  deriving (SourceTableFeatureDetails -> SourceTableFeatureDetails -> Bool
(SourceTableFeatureDetails -> SourceTableFeatureDetails -> Bool)
-> (SourceTableFeatureDetails -> SourceTableFeatureDetails -> Bool)
-> Eq SourceTableFeatureDetails
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SourceTableFeatureDetails -> SourceTableFeatureDetails -> Bool
$c/= :: SourceTableFeatureDetails -> SourceTableFeatureDetails -> Bool
== :: SourceTableFeatureDetails -> SourceTableFeatureDetails -> Bool
$c== :: SourceTableFeatureDetails -> SourceTableFeatureDetails -> Bool
Prelude.Eq, ReadPrec [SourceTableFeatureDetails]
ReadPrec SourceTableFeatureDetails
Int -> ReadS SourceTableFeatureDetails
ReadS [SourceTableFeatureDetails]
(Int -> ReadS SourceTableFeatureDetails)
-> ReadS [SourceTableFeatureDetails]
-> ReadPrec SourceTableFeatureDetails
-> ReadPrec [SourceTableFeatureDetails]
-> Read SourceTableFeatureDetails
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SourceTableFeatureDetails]
$creadListPrec :: ReadPrec [SourceTableFeatureDetails]
readPrec :: ReadPrec SourceTableFeatureDetails
$creadPrec :: ReadPrec SourceTableFeatureDetails
readList :: ReadS [SourceTableFeatureDetails]
$creadList :: ReadS [SourceTableFeatureDetails]
readsPrec :: Int -> ReadS SourceTableFeatureDetails
$creadsPrec :: Int -> ReadS SourceTableFeatureDetails
Prelude.Read, Int -> SourceTableFeatureDetails -> ShowS
[SourceTableFeatureDetails] -> ShowS
SourceTableFeatureDetails -> String
(Int -> SourceTableFeatureDetails -> ShowS)
-> (SourceTableFeatureDetails -> String)
-> ([SourceTableFeatureDetails] -> ShowS)
-> Show SourceTableFeatureDetails
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SourceTableFeatureDetails] -> ShowS
$cshowList :: [SourceTableFeatureDetails] -> ShowS
show :: SourceTableFeatureDetails -> String
$cshow :: SourceTableFeatureDetails -> String
showsPrec :: Int -> SourceTableFeatureDetails -> ShowS
$cshowsPrec :: Int -> SourceTableFeatureDetails -> ShowS
Prelude.Show, (forall x.
 SourceTableFeatureDetails -> Rep SourceTableFeatureDetails x)
-> (forall x.
    Rep SourceTableFeatureDetails x -> SourceTableFeatureDetails)
-> Generic SourceTableFeatureDetails
forall x.
Rep SourceTableFeatureDetails x -> SourceTableFeatureDetails
forall x.
SourceTableFeatureDetails -> Rep SourceTableFeatureDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep SourceTableFeatureDetails x -> SourceTableFeatureDetails
$cfrom :: forall x.
SourceTableFeatureDetails -> Rep SourceTableFeatureDetails x
Prelude.Generic)

-- |
-- Create a value of 'SourceTableFeatureDetails' 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:
--
-- 'streamDescription', 'sourceTableFeatureDetails_streamDescription' - Stream settings on the table when the backup was created.
--
-- 'globalSecondaryIndexes', 'sourceTableFeatureDetails_globalSecondaryIndexes' - Represents the GSI properties for the table when the backup was created.
-- It includes the IndexName, KeySchema, Projection, and
-- ProvisionedThroughput for the GSIs on the table at the time of backup.
--
-- 'localSecondaryIndexes', 'sourceTableFeatureDetails_localSecondaryIndexes' - Represents the LSI properties for the table when the backup was created.
-- It includes the IndexName, KeySchema and Projection for the LSIs on the
-- table at the time of backup.
--
-- 'sSEDescription', 'sourceTableFeatureDetails_sSEDescription' - The description of the server-side encryption status on the table when
-- the backup was created.
--
-- 'timeToLiveDescription', 'sourceTableFeatureDetails_timeToLiveDescription' - Time to Live settings on the table when the backup was created.
newSourceTableFeatureDetails ::
  SourceTableFeatureDetails
newSourceTableFeatureDetails :: SourceTableFeatureDetails
newSourceTableFeatureDetails =
  SourceTableFeatureDetails' :: Maybe StreamSpecification
-> Maybe [GlobalSecondaryIndexInfo]
-> Maybe [LocalSecondaryIndexInfo]
-> Maybe SSEDescription
-> Maybe TimeToLiveDescription
-> SourceTableFeatureDetails
SourceTableFeatureDetails'
    { $sel:streamDescription:SourceTableFeatureDetails' :: Maybe StreamSpecification
streamDescription =
        Maybe StreamSpecification
forall a. Maybe a
Prelude.Nothing,
      $sel:globalSecondaryIndexes:SourceTableFeatureDetails' :: Maybe [GlobalSecondaryIndexInfo]
globalSecondaryIndexes = Maybe [GlobalSecondaryIndexInfo]
forall a. Maybe a
Prelude.Nothing,
      $sel:localSecondaryIndexes:SourceTableFeatureDetails' :: Maybe [LocalSecondaryIndexInfo]
localSecondaryIndexes = Maybe [LocalSecondaryIndexInfo]
forall a. Maybe a
Prelude.Nothing,
      $sel:sSEDescription:SourceTableFeatureDetails' :: Maybe SSEDescription
sSEDescription = Maybe SSEDescription
forall a. Maybe a
Prelude.Nothing,
      $sel:timeToLiveDescription:SourceTableFeatureDetails' :: Maybe TimeToLiveDescription
timeToLiveDescription = Maybe TimeToLiveDescription
forall a. Maybe a
Prelude.Nothing
    }

-- | Stream settings on the table when the backup was created.
sourceTableFeatureDetails_streamDescription :: Lens.Lens' SourceTableFeatureDetails (Prelude.Maybe StreamSpecification)
sourceTableFeatureDetails_streamDescription :: (Maybe StreamSpecification -> f (Maybe StreamSpecification))
-> SourceTableFeatureDetails -> f SourceTableFeatureDetails
sourceTableFeatureDetails_streamDescription = (SourceTableFeatureDetails -> Maybe StreamSpecification)
-> (SourceTableFeatureDetails
    -> Maybe StreamSpecification -> SourceTableFeatureDetails)
-> Lens
     SourceTableFeatureDetails
     SourceTableFeatureDetails
     (Maybe StreamSpecification)
     (Maybe StreamSpecification)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceTableFeatureDetails' {Maybe StreamSpecification
streamDescription :: Maybe StreamSpecification
$sel:streamDescription:SourceTableFeatureDetails' :: SourceTableFeatureDetails -> Maybe StreamSpecification
streamDescription} -> Maybe StreamSpecification
streamDescription) (\s :: SourceTableFeatureDetails
s@SourceTableFeatureDetails' {} Maybe StreamSpecification
a -> SourceTableFeatureDetails
s {$sel:streamDescription:SourceTableFeatureDetails' :: Maybe StreamSpecification
streamDescription = Maybe StreamSpecification
a} :: SourceTableFeatureDetails)

-- | Represents the GSI properties for the table when the backup was created.
-- It includes the IndexName, KeySchema, Projection, and
-- ProvisionedThroughput for the GSIs on the table at the time of backup.
sourceTableFeatureDetails_globalSecondaryIndexes :: Lens.Lens' SourceTableFeatureDetails (Prelude.Maybe [GlobalSecondaryIndexInfo])
sourceTableFeatureDetails_globalSecondaryIndexes :: (Maybe [GlobalSecondaryIndexInfo]
 -> f (Maybe [GlobalSecondaryIndexInfo]))
-> SourceTableFeatureDetails -> f SourceTableFeatureDetails
sourceTableFeatureDetails_globalSecondaryIndexes = (SourceTableFeatureDetails -> Maybe [GlobalSecondaryIndexInfo])
-> (SourceTableFeatureDetails
    -> Maybe [GlobalSecondaryIndexInfo] -> SourceTableFeatureDetails)
-> Lens
     SourceTableFeatureDetails
     SourceTableFeatureDetails
     (Maybe [GlobalSecondaryIndexInfo])
     (Maybe [GlobalSecondaryIndexInfo])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceTableFeatureDetails' {Maybe [GlobalSecondaryIndexInfo]
globalSecondaryIndexes :: Maybe [GlobalSecondaryIndexInfo]
$sel:globalSecondaryIndexes:SourceTableFeatureDetails' :: SourceTableFeatureDetails -> Maybe [GlobalSecondaryIndexInfo]
globalSecondaryIndexes} -> Maybe [GlobalSecondaryIndexInfo]
globalSecondaryIndexes) (\s :: SourceTableFeatureDetails
s@SourceTableFeatureDetails' {} Maybe [GlobalSecondaryIndexInfo]
a -> SourceTableFeatureDetails
s {$sel:globalSecondaryIndexes:SourceTableFeatureDetails' :: Maybe [GlobalSecondaryIndexInfo]
globalSecondaryIndexes = Maybe [GlobalSecondaryIndexInfo]
a} :: SourceTableFeatureDetails) ((Maybe [GlobalSecondaryIndexInfo]
  -> f (Maybe [GlobalSecondaryIndexInfo]))
 -> SourceTableFeatureDetails -> f SourceTableFeatureDetails)
-> ((Maybe [GlobalSecondaryIndexInfo]
     -> f (Maybe [GlobalSecondaryIndexInfo]))
    -> Maybe [GlobalSecondaryIndexInfo]
    -> f (Maybe [GlobalSecondaryIndexInfo]))
-> (Maybe [GlobalSecondaryIndexInfo]
    -> f (Maybe [GlobalSecondaryIndexInfo]))
-> SourceTableFeatureDetails
-> f SourceTableFeatureDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [GlobalSecondaryIndexInfo]
  [GlobalSecondaryIndexInfo]
  [GlobalSecondaryIndexInfo]
  [GlobalSecondaryIndexInfo]
-> Iso
     (Maybe [GlobalSecondaryIndexInfo])
     (Maybe [GlobalSecondaryIndexInfo])
     (Maybe [GlobalSecondaryIndexInfo])
     (Maybe [GlobalSecondaryIndexInfo])
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
  [GlobalSecondaryIndexInfo]
  [GlobalSecondaryIndexInfo]
  [GlobalSecondaryIndexInfo]
  [GlobalSecondaryIndexInfo]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Represents the LSI properties for the table when the backup was created.
-- It includes the IndexName, KeySchema and Projection for the LSIs on the
-- table at the time of backup.
sourceTableFeatureDetails_localSecondaryIndexes :: Lens.Lens' SourceTableFeatureDetails (Prelude.Maybe [LocalSecondaryIndexInfo])
sourceTableFeatureDetails_localSecondaryIndexes :: (Maybe [LocalSecondaryIndexInfo]
 -> f (Maybe [LocalSecondaryIndexInfo]))
-> SourceTableFeatureDetails -> f SourceTableFeatureDetails
sourceTableFeatureDetails_localSecondaryIndexes = (SourceTableFeatureDetails -> Maybe [LocalSecondaryIndexInfo])
-> (SourceTableFeatureDetails
    -> Maybe [LocalSecondaryIndexInfo] -> SourceTableFeatureDetails)
-> Lens
     SourceTableFeatureDetails
     SourceTableFeatureDetails
     (Maybe [LocalSecondaryIndexInfo])
     (Maybe [LocalSecondaryIndexInfo])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceTableFeatureDetails' {Maybe [LocalSecondaryIndexInfo]
localSecondaryIndexes :: Maybe [LocalSecondaryIndexInfo]
$sel:localSecondaryIndexes:SourceTableFeatureDetails' :: SourceTableFeatureDetails -> Maybe [LocalSecondaryIndexInfo]
localSecondaryIndexes} -> Maybe [LocalSecondaryIndexInfo]
localSecondaryIndexes) (\s :: SourceTableFeatureDetails
s@SourceTableFeatureDetails' {} Maybe [LocalSecondaryIndexInfo]
a -> SourceTableFeatureDetails
s {$sel:localSecondaryIndexes:SourceTableFeatureDetails' :: Maybe [LocalSecondaryIndexInfo]
localSecondaryIndexes = Maybe [LocalSecondaryIndexInfo]
a} :: SourceTableFeatureDetails) ((Maybe [LocalSecondaryIndexInfo]
  -> f (Maybe [LocalSecondaryIndexInfo]))
 -> SourceTableFeatureDetails -> f SourceTableFeatureDetails)
-> ((Maybe [LocalSecondaryIndexInfo]
     -> f (Maybe [LocalSecondaryIndexInfo]))
    -> Maybe [LocalSecondaryIndexInfo]
    -> f (Maybe [LocalSecondaryIndexInfo]))
-> (Maybe [LocalSecondaryIndexInfo]
    -> f (Maybe [LocalSecondaryIndexInfo]))
-> SourceTableFeatureDetails
-> f SourceTableFeatureDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [LocalSecondaryIndexInfo]
  [LocalSecondaryIndexInfo]
  [LocalSecondaryIndexInfo]
  [LocalSecondaryIndexInfo]
-> Iso
     (Maybe [LocalSecondaryIndexInfo])
     (Maybe [LocalSecondaryIndexInfo])
     (Maybe [LocalSecondaryIndexInfo])
     (Maybe [LocalSecondaryIndexInfo])
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
  [LocalSecondaryIndexInfo]
  [LocalSecondaryIndexInfo]
  [LocalSecondaryIndexInfo]
  [LocalSecondaryIndexInfo]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The description of the server-side encryption status on the table when
-- the backup was created.
sourceTableFeatureDetails_sSEDescription :: Lens.Lens' SourceTableFeatureDetails (Prelude.Maybe SSEDescription)
sourceTableFeatureDetails_sSEDescription :: (Maybe SSEDescription -> f (Maybe SSEDescription))
-> SourceTableFeatureDetails -> f SourceTableFeatureDetails
sourceTableFeatureDetails_sSEDescription = (SourceTableFeatureDetails -> Maybe SSEDescription)
-> (SourceTableFeatureDetails
    -> Maybe SSEDescription -> SourceTableFeatureDetails)
-> Lens
     SourceTableFeatureDetails
     SourceTableFeatureDetails
     (Maybe SSEDescription)
     (Maybe SSEDescription)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceTableFeatureDetails' {Maybe SSEDescription
sSEDescription :: Maybe SSEDescription
$sel:sSEDescription:SourceTableFeatureDetails' :: SourceTableFeatureDetails -> Maybe SSEDescription
sSEDescription} -> Maybe SSEDescription
sSEDescription) (\s :: SourceTableFeatureDetails
s@SourceTableFeatureDetails' {} Maybe SSEDescription
a -> SourceTableFeatureDetails
s {$sel:sSEDescription:SourceTableFeatureDetails' :: Maybe SSEDescription
sSEDescription = Maybe SSEDescription
a} :: SourceTableFeatureDetails)

-- | Time to Live settings on the table when the backup was created.
sourceTableFeatureDetails_timeToLiveDescription :: Lens.Lens' SourceTableFeatureDetails (Prelude.Maybe TimeToLiveDescription)
sourceTableFeatureDetails_timeToLiveDescription :: (Maybe TimeToLiveDescription -> f (Maybe TimeToLiveDescription))
-> SourceTableFeatureDetails -> f SourceTableFeatureDetails
sourceTableFeatureDetails_timeToLiveDescription = (SourceTableFeatureDetails -> Maybe TimeToLiveDescription)
-> (SourceTableFeatureDetails
    -> Maybe TimeToLiveDescription -> SourceTableFeatureDetails)
-> Lens
     SourceTableFeatureDetails
     SourceTableFeatureDetails
     (Maybe TimeToLiveDescription)
     (Maybe TimeToLiveDescription)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceTableFeatureDetails' {Maybe TimeToLiveDescription
timeToLiveDescription :: Maybe TimeToLiveDescription
$sel:timeToLiveDescription:SourceTableFeatureDetails' :: SourceTableFeatureDetails -> Maybe TimeToLiveDescription
timeToLiveDescription} -> Maybe TimeToLiveDescription
timeToLiveDescription) (\s :: SourceTableFeatureDetails
s@SourceTableFeatureDetails' {} Maybe TimeToLiveDescription
a -> SourceTableFeatureDetails
s {$sel:timeToLiveDescription:SourceTableFeatureDetails' :: Maybe TimeToLiveDescription
timeToLiveDescription = Maybe TimeToLiveDescription
a} :: SourceTableFeatureDetails)

instance Core.FromJSON SourceTableFeatureDetails where
  parseJSON :: Value -> Parser SourceTableFeatureDetails
parseJSON =
    String
-> (Object -> Parser SourceTableFeatureDetails)
-> Value
-> Parser SourceTableFeatureDetails
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"SourceTableFeatureDetails"
      ( \Object
x ->
          Maybe StreamSpecification
-> Maybe [GlobalSecondaryIndexInfo]
-> Maybe [LocalSecondaryIndexInfo]
-> Maybe SSEDescription
-> Maybe TimeToLiveDescription
-> SourceTableFeatureDetails
SourceTableFeatureDetails'
            (Maybe StreamSpecification
 -> Maybe [GlobalSecondaryIndexInfo]
 -> Maybe [LocalSecondaryIndexInfo]
 -> Maybe SSEDescription
 -> Maybe TimeToLiveDescription
 -> SourceTableFeatureDetails)
-> Parser (Maybe StreamSpecification)
-> Parser
     (Maybe [GlobalSecondaryIndexInfo]
      -> Maybe [LocalSecondaryIndexInfo]
      -> Maybe SSEDescription
      -> Maybe TimeToLiveDescription
      -> SourceTableFeatureDetails)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe StreamSpecification)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"StreamDescription")
            Parser
  (Maybe [GlobalSecondaryIndexInfo]
   -> Maybe [LocalSecondaryIndexInfo]
   -> Maybe SSEDescription
   -> Maybe TimeToLiveDescription
   -> SourceTableFeatureDetails)
-> Parser (Maybe [GlobalSecondaryIndexInfo])
-> Parser
     (Maybe [LocalSecondaryIndexInfo]
      -> Maybe SSEDescription
      -> Maybe TimeToLiveDescription
      -> SourceTableFeatureDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [GlobalSecondaryIndexInfo]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"GlobalSecondaryIndexes"
                            Parser (Maybe (Maybe [GlobalSecondaryIndexInfo]))
-> Maybe [GlobalSecondaryIndexInfo]
-> Parser (Maybe [GlobalSecondaryIndexInfo])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [GlobalSecondaryIndexInfo]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe [LocalSecondaryIndexInfo]
   -> Maybe SSEDescription
   -> Maybe TimeToLiveDescription
   -> SourceTableFeatureDetails)
-> Parser (Maybe [LocalSecondaryIndexInfo])
-> Parser
     (Maybe SSEDescription
      -> Maybe TimeToLiveDescription -> SourceTableFeatureDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [LocalSecondaryIndexInfo]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LocalSecondaryIndexes"
                            Parser (Maybe (Maybe [LocalSecondaryIndexInfo]))
-> Maybe [LocalSecondaryIndexInfo]
-> Parser (Maybe [LocalSecondaryIndexInfo])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [LocalSecondaryIndexInfo]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe SSEDescription
   -> Maybe TimeToLiveDescription -> SourceTableFeatureDetails)
-> Parser (Maybe SSEDescription)
-> Parser
     (Maybe TimeToLiveDescription -> SourceTableFeatureDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SSEDescription)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SSEDescription")
            Parser (Maybe TimeToLiveDescription -> SourceTableFeatureDetails)
-> Parser (Maybe TimeToLiveDescription)
-> Parser SourceTableFeatureDetails
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TimeToLiveDescription)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TimeToLiveDescription")
      )

instance Prelude.Hashable SourceTableFeatureDetails

instance Prelude.NFData SourceTableFeatureDetails