{-# 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.CloudDirectory.Types.BatchWriteOperation
-- 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.CloudDirectory.Types.BatchWriteOperation where

import Amazonka.CloudDirectory.Types.BatchAddFacetToObject
import Amazonka.CloudDirectory.Types.BatchAttachObject
import Amazonka.CloudDirectory.Types.BatchAttachPolicy
import Amazonka.CloudDirectory.Types.BatchAttachToIndex
import Amazonka.CloudDirectory.Types.BatchAttachTypedLink
import Amazonka.CloudDirectory.Types.BatchCreateIndex
import Amazonka.CloudDirectory.Types.BatchCreateObject
import Amazonka.CloudDirectory.Types.BatchDeleteObject
import Amazonka.CloudDirectory.Types.BatchDetachFromIndex
import Amazonka.CloudDirectory.Types.BatchDetachObject
import Amazonka.CloudDirectory.Types.BatchDetachPolicy
import Amazonka.CloudDirectory.Types.BatchDetachTypedLink
import Amazonka.CloudDirectory.Types.BatchRemoveFacetFromObject
import Amazonka.CloudDirectory.Types.BatchUpdateLinkAttributes
import Amazonka.CloudDirectory.Types.BatchUpdateObjectAttributes
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

-- | Represents the output of a @BatchWrite@ operation.
--
-- /See:/ 'newBatchWriteOperation' smart constructor.
data BatchWriteOperation = BatchWriteOperation'
  { -- | A batch operation that adds a facet to an object.
    BatchWriteOperation -> Maybe BatchAddFacetToObject
addFacetToObject :: Prelude.Maybe BatchAddFacetToObject,
    -- | Attaches an object to a Directory.
    BatchWriteOperation -> Maybe BatchAttachObject
attachObject :: Prelude.Maybe BatchAttachObject,
    -- | Attaches a policy object to a regular object. An object can have a
    -- limited number of attached policies.
    BatchWriteOperation -> Maybe BatchAttachPolicy
attachPolicy :: Prelude.Maybe BatchAttachPolicy,
    -- | Attaches the specified object to the specified index.
    BatchWriteOperation -> Maybe BatchAttachToIndex
attachToIndex :: Prelude.Maybe BatchAttachToIndex,
    -- | Attaches a typed link to a specified source and target object. For more
    -- information, see
    -- <https://docs.aws.amazon.com/clouddirectory/latest/developerguide/directory_objects_links.html#directory_objects_links_typedlink Typed Links>.
    BatchWriteOperation -> Maybe BatchAttachTypedLink
attachTypedLink :: Prelude.Maybe BatchAttachTypedLink,
    -- | Creates an index object. See
    -- <https://docs.aws.amazon.com/clouddirectory/latest/developerguide/indexing_search.htm Indexing and search>
    -- for more information.
    BatchWriteOperation -> Maybe BatchCreateIndex
createIndex :: Prelude.Maybe BatchCreateIndex,
    -- | Creates an object.
    BatchWriteOperation -> Maybe BatchCreateObject
createObject :: Prelude.Maybe BatchCreateObject,
    -- | Deletes an object in a Directory.
    BatchWriteOperation -> Maybe BatchDeleteObject
deleteObject :: Prelude.Maybe BatchDeleteObject,
    -- | Detaches the specified object from the specified index.
    BatchWriteOperation -> Maybe BatchDetachFromIndex
detachFromIndex :: Prelude.Maybe BatchDetachFromIndex,
    -- | Detaches an object from a Directory.
    BatchWriteOperation -> Maybe BatchDetachObject
detachObject :: Prelude.Maybe BatchDetachObject,
    -- | Detaches a policy from a Directory.
    BatchWriteOperation -> Maybe BatchDetachPolicy
detachPolicy :: Prelude.Maybe BatchDetachPolicy,
    -- | Detaches a typed link from a specified source and target object. For
    -- more information, see
    -- <https://docs.aws.amazon.com/clouddirectory/latest/developerguide/directory_objects_links.html#directory_objects_links_typedlink Typed Links>.
    BatchWriteOperation -> Maybe BatchDetachTypedLink
detachTypedLink :: Prelude.Maybe BatchDetachTypedLink,
    -- | A batch operation that removes a facet from an object.
    BatchWriteOperation -> Maybe BatchRemoveFacetFromObject
removeFacetFromObject :: Prelude.Maybe BatchRemoveFacetFromObject,
    -- | Updates a given object\'s attributes.
    BatchWriteOperation -> Maybe BatchUpdateLinkAttributes
updateLinkAttributes :: Prelude.Maybe BatchUpdateLinkAttributes,
    -- | Updates a given object\'s attributes.
    BatchWriteOperation -> Maybe BatchUpdateObjectAttributes
updateObjectAttributes :: Prelude.Maybe BatchUpdateObjectAttributes
  }
  deriving (BatchWriteOperation -> BatchWriteOperation -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BatchWriteOperation -> BatchWriteOperation -> Bool
$c/= :: BatchWriteOperation -> BatchWriteOperation -> Bool
== :: BatchWriteOperation -> BatchWriteOperation -> Bool
$c== :: BatchWriteOperation -> BatchWriteOperation -> Bool
Prelude.Eq, ReadPrec [BatchWriteOperation]
ReadPrec BatchWriteOperation
Int -> ReadS BatchWriteOperation
ReadS [BatchWriteOperation]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [BatchWriteOperation]
$creadListPrec :: ReadPrec [BatchWriteOperation]
readPrec :: ReadPrec BatchWriteOperation
$creadPrec :: ReadPrec BatchWriteOperation
readList :: ReadS [BatchWriteOperation]
$creadList :: ReadS [BatchWriteOperation]
readsPrec :: Int -> ReadS BatchWriteOperation
$creadsPrec :: Int -> ReadS BatchWriteOperation
Prelude.Read, Int -> BatchWriteOperation -> ShowS
[BatchWriteOperation] -> ShowS
BatchWriteOperation -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BatchWriteOperation] -> ShowS
$cshowList :: [BatchWriteOperation] -> ShowS
show :: BatchWriteOperation -> String
$cshow :: BatchWriteOperation -> String
showsPrec :: Int -> BatchWriteOperation -> ShowS
$cshowsPrec :: Int -> BatchWriteOperation -> ShowS
Prelude.Show, forall x. Rep BatchWriteOperation x -> BatchWriteOperation
forall x. BatchWriteOperation -> Rep BatchWriteOperation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep BatchWriteOperation x -> BatchWriteOperation
$cfrom :: forall x. BatchWriteOperation -> Rep BatchWriteOperation x
Prelude.Generic)

-- |
-- Create a value of 'BatchWriteOperation' 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:
--
-- 'addFacetToObject', 'batchWriteOperation_addFacetToObject' - A batch operation that adds a facet to an object.
--
-- 'attachObject', 'batchWriteOperation_attachObject' - Attaches an object to a Directory.
--
-- 'attachPolicy', 'batchWriteOperation_attachPolicy' - Attaches a policy object to a regular object. An object can have a
-- limited number of attached policies.
--
-- 'attachToIndex', 'batchWriteOperation_attachToIndex' - Attaches the specified object to the specified index.
--
-- 'attachTypedLink', 'batchWriteOperation_attachTypedLink' - Attaches a typed link to a specified source and target object. For more
-- information, see
-- <https://docs.aws.amazon.com/clouddirectory/latest/developerguide/directory_objects_links.html#directory_objects_links_typedlink Typed Links>.
--
-- 'createIndex', 'batchWriteOperation_createIndex' - Creates an index object. See
-- <https://docs.aws.amazon.com/clouddirectory/latest/developerguide/indexing_search.htm Indexing and search>
-- for more information.
--
-- 'createObject', 'batchWriteOperation_createObject' - Creates an object.
--
-- 'deleteObject', 'batchWriteOperation_deleteObject' - Deletes an object in a Directory.
--
-- 'detachFromIndex', 'batchWriteOperation_detachFromIndex' - Detaches the specified object from the specified index.
--
-- 'detachObject', 'batchWriteOperation_detachObject' - Detaches an object from a Directory.
--
-- 'detachPolicy', 'batchWriteOperation_detachPolicy' - Detaches a policy from a Directory.
--
-- 'detachTypedLink', 'batchWriteOperation_detachTypedLink' - Detaches a typed link from a specified source and target object. For
-- more information, see
-- <https://docs.aws.amazon.com/clouddirectory/latest/developerguide/directory_objects_links.html#directory_objects_links_typedlink Typed Links>.
--
-- 'removeFacetFromObject', 'batchWriteOperation_removeFacetFromObject' - A batch operation that removes a facet from an object.
--
-- 'updateLinkAttributes', 'batchWriteOperation_updateLinkAttributes' - Updates a given object\'s attributes.
--
-- 'updateObjectAttributes', 'batchWriteOperation_updateObjectAttributes' - Updates a given object\'s attributes.
newBatchWriteOperation ::
  BatchWriteOperation
newBatchWriteOperation :: BatchWriteOperation
newBatchWriteOperation =
  BatchWriteOperation'
    { $sel:addFacetToObject:BatchWriteOperation' :: Maybe BatchAddFacetToObject
addFacetToObject =
        forall a. Maybe a
Prelude.Nothing,
      $sel:attachObject:BatchWriteOperation' :: Maybe BatchAttachObject
attachObject = forall a. Maybe a
Prelude.Nothing,
      $sel:attachPolicy:BatchWriteOperation' :: Maybe BatchAttachPolicy
attachPolicy = forall a. Maybe a
Prelude.Nothing,
      $sel:attachToIndex:BatchWriteOperation' :: Maybe BatchAttachToIndex
attachToIndex = forall a. Maybe a
Prelude.Nothing,
      $sel:attachTypedLink:BatchWriteOperation' :: Maybe BatchAttachTypedLink
attachTypedLink = forall a. Maybe a
Prelude.Nothing,
      $sel:createIndex:BatchWriteOperation' :: Maybe BatchCreateIndex
createIndex = forall a. Maybe a
Prelude.Nothing,
      $sel:createObject:BatchWriteOperation' :: Maybe BatchCreateObject
createObject = forall a. Maybe a
Prelude.Nothing,
      $sel:deleteObject:BatchWriteOperation' :: Maybe BatchDeleteObject
deleteObject = forall a. Maybe a
Prelude.Nothing,
      $sel:detachFromIndex:BatchWriteOperation' :: Maybe BatchDetachFromIndex
detachFromIndex = forall a. Maybe a
Prelude.Nothing,
      $sel:detachObject:BatchWriteOperation' :: Maybe BatchDetachObject
detachObject = forall a. Maybe a
Prelude.Nothing,
      $sel:detachPolicy:BatchWriteOperation' :: Maybe BatchDetachPolicy
detachPolicy = forall a. Maybe a
Prelude.Nothing,
      $sel:detachTypedLink:BatchWriteOperation' :: Maybe BatchDetachTypedLink
detachTypedLink = forall a. Maybe a
Prelude.Nothing,
      $sel:removeFacetFromObject:BatchWriteOperation' :: Maybe BatchRemoveFacetFromObject
removeFacetFromObject = forall a. Maybe a
Prelude.Nothing,
      $sel:updateLinkAttributes:BatchWriteOperation' :: Maybe BatchUpdateLinkAttributes
updateLinkAttributes = forall a. Maybe a
Prelude.Nothing,
      $sel:updateObjectAttributes:BatchWriteOperation' :: Maybe BatchUpdateObjectAttributes
updateObjectAttributes = forall a. Maybe a
Prelude.Nothing
    }

-- | A batch operation that adds a facet to an object.
batchWriteOperation_addFacetToObject :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchAddFacetToObject)
batchWriteOperation_addFacetToObject :: Lens' BatchWriteOperation (Maybe BatchAddFacetToObject)
batchWriteOperation_addFacetToObject = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchAddFacetToObject
addFacetToObject :: Maybe BatchAddFacetToObject
$sel:addFacetToObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAddFacetToObject
addFacetToObject} -> Maybe BatchAddFacetToObject
addFacetToObject) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchAddFacetToObject
a -> BatchWriteOperation
s {$sel:addFacetToObject:BatchWriteOperation' :: Maybe BatchAddFacetToObject
addFacetToObject = Maybe BatchAddFacetToObject
a} :: BatchWriteOperation)

-- | Attaches an object to a Directory.
batchWriteOperation_attachObject :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchAttachObject)
batchWriteOperation_attachObject :: Lens' BatchWriteOperation (Maybe BatchAttachObject)
batchWriteOperation_attachObject = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchAttachObject
attachObject :: Maybe BatchAttachObject
$sel:attachObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachObject
attachObject} -> Maybe BatchAttachObject
attachObject) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchAttachObject
a -> BatchWriteOperation
s {$sel:attachObject:BatchWriteOperation' :: Maybe BatchAttachObject
attachObject = Maybe BatchAttachObject
a} :: BatchWriteOperation)

-- | Attaches a policy object to a regular object. An object can have a
-- limited number of attached policies.
batchWriteOperation_attachPolicy :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchAttachPolicy)
batchWriteOperation_attachPolicy :: Lens' BatchWriteOperation (Maybe BatchAttachPolicy)
batchWriteOperation_attachPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchAttachPolicy
attachPolicy :: Maybe BatchAttachPolicy
$sel:attachPolicy:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachPolicy
attachPolicy} -> Maybe BatchAttachPolicy
attachPolicy) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchAttachPolicy
a -> BatchWriteOperation
s {$sel:attachPolicy:BatchWriteOperation' :: Maybe BatchAttachPolicy
attachPolicy = Maybe BatchAttachPolicy
a} :: BatchWriteOperation)

-- | Attaches the specified object to the specified index.
batchWriteOperation_attachToIndex :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchAttachToIndex)
batchWriteOperation_attachToIndex :: Lens' BatchWriteOperation (Maybe BatchAttachToIndex)
batchWriteOperation_attachToIndex = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchAttachToIndex
attachToIndex :: Maybe BatchAttachToIndex
$sel:attachToIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachToIndex
attachToIndex} -> Maybe BatchAttachToIndex
attachToIndex) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchAttachToIndex
a -> BatchWriteOperation
s {$sel:attachToIndex:BatchWriteOperation' :: Maybe BatchAttachToIndex
attachToIndex = Maybe BatchAttachToIndex
a} :: BatchWriteOperation)

-- | Attaches a typed link to a specified source and target object. For more
-- information, see
-- <https://docs.aws.amazon.com/clouddirectory/latest/developerguide/directory_objects_links.html#directory_objects_links_typedlink Typed Links>.
batchWriteOperation_attachTypedLink :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchAttachTypedLink)
batchWriteOperation_attachTypedLink :: Lens' BatchWriteOperation (Maybe BatchAttachTypedLink)
batchWriteOperation_attachTypedLink = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchAttachTypedLink
attachTypedLink :: Maybe BatchAttachTypedLink
$sel:attachTypedLink:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachTypedLink
attachTypedLink} -> Maybe BatchAttachTypedLink
attachTypedLink) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchAttachTypedLink
a -> BatchWriteOperation
s {$sel:attachTypedLink:BatchWriteOperation' :: Maybe BatchAttachTypedLink
attachTypedLink = Maybe BatchAttachTypedLink
a} :: BatchWriteOperation)

-- | Creates an index object. See
-- <https://docs.aws.amazon.com/clouddirectory/latest/developerguide/indexing_search.htm Indexing and search>
-- for more information.
batchWriteOperation_createIndex :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchCreateIndex)
batchWriteOperation_createIndex :: Lens' BatchWriteOperation (Maybe BatchCreateIndex)
batchWriteOperation_createIndex = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchCreateIndex
createIndex :: Maybe BatchCreateIndex
$sel:createIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchCreateIndex
createIndex} -> Maybe BatchCreateIndex
createIndex) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchCreateIndex
a -> BatchWriteOperation
s {$sel:createIndex:BatchWriteOperation' :: Maybe BatchCreateIndex
createIndex = Maybe BatchCreateIndex
a} :: BatchWriteOperation)

-- | Creates an object.
batchWriteOperation_createObject :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchCreateObject)
batchWriteOperation_createObject :: Lens' BatchWriteOperation (Maybe BatchCreateObject)
batchWriteOperation_createObject = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchCreateObject
createObject :: Maybe BatchCreateObject
$sel:createObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchCreateObject
createObject} -> Maybe BatchCreateObject
createObject) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchCreateObject
a -> BatchWriteOperation
s {$sel:createObject:BatchWriteOperation' :: Maybe BatchCreateObject
createObject = Maybe BatchCreateObject
a} :: BatchWriteOperation)

-- | Deletes an object in a Directory.
batchWriteOperation_deleteObject :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchDeleteObject)
batchWriteOperation_deleteObject :: Lens' BatchWriteOperation (Maybe BatchDeleteObject)
batchWriteOperation_deleteObject = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchDeleteObject
deleteObject :: Maybe BatchDeleteObject
$sel:deleteObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDeleteObject
deleteObject} -> Maybe BatchDeleteObject
deleteObject) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchDeleteObject
a -> BatchWriteOperation
s {$sel:deleteObject:BatchWriteOperation' :: Maybe BatchDeleteObject
deleteObject = Maybe BatchDeleteObject
a} :: BatchWriteOperation)

-- | Detaches the specified object from the specified index.
batchWriteOperation_detachFromIndex :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchDetachFromIndex)
batchWriteOperation_detachFromIndex :: Lens' BatchWriteOperation (Maybe BatchDetachFromIndex)
batchWriteOperation_detachFromIndex = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchDetachFromIndex
detachFromIndex :: Maybe BatchDetachFromIndex
$sel:detachFromIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachFromIndex
detachFromIndex} -> Maybe BatchDetachFromIndex
detachFromIndex) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchDetachFromIndex
a -> BatchWriteOperation
s {$sel:detachFromIndex:BatchWriteOperation' :: Maybe BatchDetachFromIndex
detachFromIndex = Maybe BatchDetachFromIndex
a} :: BatchWriteOperation)

-- | Detaches an object from a Directory.
batchWriteOperation_detachObject :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchDetachObject)
batchWriteOperation_detachObject :: Lens' BatchWriteOperation (Maybe BatchDetachObject)
batchWriteOperation_detachObject = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchDetachObject
detachObject :: Maybe BatchDetachObject
$sel:detachObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachObject
detachObject} -> Maybe BatchDetachObject
detachObject) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchDetachObject
a -> BatchWriteOperation
s {$sel:detachObject:BatchWriteOperation' :: Maybe BatchDetachObject
detachObject = Maybe BatchDetachObject
a} :: BatchWriteOperation)

-- | Detaches a policy from a Directory.
batchWriteOperation_detachPolicy :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchDetachPolicy)
batchWriteOperation_detachPolicy :: Lens' BatchWriteOperation (Maybe BatchDetachPolicy)
batchWriteOperation_detachPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchDetachPolicy
detachPolicy :: Maybe BatchDetachPolicy
$sel:detachPolicy:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachPolicy
detachPolicy} -> Maybe BatchDetachPolicy
detachPolicy) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchDetachPolicy
a -> BatchWriteOperation
s {$sel:detachPolicy:BatchWriteOperation' :: Maybe BatchDetachPolicy
detachPolicy = Maybe BatchDetachPolicy
a} :: BatchWriteOperation)

-- | Detaches a typed link from a specified source and target object. For
-- more information, see
-- <https://docs.aws.amazon.com/clouddirectory/latest/developerguide/directory_objects_links.html#directory_objects_links_typedlink Typed Links>.
batchWriteOperation_detachTypedLink :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchDetachTypedLink)
batchWriteOperation_detachTypedLink :: Lens' BatchWriteOperation (Maybe BatchDetachTypedLink)
batchWriteOperation_detachTypedLink = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchDetachTypedLink
detachTypedLink :: Maybe BatchDetachTypedLink
$sel:detachTypedLink:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachTypedLink
detachTypedLink} -> Maybe BatchDetachTypedLink
detachTypedLink) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchDetachTypedLink
a -> BatchWriteOperation
s {$sel:detachTypedLink:BatchWriteOperation' :: Maybe BatchDetachTypedLink
detachTypedLink = Maybe BatchDetachTypedLink
a} :: BatchWriteOperation)

-- | A batch operation that removes a facet from an object.
batchWriteOperation_removeFacetFromObject :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchRemoveFacetFromObject)
batchWriteOperation_removeFacetFromObject :: Lens' BatchWriteOperation (Maybe BatchRemoveFacetFromObject)
batchWriteOperation_removeFacetFromObject = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchRemoveFacetFromObject
removeFacetFromObject :: Maybe BatchRemoveFacetFromObject
$sel:removeFacetFromObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchRemoveFacetFromObject
removeFacetFromObject} -> Maybe BatchRemoveFacetFromObject
removeFacetFromObject) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchRemoveFacetFromObject
a -> BatchWriteOperation
s {$sel:removeFacetFromObject:BatchWriteOperation' :: Maybe BatchRemoveFacetFromObject
removeFacetFromObject = Maybe BatchRemoveFacetFromObject
a} :: BatchWriteOperation)

-- | Updates a given object\'s attributes.
batchWriteOperation_updateLinkAttributes :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchUpdateLinkAttributes)
batchWriteOperation_updateLinkAttributes :: Lens' BatchWriteOperation (Maybe BatchUpdateLinkAttributes)
batchWriteOperation_updateLinkAttributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchUpdateLinkAttributes
updateLinkAttributes :: Maybe BatchUpdateLinkAttributes
$sel:updateLinkAttributes:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchUpdateLinkAttributes
updateLinkAttributes} -> Maybe BatchUpdateLinkAttributes
updateLinkAttributes) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchUpdateLinkAttributes
a -> BatchWriteOperation
s {$sel:updateLinkAttributes:BatchWriteOperation' :: Maybe BatchUpdateLinkAttributes
updateLinkAttributes = Maybe BatchUpdateLinkAttributes
a} :: BatchWriteOperation)

-- | Updates a given object\'s attributes.
batchWriteOperation_updateObjectAttributes :: Lens.Lens' BatchWriteOperation (Prelude.Maybe BatchUpdateObjectAttributes)
batchWriteOperation_updateObjectAttributes :: Lens' BatchWriteOperation (Maybe BatchUpdateObjectAttributes)
batchWriteOperation_updateObjectAttributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchWriteOperation' {Maybe BatchUpdateObjectAttributes
updateObjectAttributes :: Maybe BatchUpdateObjectAttributes
$sel:updateObjectAttributes:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchUpdateObjectAttributes
updateObjectAttributes} -> Maybe BatchUpdateObjectAttributes
updateObjectAttributes) (\s :: BatchWriteOperation
s@BatchWriteOperation' {} Maybe BatchUpdateObjectAttributes
a -> BatchWriteOperation
s {$sel:updateObjectAttributes:BatchWriteOperation' :: Maybe BatchUpdateObjectAttributes
updateObjectAttributes = Maybe BatchUpdateObjectAttributes
a} :: BatchWriteOperation)

instance Prelude.Hashable BatchWriteOperation where
  hashWithSalt :: Int -> BatchWriteOperation -> Int
hashWithSalt Int
_salt BatchWriteOperation' {Maybe BatchDetachPolicy
Maybe BatchDetachObject
Maybe BatchDetachFromIndex
Maybe BatchDeleteObject
Maybe BatchCreateIndex
Maybe BatchAttachToIndex
Maybe BatchAttachPolicy
Maybe BatchAttachObject
Maybe BatchRemoveFacetFromObject
Maybe BatchCreateObject
Maybe BatchAddFacetToObject
Maybe BatchAttachTypedLink
Maybe BatchDetachTypedLink
Maybe BatchUpdateObjectAttributes
Maybe BatchUpdateLinkAttributes
updateObjectAttributes :: Maybe BatchUpdateObjectAttributes
updateLinkAttributes :: Maybe BatchUpdateLinkAttributes
removeFacetFromObject :: Maybe BatchRemoveFacetFromObject
detachTypedLink :: Maybe BatchDetachTypedLink
detachPolicy :: Maybe BatchDetachPolicy
detachObject :: Maybe BatchDetachObject
detachFromIndex :: Maybe BatchDetachFromIndex
deleteObject :: Maybe BatchDeleteObject
createObject :: Maybe BatchCreateObject
createIndex :: Maybe BatchCreateIndex
attachTypedLink :: Maybe BatchAttachTypedLink
attachToIndex :: Maybe BatchAttachToIndex
attachPolicy :: Maybe BatchAttachPolicy
attachObject :: Maybe BatchAttachObject
addFacetToObject :: Maybe BatchAddFacetToObject
$sel:updateObjectAttributes:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchUpdateObjectAttributes
$sel:updateLinkAttributes:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchUpdateLinkAttributes
$sel:removeFacetFromObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchRemoveFacetFromObject
$sel:detachTypedLink:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachTypedLink
$sel:detachPolicy:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachPolicy
$sel:detachObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachObject
$sel:detachFromIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachFromIndex
$sel:deleteObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDeleteObject
$sel:createObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchCreateObject
$sel:createIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchCreateIndex
$sel:attachTypedLink:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachTypedLink
$sel:attachToIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachToIndex
$sel:attachPolicy:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachPolicy
$sel:attachObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachObject
$sel:addFacetToObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAddFacetToObject
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchAddFacetToObject
addFacetToObject
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchAttachObject
attachObject
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchAttachPolicy
attachPolicy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchAttachToIndex
attachToIndex
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchAttachTypedLink
attachTypedLink
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchCreateIndex
createIndex
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchCreateObject
createObject
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchDeleteObject
deleteObject
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchDetachFromIndex
detachFromIndex
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchDetachObject
detachObject
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchDetachPolicy
detachPolicy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchDetachTypedLink
detachTypedLink
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchRemoveFacetFromObject
removeFacetFromObject
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchUpdateLinkAttributes
updateLinkAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchUpdateObjectAttributes
updateObjectAttributes

instance Prelude.NFData BatchWriteOperation where
  rnf :: BatchWriteOperation -> ()
rnf BatchWriteOperation' {Maybe BatchDetachPolicy
Maybe BatchDetachObject
Maybe BatchDetachFromIndex
Maybe BatchDeleteObject
Maybe BatchCreateIndex
Maybe BatchAttachToIndex
Maybe BatchAttachPolicy
Maybe BatchAttachObject
Maybe BatchRemoveFacetFromObject
Maybe BatchCreateObject
Maybe BatchAddFacetToObject
Maybe BatchAttachTypedLink
Maybe BatchDetachTypedLink
Maybe BatchUpdateObjectAttributes
Maybe BatchUpdateLinkAttributes
updateObjectAttributes :: Maybe BatchUpdateObjectAttributes
updateLinkAttributes :: Maybe BatchUpdateLinkAttributes
removeFacetFromObject :: Maybe BatchRemoveFacetFromObject
detachTypedLink :: Maybe BatchDetachTypedLink
detachPolicy :: Maybe BatchDetachPolicy
detachObject :: Maybe BatchDetachObject
detachFromIndex :: Maybe BatchDetachFromIndex
deleteObject :: Maybe BatchDeleteObject
createObject :: Maybe BatchCreateObject
createIndex :: Maybe BatchCreateIndex
attachTypedLink :: Maybe BatchAttachTypedLink
attachToIndex :: Maybe BatchAttachToIndex
attachPolicy :: Maybe BatchAttachPolicy
attachObject :: Maybe BatchAttachObject
addFacetToObject :: Maybe BatchAddFacetToObject
$sel:updateObjectAttributes:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchUpdateObjectAttributes
$sel:updateLinkAttributes:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchUpdateLinkAttributes
$sel:removeFacetFromObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchRemoveFacetFromObject
$sel:detachTypedLink:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachTypedLink
$sel:detachPolicy:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachPolicy
$sel:detachObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachObject
$sel:detachFromIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachFromIndex
$sel:deleteObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDeleteObject
$sel:createObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchCreateObject
$sel:createIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchCreateIndex
$sel:attachTypedLink:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachTypedLink
$sel:attachToIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachToIndex
$sel:attachPolicy:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachPolicy
$sel:attachObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachObject
$sel:addFacetToObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAddFacetToObject
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchAddFacetToObject
addFacetToObject
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchAttachObject
attachObject
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchAttachPolicy
attachPolicy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchAttachToIndex
attachToIndex
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchAttachTypedLink
attachTypedLink
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchCreateIndex
createIndex
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchCreateObject
createObject
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchDeleteObject
deleteObject
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchDetachFromIndex
detachFromIndex
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchDetachObject
detachObject
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchDetachPolicy
detachPolicy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchDetachTypedLink
detachTypedLink
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchRemoveFacetFromObject
removeFacetFromObject
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchUpdateLinkAttributes
updateLinkAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchUpdateObjectAttributes
updateObjectAttributes

instance Data.ToJSON BatchWriteOperation where
  toJSON :: BatchWriteOperation -> Value
toJSON BatchWriteOperation' {Maybe BatchDetachPolicy
Maybe BatchDetachObject
Maybe BatchDetachFromIndex
Maybe BatchDeleteObject
Maybe BatchCreateIndex
Maybe BatchAttachToIndex
Maybe BatchAttachPolicy
Maybe BatchAttachObject
Maybe BatchRemoveFacetFromObject
Maybe BatchCreateObject
Maybe BatchAddFacetToObject
Maybe BatchAttachTypedLink
Maybe BatchDetachTypedLink
Maybe BatchUpdateObjectAttributes
Maybe BatchUpdateLinkAttributes
updateObjectAttributes :: Maybe BatchUpdateObjectAttributes
updateLinkAttributes :: Maybe BatchUpdateLinkAttributes
removeFacetFromObject :: Maybe BatchRemoveFacetFromObject
detachTypedLink :: Maybe BatchDetachTypedLink
detachPolicy :: Maybe BatchDetachPolicy
detachObject :: Maybe BatchDetachObject
detachFromIndex :: Maybe BatchDetachFromIndex
deleteObject :: Maybe BatchDeleteObject
createObject :: Maybe BatchCreateObject
createIndex :: Maybe BatchCreateIndex
attachTypedLink :: Maybe BatchAttachTypedLink
attachToIndex :: Maybe BatchAttachToIndex
attachPolicy :: Maybe BatchAttachPolicy
attachObject :: Maybe BatchAttachObject
addFacetToObject :: Maybe BatchAddFacetToObject
$sel:updateObjectAttributes:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchUpdateObjectAttributes
$sel:updateLinkAttributes:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchUpdateLinkAttributes
$sel:removeFacetFromObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchRemoveFacetFromObject
$sel:detachTypedLink:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachTypedLink
$sel:detachPolicy:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachPolicy
$sel:detachObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachObject
$sel:detachFromIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDetachFromIndex
$sel:deleteObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchDeleteObject
$sel:createObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchCreateObject
$sel:createIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchCreateIndex
$sel:attachTypedLink:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachTypedLink
$sel:attachToIndex:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachToIndex
$sel:attachPolicy:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachPolicy
$sel:attachObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAttachObject
$sel:addFacetToObject:BatchWriteOperation' :: BatchWriteOperation -> Maybe BatchAddFacetToObject
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AddFacetToObject" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchAddFacetToObject
addFacetToObject,
            (Key
"AttachObject" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchAttachObject
attachObject,
            (Key
"AttachPolicy" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchAttachPolicy
attachPolicy,
            (Key
"AttachToIndex" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchAttachToIndex
attachToIndex,
            (Key
"AttachTypedLink" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchAttachTypedLink
attachTypedLink,
            (Key
"CreateIndex" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchCreateIndex
createIndex,
            (Key
"CreateObject" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchCreateObject
createObject,
            (Key
"DeleteObject" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchDeleteObject
deleteObject,
            (Key
"DetachFromIndex" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchDetachFromIndex
detachFromIndex,
            (Key
"DetachObject" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchDetachObject
detachObject,
            (Key
"DetachPolicy" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchDetachPolicy
detachPolicy,
            (Key
"DetachTypedLink" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchDetachTypedLink
detachTypedLink,
            (Key
"RemoveFacetFromObject" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchRemoveFacetFromObject
removeFacetFromObject,
            (Key
"UpdateLinkAttributes" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchUpdateLinkAttributes
updateLinkAttributes,
            (Key
"UpdateObjectAttributes" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchUpdateObjectAttributes
updateObjectAttributes
          ]
      )