amazonka-dynamodb-2.0: gen/Amazonka/DynamoDB/Types/ReplicationGroupUpdate.hs
{-# 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.ReplicationGroupUpdate
-- 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.DynamoDB.Types.ReplicationGroupUpdate where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.DynamoDB.Types.AttributeValue
import Amazonka.DynamoDB.Types.CreateReplicationGroupMemberAction
import Amazonka.DynamoDB.Types.DeleteReplicationGroupMemberAction
import Amazonka.DynamoDB.Types.UpdateReplicationGroupMemberAction
import Amazonka.DynamoDB.Types.WriteRequest
import qualified Amazonka.Prelude as Prelude
-- | Represents one of the following:
--
-- - A new replica to be added to an existing regional table or global
-- table. This request invokes the @CreateTableReplica@ action in the
-- destination Region.
--
-- - New parameters for an existing replica. This request invokes the
-- @UpdateTable@ action in the destination Region.
--
-- - An existing replica to be deleted. The request invokes the
-- @DeleteTableReplica@ action in the destination Region, deleting the
-- replica and all if its items in the destination Region.
--
-- When you manually remove a table or global table replica, you do not
-- automatically remove any associated scalable targets, scaling policies,
-- or CloudWatch alarms.
--
-- /See:/ 'newReplicationGroupUpdate' smart constructor.
data ReplicationGroupUpdate = ReplicationGroupUpdate'
{ -- | The parameters required for creating a replica for the table.
create :: Prelude.Maybe CreateReplicationGroupMemberAction,
-- | The parameters required for deleting a replica for the table.
delete' :: Prelude.Maybe DeleteReplicationGroupMemberAction,
-- | The parameters required for updating a replica for the table.
update :: Prelude.Maybe UpdateReplicationGroupMemberAction
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'ReplicationGroupUpdate' 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:
--
-- 'create', 'replicationGroupUpdate_create' - The parameters required for creating a replica for the table.
--
-- 'delete'', 'replicationGroupUpdate_delete' - The parameters required for deleting a replica for the table.
--
-- 'update', 'replicationGroupUpdate_update' - The parameters required for updating a replica for the table.
newReplicationGroupUpdate ::
ReplicationGroupUpdate
newReplicationGroupUpdate =
ReplicationGroupUpdate'
{ create = Prelude.Nothing,
delete' = Prelude.Nothing,
update = Prelude.Nothing
}
-- | The parameters required for creating a replica for the table.
replicationGroupUpdate_create :: Lens.Lens' ReplicationGroupUpdate (Prelude.Maybe CreateReplicationGroupMemberAction)
replicationGroupUpdate_create = Lens.lens (\ReplicationGroupUpdate' {create} -> create) (\s@ReplicationGroupUpdate' {} a -> s {create = a} :: ReplicationGroupUpdate)
-- | The parameters required for deleting a replica for the table.
replicationGroupUpdate_delete :: Lens.Lens' ReplicationGroupUpdate (Prelude.Maybe DeleteReplicationGroupMemberAction)
replicationGroupUpdate_delete = Lens.lens (\ReplicationGroupUpdate' {delete'} -> delete') (\s@ReplicationGroupUpdate' {} a -> s {delete' = a} :: ReplicationGroupUpdate)
-- | The parameters required for updating a replica for the table.
replicationGroupUpdate_update :: Lens.Lens' ReplicationGroupUpdate (Prelude.Maybe UpdateReplicationGroupMemberAction)
replicationGroupUpdate_update = Lens.lens (\ReplicationGroupUpdate' {update} -> update) (\s@ReplicationGroupUpdate' {} a -> s {update = a} :: ReplicationGroupUpdate)
instance Prelude.Hashable ReplicationGroupUpdate where
hashWithSalt _salt ReplicationGroupUpdate' {..} =
_salt
`Prelude.hashWithSalt` create
`Prelude.hashWithSalt` delete'
`Prelude.hashWithSalt` update
instance Prelude.NFData ReplicationGroupUpdate where
rnf ReplicationGroupUpdate' {..} =
Prelude.rnf create
`Prelude.seq` Prelude.rnf delete'
`Prelude.seq` Prelude.rnf update
instance Data.ToJSON ReplicationGroupUpdate where
toJSON ReplicationGroupUpdate' {..} =
Data.object
( Prelude.catMaybes
[ ("Create" Data..=) Prelude.<$> create,
("Delete" Data..=) Prelude.<$> delete',
("Update" Data..=) Prelude.<$> update
]
)