packages feed

stratosphere-dynamodb-1.0.0: gen/Stratosphere/DynamoDB/GlobalTable/ReplicaSpecificationProperty.hs

module Stratosphere.DynamoDB.GlobalTable.ReplicaSpecificationProperty (
        module Exports, ReplicaSpecificationProperty(..),
        mkReplicaSpecificationProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.DynamoDB.GlobalTable.ContributorInsightsSpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.DynamoDB.GlobalTable.KinesisStreamSpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.DynamoDB.GlobalTable.PointInTimeRecoverySpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.DynamoDB.GlobalTable.ReadOnDemandThroughputSettingsProperty as Exports
import {-# SOURCE #-} Stratosphere.DynamoDB.GlobalTable.ReadProvisionedThroughputSettingsProperty as Exports
import {-# SOURCE #-} Stratosphere.DynamoDB.GlobalTable.ReplicaGlobalSecondaryIndexSpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.DynamoDB.GlobalTable.ReplicaSSESpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.DynamoDB.GlobalTable.ReplicaStreamSpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.DynamoDB.GlobalTable.ResourcePolicyProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Tag
import Stratosphere.Value
data ReplicaSpecificationProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html>
    ReplicaSpecificationProperty {haddock_workaround_ :: (),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-contributorinsightsspecification>
                                  contributorInsightsSpecification :: (Prelude.Maybe ContributorInsightsSpecificationProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-deletionprotectionenabled>
                                  deletionProtectionEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-globalsecondaryindexes>
                                  globalSecondaryIndexes :: (Prelude.Maybe [ReplicaGlobalSecondaryIndexSpecificationProperty]),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-kinesisstreamspecification>
                                  kinesisStreamSpecification :: (Prelude.Maybe KinesisStreamSpecificationProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-pointintimerecoveryspecification>
                                  pointInTimeRecoverySpecification :: (Prelude.Maybe PointInTimeRecoverySpecificationProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-readondemandthroughputsettings>
                                  readOnDemandThroughputSettings :: (Prelude.Maybe ReadOnDemandThroughputSettingsProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-readprovisionedthroughputsettings>
                                  readProvisionedThroughputSettings :: (Prelude.Maybe ReadProvisionedThroughputSettingsProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-region>
                                  region :: (Value Prelude.Text),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-replicastreamspecification>
                                  replicaStreamSpecification :: (Prelude.Maybe ReplicaStreamSpecificationProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-resourcepolicy>
                                  resourcePolicy :: (Prelude.Maybe ResourcePolicyProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-ssespecification>
                                  sSESpecification :: (Prelude.Maybe ReplicaSSESpecificationProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-tableclass>
                                  tableClass :: (Prelude.Maybe (Value Prelude.Text)),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-tags>
                                  tags :: (Prelude.Maybe [Tag])}
  deriving stock (Prelude.Eq, Prelude.Show)
mkReplicaSpecificationProperty ::
  Value Prelude.Text -> ReplicaSpecificationProperty
mkReplicaSpecificationProperty region
  = ReplicaSpecificationProperty
      {haddock_workaround_ = (), region = region,
       contributorInsightsSpecification = Prelude.Nothing,
       deletionProtectionEnabled = Prelude.Nothing,
       globalSecondaryIndexes = Prelude.Nothing,
       kinesisStreamSpecification = Prelude.Nothing,
       pointInTimeRecoverySpecification = Prelude.Nothing,
       readOnDemandThroughputSettings = Prelude.Nothing,
       readProvisionedThroughputSettings = Prelude.Nothing,
       replicaStreamSpecification = Prelude.Nothing,
       resourcePolicy = Prelude.Nothing,
       sSESpecification = Prelude.Nothing, tableClass = Prelude.Nothing,
       tags = Prelude.Nothing}
instance ToResourceProperties ReplicaSpecificationProperty where
  toResourceProperties ReplicaSpecificationProperty {..}
    = ResourceProperties
        {awsType = "AWS::DynamoDB::GlobalTable.ReplicaSpecification",
         supportsTags = Prelude.True,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["Region" JSON..= region]
                           (Prelude.catMaybes
                              [(JSON..=) "ContributorInsightsSpecification"
                                 Prelude.<$> contributorInsightsSpecification,
                               (JSON..=) "DeletionProtectionEnabled"
                                 Prelude.<$> deletionProtectionEnabled,
                               (JSON..=) "GlobalSecondaryIndexes"
                                 Prelude.<$> globalSecondaryIndexes,
                               (JSON..=) "KinesisStreamSpecification"
                                 Prelude.<$> kinesisStreamSpecification,
                               (JSON..=) "PointInTimeRecoverySpecification"
                                 Prelude.<$> pointInTimeRecoverySpecification,
                               (JSON..=) "ReadOnDemandThroughputSettings"
                                 Prelude.<$> readOnDemandThroughputSettings,
                               (JSON..=) "ReadProvisionedThroughputSettings"
                                 Prelude.<$> readProvisionedThroughputSettings,
                               (JSON..=) "ReplicaStreamSpecification"
                                 Prelude.<$> replicaStreamSpecification,
                               (JSON..=) "ResourcePolicy" Prelude.<$> resourcePolicy,
                               (JSON..=) "SSESpecification" Prelude.<$> sSESpecification,
                               (JSON..=) "TableClass" Prelude.<$> tableClass,
                               (JSON..=) "Tags" Prelude.<$> tags]))}
instance JSON.ToJSON ReplicaSpecificationProperty where
  toJSON ReplicaSpecificationProperty {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["Region" JSON..= region]
              (Prelude.catMaybes
                 [(JSON..=) "ContributorInsightsSpecification"
                    Prelude.<$> contributorInsightsSpecification,
                  (JSON..=) "DeletionProtectionEnabled"
                    Prelude.<$> deletionProtectionEnabled,
                  (JSON..=) "GlobalSecondaryIndexes"
                    Prelude.<$> globalSecondaryIndexes,
                  (JSON..=) "KinesisStreamSpecification"
                    Prelude.<$> kinesisStreamSpecification,
                  (JSON..=) "PointInTimeRecoverySpecification"
                    Prelude.<$> pointInTimeRecoverySpecification,
                  (JSON..=) "ReadOnDemandThroughputSettings"
                    Prelude.<$> readOnDemandThroughputSettings,
                  (JSON..=) "ReadProvisionedThroughputSettings"
                    Prelude.<$> readProvisionedThroughputSettings,
                  (JSON..=) "ReplicaStreamSpecification"
                    Prelude.<$> replicaStreamSpecification,
                  (JSON..=) "ResourcePolicy" Prelude.<$> resourcePolicy,
                  (JSON..=) "SSESpecification" Prelude.<$> sSESpecification,
                  (JSON..=) "TableClass" Prelude.<$> tableClass,
                  (JSON..=) "Tags" Prelude.<$> tags])))
instance Property "ContributorInsightsSpecification" ReplicaSpecificationProperty where
  type PropertyType "ContributorInsightsSpecification" ReplicaSpecificationProperty = ContributorInsightsSpecificationProperty
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty
        {contributorInsightsSpecification = Prelude.pure newValue, ..}
instance Property "DeletionProtectionEnabled" ReplicaSpecificationProperty where
  type PropertyType "DeletionProtectionEnabled" ReplicaSpecificationProperty = Value Prelude.Bool
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty
        {deletionProtectionEnabled = Prelude.pure newValue, ..}
instance Property "GlobalSecondaryIndexes" ReplicaSpecificationProperty where
  type PropertyType "GlobalSecondaryIndexes" ReplicaSpecificationProperty = [ReplicaGlobalSecondaryIndexSpecificationProperty]
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty
        {globalSecondaryIndexes = Prelude.pure newValue, ..}
instance Property "KinesisStreamSpecification" ReplicaSpecificationProperty where
  type PropertyType "KinesisStreamSpecification" ReplicaSpecificationProperty = KinesisStreamSpecificationProperty
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty
        {kinesisStreamSpecification = Prelude.pure newValue, ..}
instance Property "PointInTimeRecoverySpecification" ReplicaSpecificationProperty where
  type PropertyType "PointInTimeRecoverySpecification" ReplicaSpecificationProperty = PointInTimeRecoverySpecificationProperty
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty
        {pointInTimeRecoverySpecification = Prelude.pure newValue, ..}
instance Property "ReadOnDemandThroughputSettings" ReplicaSpecificationProperty where
  type PropertyType "ReadOnDemandThroughputSettings" ReplicaSpecificationProperty = ReadOnDemandThroughputSettingsProperty
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty
        {readOnDemandThroughputSettings = Prelude.pure newValue, ..}
instance Property "ReadProvisionedThroughputSettings" ReplicaSpecificationProperty where
  type PropertyType "ReadProvisionedThroughputSettings" ReplicaSpecificationProperty = ReadProvisionedThroughputSettingsProperty
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty
        {readProvisionedThroughputSettings = Prelude.pure newValue, ..}
instance Property "Region" ReplicaSpecificationProperty where
  type PropertyType "Region" ReplicaSpecificationProperty = Value Prelude.Text
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty {region = newValue, ..}
instance Property "ReplicaStreamSpecification" ReplicaSpecificationProperty where
  type PropertyType "ReplicaStreamSpecification" ReplicaSpecificationProperty = ReplicaStreamSpecificationProperty
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty
        {replicaStreamSpecification = Prelude.pure newValue, ..}
instance Property "ResourcePolicy" ReplicaSpecificationProperty where
  type PropertyType "ResourcePolicy" ReplicaSpecificationProperty = ResourcePolicyProperty
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty
        {resourcePolicy = Prelude.pure newValue, ..}
instance Property "SSESpecification" ReplicaSpecificationProperty where
  type PropertyType "SSESpecification" ReplicaSpecificationProperty = ReplicaSSESpecificationProperty
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty
        {sSESpecification = Prelude.pure newValue, ..}
instance Property "TableClass" ReplicaSpecificationProperty where
  type PropertyType "TableClass" ReplicaSpecificationProperty = Value Prelude.Text
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty
        {tableClass = Prelude.pure newValue, ..}
instance Property "Tags" ReplicaSpecificationProperty where
  type PropertyType "Tags" ReplicaSpecificationProperty = [Tag]
  set newValue ReplicaSpecificationProperty {..}
    = ReplicaSpecificationProperty {tags = Prelude.pure newValue, ..}